stream-chat-angular 6.4.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/README.md +12 -18
  2. package/assets/version.d.ts +1 -1
  3. package/{esm2020 → esm2022}/assets/version.mjs +2 -2
  4. package/{esm2020 → esm2022}/lib/attachment-configuration.service.mjs +4 -4
  5. package/esm2022/lib/attachment-list/attachment-list.component.mjs +232 -0
  6. package/esm2022/lib/attachment-preview-list/attachment-preview-list.component.mjs +55 -0
  7. package/{esm2020 → esm2022}/lib/attachment.service.mjs +5 -5
  8. package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +5 -5
  9. package/{esm2020 → esm2022}/lib/avatar-placeholder/avatar-placeholder.component.mjs +6 -6
  10. package/esm2022/lib/channel/channel.component.mjs +45 -0
  11. package/{esm2020 → esm2022}/lib/channel-header/channel-header.component.mjs +6 -6
  12. package/esm2022/lib/channel-list/channel-list.component.mjs +47 -0
  13. package/{esm2020 → esm2022}/lib/channel-preview/channel-preview.component.mjs +6 -6
  14. package/esm2022/lib/channel.service.mjs +1575 -0
  15. package/{esm2020 → esm2022}/lib/chat-client.service.mjs +5 -5
  16. package/{esm2020 → esm2022}/lib/custom-templates.service.mjs +5 -5
  17. package/{esm2020 → esm2022}/lib/date-parser.service.mjs +5 -5
  18. package/{esm2020 → esm2022}/lib/icon/icon-placeholder/icon-placeholder.component.mjs +6 -6
  19. package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
  20. package/{esm2020 → esm2022}/lib/icon/icon.module.mjs +11 -11
  21. package/{esm2020 → esm2022}/lib/icon/loading-indicator/loading-indicator.component.mjs +5 -5
  22. package/{esm2020 → esm2022}/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +6 -6
  23. package/esm2022/lib/message/message.component.mjs +501 -0
  24. package/{esm2020 → esm2022}/lib/message-actions-box/message-actions-box.component.mjs +6 -6
  25. package/{esm2020 → esm2022}/lib/message-actions.service.mjs +5 -5
  26. package/{esm2020 → esm2022}/lib/message-blocked/message-blocked.component.mjs +4 -4
  27. package/{esm2020 → esm2022}/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +6 -6
  28. package/{esm2020 → esm2022}/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +6 -6
  29. package/{esm2020 → esm2022}/lib/message-input/emoji-input.service.mjs +5 -5
  30. package/{esm2020 → esm2022}/lib/message-input/message-input-config.service.mjs +5 -5
  31. package/{esm2020 → esm2022}/lib/message-input/message-input.component.mjs +7 -7
  32. package/{esm2020 → esm2022}/lib/message-input/textarea/textarea.component.mjs +5 -5
  33. package/{esm2020 → esm2022}/lib/message-input/textarea.directive.mjs +5 -5
  34. package/{esm2020 → esm2022}/lib/message-input/voice-recorder.service.mjs +5 -5
  35. package/esm2022/lib/message-list/message-list.component.mjs +717 -0
  36. package/{esm2020 → esm2022}/lib/message-reactions/message-reactions.component.mjs +6 -6
  37. package/{esm2020 → esm2022}/lib/message-reactions-selector/message-reactions-selector.component.mjs +5 -5
  38. package/{esm2020 → esm2022}/lib/message-reactions.service.mjs +5 -5
  39. package/{esm2020 → esm2022}/lib/message-text/message-text.component.mjs +6 -6
  40. package/{esm2020 → esm2022}/lib/message.service.mjs +5 -5
  41. package/{esm2020 → esm2022}/lib/modal/modal.component.mjs +6 -6
  42. package/{esm2020 → esm2022}/lib/modal/stream-modal.module.mjs +5 -5
  43. package/{esm2020 → esm2022}/lib/notification/notification.component.mjs +6 -6
  44. package/{esm2020 → esm2022}/lib/notification-list/notification-list.component.mjs +6 -6
  45. package/{esm2020 → esm2022}/lib/notification-list/stream-notification.module.mjs +5 -5
  46. package/{esm2020 → esm2022}/lib/notification.service.mjs +5 -5
  47. package/{esm2020 → esm2022}/lib/paginated-list/paginated-list.component.mjs +6 -6
  48. package/{esm2020 → esm2022}/lib/paginated-list/stream-paginated-list.module.mjs +5 -5
  49. package/{esm2020 → esm2022}/lib/polls/base-poll.component.mjs +5 -5
  50. package/esm2022/lib/polls/poll/poll.component.mjs +34 -0
  51. package/{esm2020 → esm2022}/lib/polls/poll-actions/add-option/add-option.component.mjs +4 -4
  52. package/{esm2020 → esm2022}/lib/polls/poll-actions/poll-actions.component.mjs +6 -6
  53. package/esm2022/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.mjs +82 -0
  54. package/esm2022/lib/polls/poll-actions/poll-results/poll-results-list/poll-results-list.component.mjs +63 -0
  55. package/{esm2020 → esm2022}/lib/polls/poll-actions/poll-results/poll-vote/poll-vote.component.mjs +6 -6
  56. package/{esm2020 → esm2022}/lib/polls/poll-actions/poll-results/poll-vote-results-list/poll-vote-results-list.component.mjs +5 -5
  57. package/{esm2020 → esm2022}/lib/polls/poll-actions/upsert-answer/upsert-answer.component.mjs +4 -4
  58. package/esm2022/lib/polls/poll-composer/poll-composer.component.mjs +134 -0
  59. package/{esm2020 → esm2022}/lib/polls/poll-header/poll-header.component.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/polls/poll-option-selector/poll-option-selector.component.mjs +5 -5
  61. package/{esm2020 → esm2022}/lib/polls/poll-options-list/poll-options-list.component.mjs +5 -5
  62. package/{esm2020 → esm2022}/lib/polls/poll-preview/poll-preview.component.mjs +4 -4
  63. package/{esm2020 → esm2022}/lib/polls/stream-polls.module.mjs +41 -41
  64. package/esm2022/lib/stream-autocomplete-textarea.module.mjs +33 -0
  65. package/{esm2020 → esm2022}/lib/stream-avatar.module.mjs +5 -5
  66. package/{esm2020 → esm2022}/lib/stream-chat.module.mjs +67 -67
  67. package/esm2022/lib/stream-i18n.service.mjs +34 -0
  68. package/esm2022/lib/stream-textarea.module.mjs +31 -0
  69. package/{esm2020 → esm2022}/lib/theme.service.mjs +5 -5
  70. package/{esm2020 → esm2022}/lib/thread/thread.component.mjs +6 -6
  71. package/{esm2020 → esm2022}/lib/transliteration.service.mjs +5 -5
  72. package/{esm2020 → esm2022}/lib/types.mjs +1 -1
  73. package/{esm2020 → esm2022}/lib/user-list/user-list.component.mjs +5 -5
  74. package/{esm2020 → esm2022}/lib/voice-recorder/amplitude-recorder.service.mjs +5 -5
  75. package/{esm2020 → esm2022}/lib/voice-recorder/audio-recorder.service.mjs +5 -5
  76. package/{esm2020 → esm2022}/lib/voice-recorder/transcoder.service.mjs +5 -5
  77. package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +5 -5
  78. package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder.component.mjs +6 -6
  79. package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder.module.mjs +9 -9
  80. package/{esm2020 → esm2022}/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +5 -5
  81. package/{esm2020 → esm2022}/lib/voice-recording/voice-recording.component.mjs +6 -6
  82. package/{esm2020 → esm2022}/lib/voice-recording/voice-recording.module.mjs +5 -5
  83. package/{fesm2020 → fesm2022}/stream-chat-angular.mjs +463 -470
  84. package/fesm2022/stream-chat-angular.mjs.map +1 -0
  85. package/lib/attachment-list/attachment-list.component.d.ts +1 -1
  86. package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +1 -1
  87. package/lib/avatar/avatar.component.d.ts +1 -1
  88. package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +1 -1
  89. package/lib/channel-preview/channel-preview.component.d.ts +1 -1
  90. package/lib/chat-client.service.d.ts +1 -1
  91. package/lib/custom-templates.service.d.ts +1 -0
  92. package/lib/icon/icon-placeholder/icon-placeholder.component.d.ts +1 -1
  93. package/lib/icon/icon.component.d.ts +2 -2
  94. package/lib/message/message.component.d.ts +1 -1
  95. package/lib/message-actions-box/message-actions-box.component.d.ts +1 -1
  96. package/lib/message-blocked/message-blocked.component.d.ts +1 -1
  97. package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +1 -1
  98. package/lib/message-input/message-input.component.d.ts +1 -1
  99. package/lib/message-input/textarea/textarea.component.d.ts +1 -1
  100. package/lib/message-input/textarea.directive.d.ts +1 -1
  101. package/lib/message-list/group-styles.d.ts +1 -1
  102. package/lib/message-list/message-list.component.d.ts +1 -1
  103. package/lib/message-reactions/message-reactions.component.d.ts +1 -1
  104. package/lib/message-reactions-selector/message-reactions-selector.component.d.ts +1 -1
  105. package/lib/message-text/message-text.component.d.ts +2 -2
  106. package/lib/modal/modal.component.d.ts +1 -1
  107. package/lib/notification/notification.component.d.ts +1 -1
  108. package/lib/paginated-list/paginated-list.component.d.ts +5 -2
  109. package/lib/polls/base-poll.component.d.ts +1 -1
  110. package/lib/polls/poll-actions/add-option/add-option.component.d.ts +1 -1
  111. package/lib/polls/poll-actions/poll-actions.component.d.ts +2 -2
  112. package/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.d.ts +1 -1
  113. package/lib/polls/poll-actions/poll-results/poll-vote/poll-vote.component.d.ts +1 -1
  114. package/lib/polls/poll-actions/poll-results/poll-vote-results-list/poll-vote-results-list.component.d.ts +1 -1
  115. package/lib/polls/poll-actions/upsert-answer/upsert-answer.component.d.ts +1 -1
  116. package/lib/polls/poll-composer/poll-composer.component.d.ts +2 -2
  117. package/lib/polls/poll-header/poll-header.component.d.ts +1 -1
  118. package/lib/polls/poll-option-selector/poll-option-selector.component.d.ts +1 -1
  119. package/lib/polls/poll-options-list/poll-options-list.component.d.ts +1 -1
  120. package/lib/types.d.ts +79 -79
  121. package/lib/user-list/user-list.component.d.ts +1 -1
  122. package/lib/voice-recorder/amplitude-recorder.service.d.ts +2 -2
  123. package/lib/voice-recorder/media-recorder.d.ts +2 -2
  124. package/lib/voice-recorder/transcoder.service.d.ts +4 -4
  125. package/lib/voice-recorder/voice-recorder.component.d.ts +1 -1
  126. package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +1 -1
  127. package/lib/voice-recording/voice-recording.component.d.ts +1 -1
  128. package/package.json +11 -17
  129. package/src/assets/version.ts +1 -1
  130. package/esm2020/lib/attachment-list/attachment-list.component.mjs +0 -232
  131. package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +0 -55
  132. package/esm2020/lib/channel/channel.component.mjs +0 -45
  133. package/esm2020/lib/channel-list/channel-list.component.mjs +0 -47
  134. package/esm2020/lib/channel.service.mjs +0 -1575
  135. package/esm2020/lib/message/message.component.mjs +0 -501
  136. package/esm2020/lib/message-list/message-list.component.mjs +0 -717
  137. package/esm2020/lib/polls/poll/poll.component.mjs +0 -34
  138. package/esm2020/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.mjs +0 -82
  139. package/esm2020/lib/polls/poll-actions/poll-results/poll-results-list/poll-results-list.component.mjs +0 -63
  140. package/esm2020/lib/polls/poll-composer/poll-composer.component.mjs +0 -134
  141. package/esm2020/lib/stream-autocomplete-textarea.module.mjs +0 -33
  142. package/esm2020/lib/stream-i18n.service.mjs +0 -41
  143. package/esm2020/lib/stream-textarea.module.mjs +0 -31
  144. package/fesm2015/stream-chat-angular.mjs +0 -10596
  145. package/fesm2015/stream-chat-angular.mjs.map +0 -1
  146. package/fesm2020/stream-chat-angular.mjs.map +0 -1
  147. /package/{esm2020 → esm2022}/assets/i18n/en.mjs +0 -0
  148. /package/{esm2020 → esm2022}/lib/channel-query.mjs +0 -0
  149. /package/{esm2020 → esm2022}/lib/file-utils.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/format-duration.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/get-channel-display-text.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/get-message-translation.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/injection-tokens.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/is-image-attachment.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/is-on-separate-date.mjs +0 -0
  156. /package/{esm2020 → esm2022}/lib/is-safari.mjs +0 -0
  157. /package/{esm2020 → esm2022}/lib/list-users.mjs +0 -0
  158. /package/{esm2020 → esm2022}/lib/message-input/textarea.interface.mjs +0 -0
  159. /package/{esm2020 → esm2022}/lib/message-list/group-styles.mjs +0 -0
  160. /package/{esm2020 → esm2022}/lib/message-preview.mjs +0 -0
  161. /package/{esm2020 → esm2022}/lib/parse-date.mjs +0 -0
  162. /package/{esm2020 → esm2022}/lib/polls/poll-composer/validators.mjs +0 -0
  163. /package/{esm2020 → esm2022}/lib/polls/unique.validator.mjs +0 -0
  164. /package/{esm2020 → esm2022}/lib/read-by.mjs +0 -0
  165. /package/{esm2020 → esm2022}/lib/types-custom.mjs +0 -0
  166. /package/{esm2020 → esm2022}/lib/virtualized-list.service.mjs +0 -0
  167. /package/{esm2020 → esm2022}/lib/virtualized-message-list.service.mjs +0 -0
  168. /package/{esm2020 → esm2022}/lib/voice-recorder/media-recorder.mjs +0 -0
  169. /package/{esm2020 → esm2022}/lib/voice-recorder/mp3-transcoder.mjs +0 -0
  170. /package/{esm2020 → esm2022}/lib/wave-form-sampler.mjs +0 -0
  171. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  172. /package/{esm2020 → esm2022}/stream-chat-angular.mjs +0 -0
  173. /package/{esm2020 → esm2022}/stream-chat.mjs +0 -0
@@ -105,13 +105,13 @@ export class PollActionsComponent extends BasePollComponent {
105
105
  content: this[this.selectedAction],
106
106
  };
107
107
  }
108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollActionsComponent, deps: [{ token: i1.CustomTemplatesService }, { token: i2.ChatClientService }, { token: i0.ChangeDetectorRef }, { token: i3.ChannelService }, { token: i4.NotificationService }, { token: i5.MessageActionsService }], target: i0.ɵɵFactoryTarget.Component }); }
109
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PollActionsComponent, selector: "stream-poll-actions", inputs: { maxOptionsDisplayed: "maxOptionsDisplayed", maxPollOptions: "maxPollOptions" }, viewQueries: [{ propertyName: "allOptions", first: true, predicate: ["allOptions"], descendants: true }, { propertyName: "suggestOption", first: true, predicate: ["suggestOption"], descendants: true }, { propertyName: "addAnswer", first: true, predicate: ["addAnswer"], descendants: true }, { propertyName: "viewComments", first: true, predicate: ["viewComments"], descendants: true }, { propertyName: "viewResults", first: true, predicate: ["viewResults"], descendants: true }, { propertyName: "endVote", first: true, predicate: ["endVote"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n />\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n />\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\">\n {{ \"streamChat.Poll options\" | translate }}\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n />\n <stream-notification-list />\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n />\n <stream-notification-list />\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n />\n <stream-notification-list />\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n />\n <stream-notification-list />\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list [messageId]=\"messageId\" [pollId]=\"pollId\" />\n <stream-notification-list />\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list />\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { kind: "component", type: i9.NotificationListComponent, selector: "stream-notification-list" }, { kind: "component", type: i10.PollOptionsListComponent, selector: "stream-poll-options-list", inputs: ["maxOptionsDisplayed"] }, { kind: "component", type: i11.PollResultsListComponent, selector: "stream-poll-results-list" }, { kind: "component", type: i12.PollAnswersListComponent, selector: "stream-poll-answers-list", outputs: ["upsertOwnAnswer"] }, { kind: "component", type: i13.UpsertAnswerComponent, selector: "stream-upsert-answer", inputs: ["answer", "closeModal"] }, { kind: "component", type: i14.AddOptionComponent, selector: "stream-add-option", inputs: ["closeModal"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
108
110
  }
109
- PollActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollActionsComponent, deps: [{ token: i1.CustomTemplatesService }, { token: i2.ChatClientService }, { token: i0.ChangeDetectorRef }, { token: i3.ChannelService }, { token: i4.NotificationService }, { token: i5.MessageActionsService }], target: i0.ɵɵFactoryTarget.Component });
110
- PollActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollActionsComponent, selector: "stream-poll-actions", inputs: { maxOptionsDisplayed: "maxOptionsDisplayed", maxPollOptions: "maxPollOptions" }, viewQueries: [{ propertyName: "allOptions", first: true, predicate: ["allOptions"], descendants: true }, { propertyName: "suggestOption", first: true, predicate: ["suggestOption"], descendants: true }, { propertyName: "addAnswer", first: true, predicate: ["addAnswer"], descendants: true }, { propertyName: "viewComments", first: true, predicate: ["viewComments"], descendants: true }, { propertyName: "viewResults", first: true, predicate: ["viewResults"], descendants: true }, { propertyName: "endVote", first: true, predicate: ["endVote"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\">\n {{ \"streamChat.Poll options\" | translate }}\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n ></stream-poll-options-list>\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n ></stream-add-option>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n ></stream-upsert-answer>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n ></stream-poll-answers-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-results-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { kind: "component", type: i9.NotificationListComponent, selector: "stream-notification-list" }, { kind: "component", type: i10.PollOptionsListComponent, selector: "stream-poll-options-list", inputs: ["maxOptionsDisplayed"] }, { kind: "component", type: i11.PollResultsListComponent, selector: "stream-poll-results-list" }, { kind: "component", type: i12.PollAnswersListComponent, selector: "stream-poll-answers-list", outputs: ["upsertOwnAnswer"] }, { kind: "component", type: i13.UpsertAnswerComponent, selector: "stream-upsert-answer", inputs: ["answer", "closeModal"] }, { kind: "component", type: i14.AddOptionComponent, selector: "stream-add-option", inputs: ["closeModal"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollActionsComponent, decorators: [{
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollActionsComponent, decorators: [{
112
112
  type: Component,
113
- args: [{ selector: 'stream-poll-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\">\n {{ \"streamChat.Poll options\" | translate }}\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n ></stream-poll-options-list>\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n ></stream-add-option>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n ></stream-upsert-answer>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n ></stream-poll-answers-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-results-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
114
- }], ctorParameters: function () { return [{ type: i1.CustomTemplatesService }, { type: i2.ChatClientService }, { type: i0.ChangeDetectorRef }, { type: i3.ChannelService }, { type: i4.NotificationService }, { type: i5.MessageActionsService }]; }, propDecorators: { maxOptionsDisplayed: [{
113
+ args: [{ selector: 'stream-poll-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n />\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n />\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\">\n {{ \"streamChat.Poll options\" | translate }}\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n />\n <stream-notification-list />\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n />\n <stream-notification-list />\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n />\n <stream-notification-list />\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n />\n <stream-notification-list />\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list [messageId]=\"messageId\" [pollId]=\"pollId\" />\n <stream-notification-list />\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list />\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
114
+ }], ctorParameters: () => [{ type: i1.CustomTemplatesService }, { type: i2.ChatClientService }, { type: i0.ChangeDetectorRef }, { type: i3.ChannelService }, { type: i4.NotificationService }, { type: i5.MessageActionsService }], propDecorators: { maxOptionsDisplayed: [{
115
115
  type: Input
116
116
  }], maxPollOptions: [{
117
117
  type: Input
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
134
134
  type: ViewChild,
135
135
  args: ['endVote']
136
136
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQjNEOztHQUVHO0FBT0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGlCQUFpQjtJQTBCekQsWUFDRSxzQkFBOEMsRUFDOUMsaUJBQW9DLEVBQ3BDLEtBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLG1CQUF3QyxFQUNoQyxjQUFxQztRQUU3QyxLQUFLLENBQ0gsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBUk0sbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBL0IvQzs7V0FFRztRQUNNLHdCQUFtQixHQUF1QixFQUFFLENBQUM7UUFDdEQ7O1dBRUc7UUFDTSxtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQUM5QixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixtQkFBYyxHQUF1QixTQUFTLENBQUM7UUFDL0MsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUEwRHBCLGdCQUFXLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNoRTtRQUNILENBQUMsQ0FBQztRQUVGLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUM7SUFsREYsQ0FBQztJQUVTLGtCQUFrQixDQUMxQixJQUFVLEVBQ1YsWUFBd0I7UUFFeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FDbEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLDRCQUE0QixFQUFFLEtBQUssQ0FBQyw0QkFBNEI7WUFDaEUsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNqQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMzQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7U0FDakQsQ0FBQyxFQUNGLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztZQUN6QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixJQUFJLEtBQUssQ0FBQztZQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztZQUM5QyxZQUFZLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQ0YsQ0FBQztRQUVGLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFtQkQsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0MsK0JBQStCLENBQ2hDLENBQUM7WUFDRixNQUFNLEtBQUssQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3hCLG1CQUFtQixFQUFFLENBQUMsTUFBZSxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQyxDQUFDO2lCQUN4QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQztZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQzs7aUhBdEhVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGl1QkNsQ2pDLHNsS0EySkE7MkZEekhhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTtnUkFNdEMsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBV21CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0YsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDQyxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VQb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1wb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb2xsLCBQb2xsQW5zd2VyLCBQb2xsT3B0aW9uIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcblxudHlwZSBBY3Rpb24gPVxuICB8ICdhbGxPcHRpb25zJ1xuICB8ICdzdWdnZXN0T3B0aW9uJ1xuICB8ICdhZGRBbnN3ZXInXG4gIHwgJ3ZpZXdDb21tZW50cydcbiAgfCAndmlld1Jlc3VsdHMnXG4gIHwgJ2VuZFZvdGUnO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1wb2xsLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxBY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnQge1xuICAvKipcbiAgICogSWYgdGhlcmUgYXJlIG1vcmUgb3B0aW9ucyB0aGFuIHRoaXMgbnVtYmVyLCB0aGUgXCJTZWUgYWxsIG9wdGlvbnNcIiBidXR0b24gd2lsbCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIG1heE9wdGlvbnNEaXNwbGF5ZWQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDEwO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIG9wdGlvbnMgYWxsb3dlZCBmb3IgdGhlIHBvbGwsIHRoaXMgaXMgZGVmaW5lZCBieSBTdHJlYW0gQVBJXG4gICAqL1xuICBASW5wdXQoKSBtYXhQb2xsT3B0aW9ucyA9IDEwMDtcbiAgbmFtZSA9ICcnO1xuICBvcHRpb25zOiBQb2xsT3B0aW9uW10gPSBbXTtcbiAgaXNDbG9zZWQgPSBmYWxzZTtcbiAgYWxsb3dVc2VyU3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgYWxsb3dBbnN3ZXJzID0gZmFsc2U7XG4gIGFuc3dlckNvdW50ID0gMDtcbiAgaXNPd25Qb2xsID0gZmFsc2U7XG4gIG93bkFud2VyOiBQb2xsQW5zd2VyIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RlZEFjdGlvbjogQWN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhbGxPcHRpb25zJykgYWxsT3B0aW9ucyE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdzdWdnZXN0T3B0aW9uJykgc3VnZ2VzdE9wdGlvbiE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdhZGRBbnN3ZXInKSBhZGRBbnN3ZXIhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgndmlld0NvbW1lbnRzJykgdmlld0NvbW1lbnRzITogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBWaWV3Q2hpbGQoJ3ZpZXdSZXN1bHRzJykgdmlld1Jlc3VsdHMhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgnZW5kVm90ZScpIGVuZFZvdGUhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZUFjdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgY3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICAgIGNoYXRDbGllbnRTZXJ2aWNlLFxuICAgICAgY2RSZWYsXG4gICAgICBjaGFubmVsU2VydmljZSxcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiAoe1xuICAgICAgICBvcHRpb25zOiBzdGF0ZS5vcHRpb25zLFxuICAgICAgICBpc19jbG9zZWQ6IHN0YXRlLmlzX2Nsb3NlZCxcbiAgICAgICAgYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9uczogc3RhdGUuYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9ucyxcbiAgICAgICAgYWxsb3dfYW5zd2Vyczogc3RhdGUuYWxsb3dfYW5zd2VycyxcbiAgICAgICAgYW5zd2VyX2NvdW50OiBzdGF0ZS5hbnN3ZXJzX2NvdW50LFxuICAgICAgICBjcmVhdGVkX2J5OiBzdGF0ZS5jcmVhdGVkX2J5LFxuICAgICAgICBuYW1lOiBzdGF0ZS5uYW1lLFxuICAgICAgICBvd25fYW5zd2VyOiBzdGF0ZS5vd25BbnN3ZXIsXG4gICAgICAgIG1heF92b3Rlc19hbGxvd2VkOiBzdGF0ZS5tYXhfdm90ZXNfYWxsb3dlZCxcbiAgICAgICAgb3duX3ZvdGVzX2J5X29wdGlvbl9pZDogc3RhdGUub3duVm90ZXNCeU9wdGlvbklkLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gc3RhdGUub3B0aW9ucztcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9IHN0YXRlLmlzX2Nsb3NlZCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbGxvd1VzZXJTdWdnZXN0aW9ucyA9IHN0YXRlLmFsbG93X3VzZXJfc3VnZ2VzdGVkX29wdGlvbnMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuYWxsb3dBbnN3ZXJzID0gc3RhdGUuYWxsb3dfYW5zd2VycyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbnN3ZXJDb3VudCA9IHN0YXRlLmFuc3dlcl9jb3VudCA/PyAwO1xuICAgICAgICB0aGlzLmlzT3duUG9sbCA9IHN0YXRlLmNyZWF0ZWRfYnk/LmlkID09PSB0aGlzLmN1cnJlbnRVc2VyPy5pZDtcbiAgICAgICAgdGhpcy5uYW1lID0gc3RhdGUubmFtZTtcbiAgICAgICAgdGhpcy5vd25BbndlciA9IHN0YXRlLm93bl9hbnN3ZXIgPz8gdW5kZWZpbmVkO1xuICAgICAgICBtYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc3Vic2NyaWJlO1xuICB9XG5cbiAgbW9kYWxPcGVuZWQgPSAoYWN0aW9uOiBBY3Rpb24pID0+IHtcbiAgICB0aGlzLnNlbGVjdGVkQWN0aW9uID0gYWN0aW9uO1xuICAgIGlmICghdGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLm1vZGFsT3BlbmVkRm9yTWVzc2FnZS5uZXh0KHRoaXMubWVzc2FnZUlkKTtcbiAgICB9XG4gIH07XG5cbiAgbW9kYWxDbG9zZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5tb2RhbE9wZW5lZEZvck1lc3NhZ2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH07XG5cbiAgYXN5bmMgY2xvc2VQb2xsKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnBvbGw/LmNsb3NlKCk7XG4gICAgICB0aGlzLm1vZGFsQ2xvc2VkKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5GYWlsZWQgdG8gZW5kIHZvdGUnXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kYWxDb250ZXh0KCk6IE1vZGFsQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzT3BlbjogdGhpcy5pc01vZGFsT3BlbixcbiAgICAgIGlzT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgIHRoaXMubW9kYWxPcGVuZWQodGhpcy5zZWxlY3RlZEFjdGlvbiEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9kYWxDbG9zZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHRoaXNbdGhpcy5zZWxlY3RlZEFjdGlvbiFdLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25zXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIm1heE9wdGlvbnNEaXNwbGF5ZWQgJiYgb3B0aW9ucy5sZW5ndGggPiBtYXhPcHRpb25zRGlzcGxheWVkXCJcbiAgPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2FsbE9wdGlvbnMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlNlZSBhbGwgb3B0aW9ucyAoe3tjb3VudH19KVwiIHwgdHJhbnNsYXRlOntjb3VudDpcbiAgICAgIG9wdGlvbnMubGVuZ3RofSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBhbGxvd1VzZXJTdWdnZXN0aW9ucyAmJlxuICAgICAgY2FuVm90ZSAmJlxuICAgICAgIWlzQ2xvc2VkICYmXG4gICAgICBvcHRpb25zLmxlbmd0aCA8IG1heFBvbGxPcHRpb25zXG4gICAgXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnc3VnZ2VzdE9wdGlvbicpXCJcbiAgICA+XG4gICAgICB7eyBcInN0cmVhbUNoYXQuU3VnZ2VzdCBhbiBvcHRpb25cIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QW5zd2VycyAmJiBjYW5Wb3RlICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm1vZGFsT3BlbmVkKCdhZGRBbnN3ZXInKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm93bkFud2VyOyBlbHNlIG5ld0Fuc3dlclwiPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuVXBkYXRlIHlvdXIgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbmV3QW5zd2VyPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuQWRkIGEgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFuc3dlckNvdW50ID4gMCAmJiBjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld0NvbW1lbnRzJylcIj5cbiAgICAgIHt7IChhbnN3ZXJDb3VudCA9PT0gMSA/IFwic3RyZWFtQ2hhdC5WaWV3IHt7IGNvdW50IH19IGNvbW1lbnRcIiA6XG4gICAgICBcInN0cmVhbUNoYXQuVmlldyB7eyBjb3VudCB9fSBjb21tZW50c1wiKSB8IHRyYW5zbGF0ZTp7Y291bnQ6IGFuc3dlckNvdW50fVxuICAgICAgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld1Jlc3VsdHMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlZpZXcgcmVzdWx0c1wiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPd25Qb2xsICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2VuZFZvdGUnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQWN0aW9uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubW9kYWxUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdE1vZGFsO1xuICAgICAgY29udGV4dDogZ2V0TW9kYWxDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0TW9kYWxcbiAgbGV0LWlzT3Blbj1cImlzT3BlblwiXG4gIGxldC1pc09wZW5DaGFuZ2VIYW5kbGVyPVwiaXNPcGVuQ2hhbmdlSGFuZGxlclwiXG4gIGxldC1jb250ZW50PVwiY29udGVudFwiXG4+XG4gIDxzdHJlYW0tbW9kYWxcbiAgICBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvbnMgc3RyLWNoYXQtYW5ndWxhcl9fcG9sbC1hY3Rpb25zXCJcbiAgICBbaXNPcGVuXT1cImlzT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiY29udGVudFwiXG4gICAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICA+XG4gIDwvc3RyZWFtLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhbGxPcHRpb25zPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0IHN0ci1jaGF0LWFuZ3VsYXJfX3BvbGwtYWN0aW9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwtaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlcl9fdGl0bGVcIj5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LlBvbGwgb3B0aW9uc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0X19ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0X190aXRsZVwiPnt7IG5hbWUgfX08L2Rpdj5cbiAgICAgIDxzdHJlYW0tcG9sbC1vcHRpb25zLWxpc3RcbiAgICAgICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICAgIFttYXhPcHRpb25zRGlzcGxheWVkXT1cInVuZGVmaW5lZFwiXG4gICAgICA+PC9zdHJlYW0tcG9sbC1vcHRpb25zLWxpc3Q+XG4gICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3N1Z2dlc3RPcHRpb24+XG4gIDxzdHJlYW0tYWRkLW9wdGlvblxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgW2Nsb3NlTW9kYWxdPVwibW9kYWxDbG9zZWRcIlxuICA+PC9zdHJlYW0tYWRkLW9wdGlvbj5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FkZEFuc3dlcj5cbiAgPHN0cmVhbS11cHNlcnQtYW5zd2VyXG4gICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICBbYW5zd2VyXT1cIm93bkFud2VyXCJcbiAgICBbY2xvc2VNb2RhbF09XCJtb2RhbENsb3NlZFwiXG4gID48L3N0cmVhbS11cHNlcnQtYW5zd2VyPlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdmlld0NvbW1lbnRzPlxuICA8c3RyZWFtLXBvbGwtYW5zd2Vycy1saXN0XG4gICAgKHVwc2VydE93bkFuc3dlcik9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gID48L3N0cmVhbS1wb2xsLWFuc3dlcnMtbGlzdD5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3ZpZXdSZXN1bHRzPlxuICA8c3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0XG4gICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgPjwvc3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0PlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW5kVm90ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZyBzdHItY2hhdF9fZGlhbG9nLS1wcm9tcHQgc3RyLWNoYXRfX21vZGFsX19lbmQtdm90ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX3RpdGxlXCIgdHJhbnNsYXRlPnN0cmVhbUNoYXQuRW5kIHZvdGU8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19wcm9tcHRcIiB0cmFuc2xhdGU+XG4gICAgICAgIHN0cmVhbUNoYXQuQWZ0ZXIgYSBwb2xsIGlzIGNsb3NlZCwgbm8gbW9yZSB2b3RlcyBjYW4gYmUgY2FzdFxuICAgICAgPC9kaXY+XG4gICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vZGFsQ2xvc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkNhbmNlbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlUG9sbCgpXCI+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQjNEOztHQUVHO0FBT0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGlCQUFpQjtJQTBCekQsWUFDRSxzQkFBOEMsRUFDOUMsaUJBQW9DLEVBQ3BDLEtBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLG1CQUF3QyxFQUNoQyxjQUFxQztRQUU3QyxLQUFLLENBQ0gsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBUk0sbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBL0IvQzs7V0FFRztRQUNNLHdCQUFtQixHQUF1QixFQUFFLENBQUM7UUFDdEQ7O1dBRUc7UUFDTSxtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQUM5QixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixtQkFBYyxHQUF1QixTQUFTLENBQUM7UUFDL0MsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUEwRHBCLGdCQUFXLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNoRTtRQUNILENBQUMsQ0FBQztRQUVGLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUM7SUFsREYsQ0FBQztJQUVTLGtCQUFrQixDQUMxQixJQUFVLEVBQ1YsWUFBd0I7UUFFeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FDbEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLDRCQUE0QixFQUFFLEtBQUssQ0FBQyw0QkFBNEI7WUFDaEUsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNqQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMzQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7U0FDakQsQ0FBQyxFQUNGLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztZQUN6QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixJQUFJLEtBQUssQ0FBQztZQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztZQUM5QyxZQUFZLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQ0YsQ0FBQztRQUVGLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFtQkQsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0MsK0JBQStCLENBQ2hDLENBQUM7WUFDRixNQUFNLEtBQUssQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3hCLG1CQUFtQixFQUFFLENBQUMsTUFBZSxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQyxDQUFDO2lCQUN4QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQztZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQzsrR0F0SFUsb0JBQW9CO21HQUFwQixvQkFBb0IsaXVCQ2xDakMsNHhKQXVKQTs7NEZEckhhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTs4UEFNdEMsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBV21CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0YsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDQyxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VQb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1wb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb2xsLCBQb2xsQW5zd2VyLCBQb2xsT3B0aW9uIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcblxudHlwZSBBY3Rpb24gPVxuICB8ICdhbGxPcHRpb25zJ1xuICB8ICdzdWdnZXN0T3B0aW9uJ1xuICB8ICdhZGRBbnN3ZXInXG4gIHwgJ3ZpZXdDb21tZW50cydcbiAgfCAndmlld1Jlc3VsdHMnXG4gIHwgJ2VuZFZvdGUnO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1wb2xsLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxBY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnQge1xuICAvKipcbiAgICogSWYgdGhlcmUgYXJlIG1vcmUgb3B0aW9ucyB0aGFuIHRoaXMgbnVtYmVyLCB0aGUgXCJTZWUgYWxsIG9wdGlvbnNcIiBidXR0b24gd2lsbCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIG1heE9wdGlvbnNEaXNwbGF5ZWQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDEwO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIG9wdGlvbnMgYWxsb3dlZCBmb3IgdGhlIHBvbGwsIHRoaXMgaXMgZGVmaW5lZCBieSBTdHJlYW0gQVBJXG4gICAqL1xuICBASW5wdXQoKSBtYXhQb2xsT3B0aW9ucyA9IDEwMDtcbiAgbmFtZSA9ICcnO1xuICBvcHRpb25zOiBQb2xsT3B0aW9uW10gPSBbXTtcbiAgaXNDbG9zZWQgPSBmYWxzZTtcbiAgYWxsb3dVc2VyU3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgYWxsb3dBbnN3ZXJzID0gZmFsc2U7XG4gIGFuc3dlckNvdW50ID0gMDtcbiAgaXNPd25Qb2xsID0gZmFsc2U7XG4gIG93bkFud2VyOiBQb2xsQW5zd2VyIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RlZEFjdGlvbjogQWN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhbGxPcHRpb25zJykgYWxsT3B0aW9ucyE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdzdWdnZXN0T3B0aW9uJykgc3VnZ2VzdE9wdGlvbiE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdhZGRBbnN3ZXInKSBhZGRBbnN3ZXIhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgndmlld0NvbW1lbnRzJykgdmlld0NvbW1lbnRzITogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBWaWV3Q2hpbGQoJ3ZpZXdSZXN1bHRzJykgdmlld1Jlc3VsdHMhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgnZW5kVm90ZScpIGVuZFZvdGUhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZUFjdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgY3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICAgIGNoYXRDbGllbnRTZXJ2aWNlLFxuICAgICAgY2RSZWYsXG4gICAgICBjaGFubmVsU2VydmljZSxcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiAoe1xuICAgICAgICBvcHRpb25zOiBzdGF0ZS5vcHRpb25zLFxuICAgICAgICBpc19jbG9zZWQ6IHN0YXRlLmlzX2Nsb3NlZCxcbiAgICAgICAgYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9uczogc3RhdGUuYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9ucyxcbiAgICAgICAgYWxsb3dfYW5zd2Vyczogc3RhdGUuYWxsb3dfYW5zd2VycyxcbiAgICAgICAgYW5zd2VyX2NvdW50OiBzdGF0ZS5hbnN3ZXJzX2NvdW50LFxuICAgICAgICBjcmVhdGVkX2J5OiBzdGF0ZS5jcmVhdGVkX2J5LFxuICAgICAgICBuYW1lOiBzdGF0ZS5uYW1lLFxuICAgICAgICBvd25fYW5zd2VyOiBzdGF0ZS5vd25BbnN3ZXIsXG4gICAgICAgIG1heF92b3Rlc19hbGxvd2VkOiBzdGF0ZS5tYXhfdm90ZXNfYWxsb3dlZCxcbiAgICAgICAgb3duX3ZvdGVzX2J5X29wdGlvbl9pZDogc3RhdGUub3duVm90ZXNCeU9wdGlvbklkLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gc3RhdGUub3B0aW9ucztcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9IHN0YXRlLmlzX2Nsb3NlZCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbGxvd1VzZXJTdWdnZXN0aW9ucyA9IHN0YXRlLmFsbG93X3VzZXJfc3VnZ2VzdGVkX29wdGlvbnMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuYWxsb3dBbnN3ZXJzID0gc3RhdGUuYWxsb3dfYW5zd2VycyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbnN3ZXJDb3VudCA9IHN0YXRlLmFuc3dlcl9jb3VudCA/PyAwO1xuICAgICAgICB0aGlzLmlzT3duUG9sbCA9IHN0YXRlLmNyZWF0ZWRfYnk/LmlkID09PSB0aGlzLmN1cnJlbnRVc2VyPy5pZDtcbiAgICAgICAgdGhpcy5uYW1lID0gc3RhdGUubmFtZTtcbiAgICAgICAgdGhpcy5vd25BbndlciA9IHN0YXRlLm93bl9hbnN3ZXIgPz8gdW5kZWZpbmVkO1xuICAgICAgICBtYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc3Vic2NyaWJlO1xuICB9XG5cbiAgbW9kYWxPcGVuZWQgPSAoYWN0aW9uOiBBY3Rpb24pID0+IHtcbiAgICB0aGlzLnNlbGVjdGVkQWN0aW9uID0gYWN0aW9uO1xuICAgIGlmICghdGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLm1vZGFsT3BlbmVkRm9yTWVzc2FnZS5uZXh0KHRoaXMubWVzc2FnZUlkKTtcbiAgICB9XG4gIH07XG5cbiAgbW9kYWxDbG9zZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5tb2RhbE9wZW5lZEZvck1lc3NhZ2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH07XG5cbiAgYXN5bmMgY2xvc2VQb2xsKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnBvbGw/LmNsb3NlKCk7XG4gICAgICB0aGlzLm1vZGFsQ2xvc2VkKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5GYWlsZWQgdG8gZW5kIHZvdGUnXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kYWxDb250ZXh0KCk6IE1vZGFsQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzT3BlbjogdGhpcy5pc01vZGFsT3BlbixcbiAgICAgIGlzT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgIHRoaXMubW9kYWxPcGVuZWQodGhpcy5zZWxlY3RlZEFjdGlvbiEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9kYWxDbG9zZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHRoaXNbdGhpcy5zZWxlY3RlZEFjdGlvbiFdLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25zXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIm1heE9wdGlvbnNEaXNwbGF5ZWQgJiYgb3B0aW9ucy5sZW5ndGggPiBtYXhPcHRpb25zRGlzcGxheWVkXCJcbiAgPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2FsbE9wdGlvbnMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlNlZSBhbGwgb3B0aW9ucyAoe3tjb3VudH19KVwiIHwgdHJhbnNsYXRlOntjb3VudDpcbiAgICAgIG9wdGlvbnMubGVuZ3RofSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBhbGxvd1VzZXJTdWdnZXN0aW9ucyAmJlxuICAgICAgY2FuVm90ZSAmJlxuICAgICAgIWlzQ2xvc2VkICYmXG4gICAgICBvcHRpb25zLmxlbmd0aCA8IG1heFBvbGxPcHRpb25zXG4gICAgXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnc3VnZ2VzdE9wdGlvbicpXCJcbiAgICA+XG4gICAgICB7eyBcInN0cmVhbUNoYXQuU3VnZ2VzdCBhbiBvcHRpb25cIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QW5zd2VycyAmJiBjYW5Wb3RlICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm1vZGFsT3BlbmVkKCdhZGRBbnN3ZXInKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm93bkFud2VyOyBlbHNlIG5ld0Fuc3dlclwiPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuVXBkYXRlIHlvdXIgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbmV3QW5zd2VyPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuQWRkIGEgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFuc3dlckNvdW50ID4gMCAmJiBjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld0NvbW1lbnRzJylcIj5cbiAgICAgIHt7IChhbnN3ZXJDb3VudCA9PT0gMSA/IFwic3RyZWFtQ2hhdC5WaWV3IHt7IGNvdW50IH19IGNvbW1lbnRcIiA6XG4gICAgICBcInN0cmVhbUNoYXQuVmlldyB7eyBjb3VudCB9fSBjb21tZW50c1wiKSB8IHRyYW5zbGF0ZTp7Y291bnQ6IGFuc3dlckNvdW50fVxuICAgICAgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld1Jlc3VsdHMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlZpZXcgcmVzdWx0c1wiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPd25Qb2xsICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2VuZFZvdGUnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQWN0aW9uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubW9kYWxUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdE1vZGFsO1xuICAgICAgY29udGV4dDogZ2V0TW9kYWxDb250ZXh0KClcbiAgICBcIlxuICAvPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdE1vZGFsXG4gIGxldC1pc09wZW49XCJpc09wZW5cIlxuICBsZXQtaXNPcGVuQ2hhbmdlSGFuZGxlcj1cImlzT3BlbkNoYW5nZUhhbmRsZXJcIlxuICBsZXQtY29udGVudD1cImNvbnRlbnRcIlxuPlxuICA8c3RyZWFtLW1vZGFsXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25zIHN0ci1jaGF0LWFuZ3VsYXJfX3BvbGwtYWN0aW9uc1wiXG4gICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgIFtjb250ZW50XT1cImNvbnRlbnRcIlxuICAgIChpc09wZW5DaGFuZ2UpPVwiaXNPcGVuQ2hhbmdlSGFuZGxlcigkZXZlbnQpXCJcbiAgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWxsT3B0aW9ucz5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9fcG9sbC1vcHRpb24tbGlzdCBzdHItY2hhdC1hbmd1bGFyX19wb2xsLWFjdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbC1oZWFkZXJfX3RpdGxlXCI+XG4gICAgICAgIHt7IFwic3RyZWFtQ2hhdC5Qb2xsIG9wdGlvbnNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9fcG9sbC1vcHRpb24tbGlzdF9fYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9fcG9sbC1vcHRpb24tbGlzdF9fdGl0bGVcIj57eyBuYW1lIH19PC9kaXY+XG4gICAgICA8c3RyZWFtLXBvbGwtb3B0aW9ucy1saXN0XG4gICAgICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICAgICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgICAgICBbbWF4T3B0aW9uc0Rpc3BsYXllZF09XCJ1bmRlZmluZWRcIlxuICAgICAgLz5cbiAgICAgIDxzdHJlYW0tbm90aWZpY2F0aW9uLWxpc3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNzdWdnZXN0T3B0aW9uPlxuICA8c3RyZWFtLWFkZC1vcHRpb25cbiAgICBbcG9sbElkXT1cInBvbGxJZFwiXG4gICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgIFtjbG9zZU1vZGFsXT1cIm1vZGFsQ2xvc2VkXCJcbiAgLz5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdCAvPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYWRkQW5zd2VyPlxuICA8c3RyZWFtLXVwc2VydC1hbnN3ZXJcbiAgICBbcG9sbElkXT1cInBvbGxJZFwiXG4gICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgIFthbnN3ZXJdPVwib3duQW53ZXJcIlxuICAgIFtjbG9zZU1vZGFsXT1cIm1vZGFsQ2xvc2VkXCJcbiAgLz5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdCAvPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdmlld0NvbW1lbnRzPlxuICA8c3RyZWFtLXBvbGwtYW5zd2Vycy1saXN0XG4gICAgKHVwc2VydE93bkFuc3dlcik9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gIC8+XG4gIDxzdHJlYW0tbm90aWZpY2F0aW9uLWxpc3QgLz5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3ZpZXdSZXN1bHRzPlxuICA8c3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0IFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCIgW3BvbGxJZF09XCJwb2xsSWRcIiAvPlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0IC8+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlbmRWb3RlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nIHN0ci1jaGF0X19kaWFsb2ctLXByb21wdCBzdHItY2hhdF9fbW9kYWxfX2VuZC12b3RlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fdGl0bGVcIiB0cmFuc2xhdGU+c3RyZWFtQ2hhdC5FbmQgdm90ZTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX3Byb21wdFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgc3RyZWFtQ2hhdC5BZnRlciBhIHBvbGwgaXMgY2xvc2VkLCBubyBtb3JlIHZvdGVzIGNhbiBiZSBjYXN0XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdHJlYW0tbm90aWZpY2F0aW9uLWxpc3QgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19jb250cm9sc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19jb250cm9scy1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJtb2RhbENsb3NlZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5DYW5jZWxcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZVBvbGwoKVwiPlxuICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5FbmQgdm90ZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,82 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Output, } from '@angular/core';
2
+ import { BasePollComponent } from '../../base-poll.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@ngx-translate/core";
6
+ import * as i3 from "../../../paginated-list/paginated-list.component";
7
+ import * as i4 from "../poll-results/poll-vote/poll-vote.component";
8
+ /**
9
+ *
10
+ */
11
+ export class PollAnswersListComponent extends BasePollComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.class = 'str-chat__modal__poll-answer-list';
15
+ /**
16
+ * The even that's emitted when the update/add comment button is clicked
17
+ */
18
+ this.upsertOwnAnswer = new EventEmitter();
19
+ this.isLoading = false;
20
+ this.answers = [];
21
+ this.isClosed = false;
22
+ }
23
+ ngOnChanges(changes) {
24
+ super.ngOnChanges(changes);
25
+ if (changes['pollId']) {
26
+ void this.queryAnswers();
27
+ }
28
+ }
29
+ async queryAnswers() {
30
+ if (!this.poll) {
31
+ return;
32
+ }
33
+ try {
34
+ this.isLoading = true;
35
+ const response = await this.poll.queryAnswers({
36
+ filter: {},
37
+ sort: { created_at: -1 },
38
+ options: {
39
+ next: this.next,
40
+ },
41
+ });
42
+ this.next = response.next;
43
+ this.answers = [...this.answers, ...response.votes];
44
+ this.markForCheck();
45
+ }
46
+ catch (error) {
47
+ this.notificationService.addTemporaryNotification('streamChat.Error loading answers');
48
+ this.markForCheck();
49
+ throw error;
50
+ }
51
+ finally {
52
+ this.isLoading = false;
53
+ this.markForCheck();
54
+ }
55
+ }
56
+ trackByAnswerId(_, answer) {
57
+ return answer.id;
58
+ }
59
+ stateStoreSelector(poll, markForCheck) {
60
+ const unsubscribe = poll.state.subscribeWithSelector((state) => ({
61
+ is_closed: state.is_closed,
62
+ own_answer: state.ownAnswer,
63
+ }), (state) => {
64
+ this.isClosed = state.is_closed ?? false;
65
+ this.ownAnswer = state.own_answer ?? undefined;
66
+ markForCheck();
67
+ });
68
+ return unsubscribe;
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollAnswersListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PollAnswersListComponent, selector: "stream-poll-answers-list", outputs: { upsertOwnAnswer: "upsertOwnAnswer" }, host: { properties: { "class": "this.class" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"str-chat__modal__poll-answer-list\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll comments\n </div>\n </div>\n <div class=\"str-chat__modal__poll-answer-list__body\">\n <div class=\"str-chat__poll-answer-list\">\n <stream-paginated-list\n class=\"str-chat__poll-answer-list\"\n [items]=\"answers\"\n [hasMore]=\"next !== undefined\"\n [isLoading]=\"isLoading\"\n [trackBy]=\"trackByAnswerId\"\n (loadMore)=\"queryAnswers()\"\n >\n <ng-template let-answer=\"item\">\n <div class=\"str-chat__poll-answer\">\n <p *ngIf=\"answer.answer_text\" class=\"str-chat__poll-answer__text\">\n {{ answer.answer_text }}\n </p>\n <stream-poll-vote [vote]=\"answer\" />\n </div>\n </ng-template>\n </stream-paginated-list>\n <button\n *ngIf=\"!isClosed\"\n class=\"str-chat__poll-action\"\n (click)=\"upsertOwnAnswer.emit()\"\n >\n {{\n (ownAnswer\n ? \"streamChat.Update your comment\"\n : \"streamChat.Add a comment\"\n ) | translate\n }}\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.PaginatedListComponent, selector: "stream-paginated-list", inputs: ["items", "isLoading", "hasMore", "trackBy"], outputs: ["loadMore"] }, { kind: "component", type: i4.PollVoteComponent, selector: "stream-poll-vote", inputs: ["vote"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollAnswersListComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'stream-poll-answers-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__modal__poll-answer-list\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll comments\n </div>\n </div>\n <div class=\"str-chat__modal__poll-answer-list__body\">\n <div class=\"str-chat__poll-answer-list\">\n <stream-paginated-list\n class=\"str-chat__poll-answer-list\"\n [items]=\"answers\"\n [hasMore]=\"next !== undefined\"\n [isLoading]=\"isLoading\"\n [trackBy]=\"trackByAnswerId\"\n (loadMore)=\"queryAnswers()\"\n >\n <ng-template let-answer=\"item\">\n <div class=\"str-chat__poll-answer\">\n <p *ngIf=\"answer.answer_text\" class=\"str-chat__poll-answer__text\">\n {{ answer.answer_text }}\n </p>\n <stream-poll-vote [vote]=\"answer\" />\n </div>\n </ng-template>\n </stream-paginated-list>\n <button\n *ngIf=\"!isClosed\"\n class=\"str-chat__poll-action\"\n (click)=\"upsertOwnAnswer.emit()\"\n >\n {{\n (ownAnswer\n ? \"streamChat.Update your comment\"\n : \"streamChat.Add a comment\"\n ) | translate\n }}\n </button>\n </div>\n </div>\n</div>\n" }]
76
+ }], propDecorators: { class: [{
77
+ type: HostBinding,
78
+ args: ['class']
79
+ }], upsertOwnAnswer: [{
80
+ type: Output
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1hbnN3ZXJzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLWFuc3dlcnMtbGlzdC9wb2xsLWFuc3dlcnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL3BvbGwtYW5zd2Vycy1saXN0L3BvbGwtYW5zd2Vycy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBRVgsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFHOUQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8sd0JBQ1gsU0FBUSxpQkFBaUI7SUFQM0I7O1FBVXdCLFVBQUssR0FBRyxtQ0FBbUMsQ0FBQztRQUNsRTs7V0FFRztRQUNnQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUMzQixhQUFRLEdBQUcsS0FBSyxDQUFDO0tBNkRsQjtJQTFEQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQixLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLE9BQU87U0FDUjtRQUNELElBQUk7WUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUM1QyxNQUFNLEVBQUUsRUFBRTtnQkFDVixJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7aUJBQ2hCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLENBQy9DLGtDQUFrQyxDQUNuQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLE1BQU0sS0FBSyxDQUFDO1NBQ2I7Z0JBQVM7WUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQVMsRUFBRSxNQUFrQjtRQUMzQyxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVTLGtCQUFrQixDQUMxQixJQUFVLEVBQ1YsWUFBd0I7UUFFeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FDbEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzVCLENBQUMsRUFDRixDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztZQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDO1lBQy9DLFlBQVksRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FDRixDQUFDO1FBRUYsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzsrR0F4RVUsd0JBQXdCO21HQUF4Qix3QkFBd0IsOE1DckJyQyxneENBd0NBOzs0RkRuQmEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTTs4QkFNekIsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPO2dCQUlELGVBQWU7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlUG9sbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtcG9sbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9sbCwgUG9sbEFuc3dlciB9IGZyb20gJ3N0cmVhbS1jaGF0JztcblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tcG9sbC1hbnN3ZXJzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9sbC1hbnN3ZXJzLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUG9sbEFuc3dlcnNMaXN0Q29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXNcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3N0ci1jaGF0X19tb2RhbF9fcG9sbC1hbnN3ZXItbGlzdCc7XG4gIC8qKlxuICAgKiBUaGUgZXZlbiB0aGF0J3MgZW1pdHRlZCB3aGVuIHRoZSB1cGRhdGUvYWRkIGNvbW1lbnQgYnV0dG9uIGlzIGNsaWNrZWRcbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSB1cHNlcnRPd25BbnN3ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBuZXh0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBhbnN3ZXJzOiBQb2xsQW5zd2VyW10gPSBbXTtcbiAgaXNDbG9zZWQgPSBmYWxzZTtcbiAgb3duQW5zd2VyOiBQb2xsQW5zd2VyIHwgdW5kZWZpbmVkO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICBpZiAoY2hhbmdlc1sncG9sbElkJ10pIHtcbiAgICAgIHZvaWQgdGhpcy5xdWVyeUFuc3dlcnMoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBxdWVyeUFuc3dlcnMoKSB7XG4gICAgaWYgKCF0aGlzLnBvbGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5wb2xsLnF1ZXJ5QW5zd2Vycyh7XG4gICAgICAgIGZpbHRlcjoge30sXG4gICAgICAgIHNvcnQ6IHsgY3JlYXRlZF9hdDogLTEgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG5leHQ6IHRoaXMubmV4dCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm5leHQgPSByZXNwb25zZS5uZXh0O1xuICAgICAgdGhpcy5hbnN3ZXJzID0gWy4uLnRoaXMuYW5zd2VycywgLi4ucmVzcG9uc2Uudm90ZXNdO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgJ3N0cmVhbUNoYXQuRXJyb3IgbG9hZGluZyBhbnN3ZXJzJ1xuICAgICAgKTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUFuc3dlcklkKF86IG51bWJlciwgYW5zd2VyOiBQb2xsQW5zd2VyKSB7XG4gICAgcmV0dXJuIGFuc3dlci5pZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0ZVN0b3JlU2VsZWN0b3IoXG4gICAgcG9sbDogUG9sbCxcbiAgICBtYXJrRm9yQ2hlY2s6ICgpID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBwb2xsLnN0YXRlLnN1YnNjcmliZVdpdGhTZWxlY3RvcihcbiAgICAgIChzdGF0ZSkgPT4gKHtcbiAgICAgICAgaXNfY2xvc2VkOiBzdGF0ZS5pc19jbG9zZWQsXG4gICAgICAgIG93bl9hbnN3ZXI6IHN0YXRlLm93bkFuc3dlcixcbiAgICAgIH0pLFxuICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWQgPSBzdGF0ZS5pc19jbG9zZWQgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMub3duQW5zd2VyID0gc3RhdGUub3duX2Fuc3dlciA/PyB1bmRlZmluZWQ7XG4gICAgICAgIG1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX3BvbGwtYW5zd2VyLWxpc3RcIj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbC1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlcl9fdGl0bGVcIiB0cmFuc2xhdGU+XG4gICAgICBzdHJlYW1DaGF0LlBvbGwgY29tbWVudHNcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX3BvbGwtYW5zd2VyLWxpc3RfX2JvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYW5zd2VyLWxpc3RcIj5cbiAgICAgIDxzdHJlYW0tcGFnaW5hdGVkLWxpc3RcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hbnN3ZXItbGlzdFwiXG4gICAgICAgIFtpdGVtc109XCJhbnN3ZXJzXCJcbiAgICAgICAgW2hhc01vcmVdPVwibmV4dCAhPT0gdW5kZWZpbmVkXCJcbiAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICBbdHJhY2tCeV09XCJ0cmFja0J5QW5zd2VySWRcIlxuICAgICAgICAobG9hZE1vcmUpPVwicXVlcnlBbnN3ZXJzKClcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWFuc3dlcj1cIml0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYW5zd2VyXCI+XG4gICAgICAgICAgICA8cCAqbmdJZj1cImFuc3dlci5hbnN3ZXJfdGV4dFwiIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYW5zd2VyX190ZXh0XCI+XG4gICAgICAgICAgICAgIHt7IGFuc3dlci5hbnN3ZXJfdGV4dCB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHN0cmVhbS1wb2xsLXZvdGUgW3ZvdGVdPVwiYW5zd2VyXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvc3RyZWFtLXBhZ2luYXRlZC1saXN0PlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFpc0Nsb3NlZFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgICAgKGNsaWNrKT1cInVwc2VydE93bkFuc3dlci5lbWl0KClcIlxuICAgICAgPlxuICAgICAgICB7e1xuICAgICAgICAgIChvd25BbnN3ZXJcbiAgICAgICAgICAgID8gXCJzdHJlYW1DaGF0LlVwZGF0ZSB5b3VyIGNvbW1lbnRcIlxuICAgICAgICAgICAgOiBcInN0cmVhbUNoYXQuQWRkIGEgY29tbWVudFwiXG4gICAgICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgICAgICB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
2
+ import { BasePollComponent } from '../../../base-poll.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@ngx-translate/core";
6
+ import * as i3 from "../poll-vote-results-list/poll-vote-results-list.component";
7
+ import * as i4 from "../poll-vote/poll-vote.component";
8
+ /**
9
+ *
10
+ */
11
+ export class PollResultsListComponent extends BasePollComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.class = 'str-chat__modal__poll-results';
15
+ this.name = '';
16
+ this.options = [];
17
+ this.votePreviewCount = 5;
18
+ this.maxVotedOptionIds = [];
19
+ this.voteCountsByOption = {};
20
+ this.latestVotesByOption = {};
21
+ }
22
+ stateStoreSelector(poll, markForCheck) {
23
+ const unsubscribe = poll.state.subscribeWithSelector((state) => ({
24
+ name: state.name,
25
+ options: state.options,
26
+ maxVotedOptionIds: state.maxVotedOptionIds,
27
+ vote_counts_by_option: state.vote_counts_by_option,
28
+ latest_votes_by_option: state.latest_votes_by_option,
29
+ }), (state) => {
30
+ this.name = state.name;
31
+ this.options = [...state.options];
32
+ this.options.sort((a, b) => {
33
+ return ((state.vote_counts_by_option[b.id] ?? 0) -
34
+ (state.vote_counts_by_option[a.id] ?? 0));
35
+ });
36
+ this.maxVotedOptionIds = state.maxVotedOptionIds;
37
+ this.voteCountsByOption = state.vote_counts_by_option;
38
+ this.latestVotesByOption = state.latest_votes_by_option;
39
+ markForCheck();
40
+ });
41
+ return unsubscribe;
42
+ }
43
+ isWinner(optionId) {
44
+ return (this.maxVotedOptionIds.length === 1 &&
45
+ this.maxVotedOptionIds[0] === optionId);
46
+ }
47
+ trackByOptionId(_, option) {
48
+ return option.id;
49
+ }
50
+ trackByVoteId(_, vote) {
51
+ return vote.id;
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollResultsListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PollResultsListComponent, selector: "stream-poll-results-list", host: { properties: { "class": "this.class" } }, usesInheritance: true, ngImport: i0, template: "<div\n class=\"str-chat__modal__poll-results\"\n [class.str-chat__modal__poll-results--option-detail]=\"optionToView\"\n>\n <div class=\"str-chat__modal-header\">\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n *ngIf=\"optionToView\"\n class=\"str-chat__modal-header__go-back-button\"\n (click)=\"optionToView = undefined\"\n ></button>\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll results\n </div>\n </div>\n <ng-container *ngIf=\"optionToView; else allOptions\">\n <div class=\"str-chat__modal__poll-results__body\">\n <stream-poll-vote-results-list\n [option]=\"optionToView\"\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n />\n </div>\n </ng-container>\n <ng-template #allOptions>\n <div class=\"str-chat__modal__poll-results__body\">\n <div class=\"str-chat__modal__poll-results__title\">{{ name }}</div>\n <div class=\"str-chat__modal__poll-results__option-list\">\n <div\n *ngFor=\"let option of options; trackBy: trackByOptionId\"\n class=\"str-chat__poll-option\"\n >\n <div class=\"str-chat__poll-option__header\">\n <div class=\"str-chat__poll-option__option-text\">\n {{ option.text }}\n </div>\n <div class=\"str-chat__poll-result-option-vote-counter\">\n <div\n *ngIf=\"isWinner(option.id)\"\n class=\"str-chat__poll-result-winning-option-icon\"\n ></div>\n <span class=\"str-chat__poll-result-option-vote-count\">\n {{ 'streamChat.{{ count }} votes' | translate:{count:\n voteCountsByOption[option.id] ?? 0} }}\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"latestVotesByOption[option?.id ?? '']\">\n <div class=\"str-chat__poll-vote-listing\">\n <ng-container\n *ngFor=\"\n let vote of latestVotesByOption[option?.id ?? '']\n | slice : 0 : votePreviewCount;\n trackBy: trackByVoteId\n \"\n >\n <stream-poll-vote [vote]=\"vote\" />\n </ng-container>\n </div>\n </ng-container>\n <button\n *ngIf=\"\n voteCountsByOption[option?.id ?? ''] > votePreviewCount &&\n canQueryVotes\n \"\n class=\"str-chat__poll-option__show-all-votes-button\"\n translate\n (click)=\"optionToView = option\"\n >\n streamChat.Show all\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.PollVoteResultsListComponent, selector: "stream-poll-vote-results-list", inputs: ["option"] }, { kind: "component", type: i4.PollVoteComponent, selector: "stream-poll-vote", inputs: ["vote"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollResultsListComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: 'stream-poll-results-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"str-chat__modal__poll-results\"\n [class.str-chat__modal__poll-results--option-detail]=\"optionToView\"\n>\n <div class=\"str-chat__modal-header\">\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n *ngIf=\"optionToView\"\n class=\"str-chat__modal-header__go-back-button\"\n (click)=\"optionToView = undefined\"\n ></button>\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll results\n </div>\n </div>\n <ng-container *ngIf=\"optionToView; else allOptions\">\n <div class=\"str-chat__modal__poll-results__body\">\n <stream-poll-vote-results-list\n [option]=\"optionToView\"\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n />\n </div>\n </ng-container>\n <ng-template #allOptions>\n <div class=\"str-chat__modal__poll-results__body\">\n <div class=\"str-chat__modal__poll-results__title\">{{ name }}</div>\n <div class=\"str-chat__modal__poll-results__option-list\">\n <div\n *ngFor=\"let option of options; trackBy: trackByOptionId\"\n class=\"str-chat__poll-option\"\n >\n <div class=\"str-chat__poll-option__header\">\n <div class=\"str-chat__poll-option__option-text\">\n {{ option.text }}\n </div>\n <div class=\"str-chat__poll-result-option-vote-counter\">\n <div\n *ngIf=\"isWinner(option.id)\"\n class=\"str-chat__poll-result-winning-option-icon\"\n ></div>\n <span class=\"str-chat__poll-result-option-vote-count\">\n {{ 'streamChat.{{ count }} votes' | translate:{count:\n voteCountsByOption[option.id] ?? 0} }}\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"latestVotesByOption[option?.id ?? '']\">\n <div class=\"str-chat__poll-vote-listing\">\n <ng-container\n *ngFor=\"\n let vote of latestVotesByOption[option?.id ?? '']\n | slice : 0 : votePreviewCount;\n trackBy: trackByVoteId\n \"\n >\n <stream-poll-vote [vote]=\"vote\" />\n </ng-container>\n </div>\n </ng-container>\n <button\n *ngIf=\"\n voteCountsByOption[option?.id ?? ''] > votePreviewCount &&\n canQueryVotes\n \"\n class=\"str-chat__poll-option__show-all-votes-button\"\n translate\n (click)=\"optionToView = option\"\n >\n streamChat.Show all\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n" }]
59
+ }], propDecorators: { class: [{
60
+ type: HostBinding,
61
+ args: ['class']
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1yZXN1bHRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLXJlc3VsdHMvcG9sbC1yZXN1bHRzLWxpc3QvcG9sbC1yZXN1bHRzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLXJlc3VsdHMvcG9sbC1yZXN1bHRzLWxpc3QvcG9sbC1yZXN1bHRzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQUdqRTs7R0FFRztBQU9ILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxpQkFBaUI7SUFOL0Q7O1FBT3dCLFVBQUssR0FBRywrQkFBK0IsQ0FBQztRQUM5RCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFFM0IscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUNqQyx1QkFBa0IsR0FBMkIsRUFBRSxDQUFDO1FBQ2hELHdCQUFtQixHQUErQixFQUFFLENBQUM7S0ErQ3REO0lBN0NXLGtCQUFrQixDQUMxQixJQUFVLEVBQ1YsWUFBd0I7UUFFeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FDbEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDMUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQjtZQUNsRCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsc0JBQXNCO1NBQ3JELENBQUMsRUFDRixDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxDQUNMLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hDLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztZQUNqRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1lBQ3RELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsc0JBQXNCLENBQUM7WUFDeEQsWUFBWSxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQWdCO1FBQ3ZCLE9BQU8sQ0FDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBUyxFQUFFLE1BQWtCO1FBQzNDLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsYUFBYSxDQUFDLENBQVMsRUFBRSxJQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQXREVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix3SUNickMsK3VGQTRFQTs7NEZEL0RhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU07OEJBR3pCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlUG9sbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Jhc2UtcG9sbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9sbCwgUG9sbE9wdGlvbiwgUG9sbFZvdGUgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5cbi8qKlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvbGwtcmVzdWx0cy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxSZXN1bHRzTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VQb2xsQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3N0ci1jaGF0X19tb2RhbF9fcG9sbC1yZXN1bHRzJztcbiAgbmFtZSA9ICcnO1xuICBvcHRpb25zOiBQb2xsT3B0aW9uW10gPSBbXTtcbiAgb3B0aW9uVG9WaWV3OiBQb2xsT3B0aW9uIHwgdW5kZWZpbmVkO1xuICB2b3RlUHJldmlld0NvdW50ID0gNTtcbiAgbWF4Vm90ZWRPcHRpb25JZHM6IHN0cmluZ1tdID0gW107XG4gIHZvdGVDb3VudHNCeU9wdGlvbjogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICBsYXRlc3RWb3Rlc0J5T3B0aW9uOiBSZWNvcmQ8c3RyaW5nLCBQb2xsVm90ZVtdPiA9IHt9O1xuXG4gIHByb3RlY3RlZCBzdGF0ZVN0b3JlU2VsZWN0b3IoXG4gICAgcG9sbDogUG9sbCxcbiAgICBtYXJrRm9yQ2hlY2s6ICgpID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBwb2xsLnN0YXRlLnN1YnNjcmliZVdpdGhTZWxlY3RvcihcbiAgICAgIChzdGF0ZSkgPT4gKHtcbiAgICAgICAgbmFtZTogc3RhdGUubmFtZSxcbiAgICAgICAgb3B0aW9uczogc3RhdGUub3B0aW9ucyxcbiAgICAgICAgbWF4Vm90ZWRPcHRpb25JZHM6IHN0YXRlLm1heFZvdGVkT3B0aW9uSWRzLFxuICAgICAgICB2b3RlX2NvdW50c19ieV9vcHRpb246IHN0YXRlLnZvdGVfY291bnRzX2J5X29wdGlvbixcbiAgICAgICAgbGF0ZXN0X3ZvdGVzX2J5X29wdGlvbjogc3RhdGUubGF0ZXN0X3ZvdGVzX2J5X29wdGlvbixcbiAgICAgIH0pLFxuICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMubmFtZSA9IHN0YXRlLm5hbWU7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFsuLi5zdGF0ZS5vcHRpb25zXTtcbiAgICAgICAgdGhpcy5vcHRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHN0YXRlLnZvdGVfY291bnRzX2J5X29wdGlvbltiLmlkXSA/PyAwKSAtXG4gICAgICAgICAgICAoc3RhdGUudm90ZV9jb3VudHNfYnlfb3B0aW9uW2EuaWRdID8/IDApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWF4Vm90ZWRPcHRpb25JZHMgPSBzdGF0ZS5tYXhWb3RlZE9wdGlvbklkcztcbiAgICAgICAgdGhpcy52b3RlQ291bnRzQnlPcHRpb24gPSBzdGF0ZS52b3RlX2NvdW50c19ieV9vcHRpb247XG4gICAgICAgIHRoaXMubGF0ZXN0Vm90ZXNCeU9wdGlvbiA9IHN0YXRlLmxhdGVzdF92b3Rlc19ieV9vcHRpb247XG4gICAgICAgIG1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gIH1cblxuICBpc1dpbm5lcihvcHRpb25JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubWF4Vm90ZWRPcHRpb25JZHMubGVuZ3RoID09PSAxICYmXG4gICAgICB0aGlzLm1heFZvdGVkT3B0aW9uSWRzWzBdID09PSBvcHRpb25JZFxuICAgICk7XG4gIH1cblxuICB0cmFja0J5T3B0aW9uSWQoXzogbnVtYmVyLCBvcHRpb246IFBvbGxPcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmlkO1xuICB9XG5cbiAgdHJhY2tCeVZvdGVJZChfOiBudW1iZXIsIHZvdGU6IFBvbGxWb3RlKSB7XG4gICAgcmV0dXJuIHZvdGUuaWQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX3BvbGwtcmVzdWx0c1wiXG4gIFtjbGFzcy5zdHItY2hhdF9fbW9kYWxfX3BvbGwtcmVzdWx0cy0tb3B0aW9uLWRldGFpbF09XCJvcHRpb25Ub1ZpZXdcIlxuPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlclwiPlxuICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9lbGVtZW50cy1jb250ZW50IC0tPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwib3B0aW9uVG9WaWV3XCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlcl9fZ28tYmFjay1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm9wdGlvblRvVmlldyA9IHVuZGVmaW5lZFwiXG4gICAgPjwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwtaGVhZGVyX190aXRsZVwiIHRyYW5zbGF0ZT5cbiAgICAgIHN0cmVhbUNoYXQuUG9sbCByZXN1bHRzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uVG9WaWV3OyBlbHNlIGFsbE9wdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLXJlc3VsdHNfX2JvZHlcIj5cbiAgICAgIDxzdHJlYW0tcG9sbC12b3RlLXJlc3VsdHMtbGlzdFxuICAgICAgICBbb3B0aW9uXT1cIm9wdGlvblRvVmlld1wiXG4gICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjYWxsT3B0aW9ucz5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLXJlc3VsdHNfX2JvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX3BvbGwtcmVzdWx0c19fdGl0bGVcIj57eyBuYW1lIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLXJlc3VsdHNfX29wdGlvbi1saXN0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlPcHRpb25JZFwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1vcHRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLW9wdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtb3B0aW9uX19vcHRpb24tdGV4dFwiPlxuICAgICAgICAgICAgICB7eyBvcHRpb24udGV4dCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtcmVzdWx0LW9wdGlvbi12b3RlLWNvdW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNXaW5uZXIob3B0aW9uLmlkKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1yZXN1bHQtd2lubmluZy1vcHRpb24taWNvblwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1yZXN1bHQtb3B0aW9uLXZvdGUtY291bnRcIj5cbiAgICAgICAgICAgICAgICB7eyAnc3RyZWFtQ2hhdC57eyBjb3VudCB9fSB2b3RlcycgfCB0cmFuc2xhdGU6e2NvdW50OlxuICAgICAgICAgICAgICAgIHZvdGVDb3VudHNCeU9wdGlvbltvcHRpb24uaWRdID8/IDB9IH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXRlc3RWb3Rlc0J5T3B0aW9uW29wdGlvbj8uaWQgPz8gJyddXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtdm90ZS1saXN0aW5nXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCB2b3RlIG9mIGxhdGVzdFZvdGVzQnlPcHRpb25bb3B0aW9uPy5pZCA/PyAnJ11cbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDAgOiB2b3RlUHJldmlld0NvdW50O1xuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVZvdGVJZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3RyZWFtLXBvbGwtdm90ZSBbdm90ZV09XCJ2b3RlXCIgLz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICB2b3RlQ291bnRzQnlPcHRpb25bb3B0aW9uPy5pZCA/PyAnJ10gPiB2b3RlUHJldmlld0NvdW50ICYmXG4gICAgICAgICAgICAgIGNhblF1ZXJ5Vm90ZXNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19wb2xsLW9wdGlvbl9fc2hvdy1hbGwtdm90ZXMtYnV0dG9uXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvblRvVmlldyA9IG9wdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgc3RyZWFtQ2hhdC5TaG93IGFsbFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -21,13 +21,13 @@ export class PollVoteComponent {
21
21
  parseDate(date) {
22
22
  return this.dateParser.parseDateTime(new Date(date));
23
23
  }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollVoteComponent, deps: [{ token: i1.TranslateService }, { token: i2.DateParserService }], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PollVoteComponent, selector: "stream-poll-vote", inputs: { vote: "vote" }, ngImport: i0, template: "<div class=\"str-chat__poll-vote\">\n <div class=\"str-chat__poll-vote__author\">\n <stream-avatar-placeholder\n location=\"poll-voter\"\n [user]=\"vote?.user\"\n [imageUrl]=\"vote?.user?.image\"\n [name]=\"vote?.user?.name ?? anonymousTranslation\"\n type=\"user\"\n />\n <div class=\"str-chat__poll-vote__author__name\">\n {{ vote?.user?.name ?? anonymousTranslation }}\n </div>\n </div>\n <div *ngIf=\"vote?.created_at\" class=\"str-chat__poll-vote__timestamp\">\n {{ parseDate(vote!.created_at) }}\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "location", "channel", "user", "type", "initialsType", "showOnlineIndicator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
26
  }
25
- PollVoteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollVoteComponent, deps: [{ token: i1.TranslateService }, { token: i2.DateParserService }], target: i0.ɵɵFactoryTarget.Component });
26
- PollVoteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollVoteComponent, selector: "stream-poll-vote", inputs: { vote: "vote" }, ngImport: i0, template: "<div class=\"str-chat__poll-vote\">\n <div class=\"str-chat__poll-vote__author\">\n <stream-avatar-placeholder\n location=\"poll-voter\"\n [user]=\"vote?.user\"\n [imageUrl]=\"vote?.user?.image\"\n [name]=\"vote?.user?.name ?? anonymousTranslation\"\n type=\"user\"\n ></stream-avatar-placeholder>\n <div class=\"str-chat__poll-vote__author__name\">\n {{ vote?.user?.name ?? anonymousTranslation }}\n </div>\n </div>\n <div *ngIf=\"vote?.created_at\" class=\"str-chat__poll-vote__timestamp\">\n {{ parseDate(vote!.created_at) }}\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "location", "channel", "user", "type", "initialsType", "showOnlineIndicator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollVoteComponent, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollVoteComponent, decorators: [{
28
28
  type: Component,
29
- args: [{ selector: 'stream-poll-vote', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-vote\">\n <div class=\"str-chat__poll-vote__author\">\n <stream-avatar-placeholder\n location=\"poll-voter\"\n [user]=\"vote?.user\"\n [imageUrl]=\"vote?.user?.image\"\n [name]=\"vote?.user?.name ?? anonymousTranslation\"\n type=\"user\"\n ></stream-avatar-placeholder>\n <div class=\"str-chat__poll-vote__author__name\">\n {{ vote?.user?.name ?? anonymousTranslation }}\n </div>\n </div>\n <div *ngIf=\"vote?.created_at\" class=\"str-chat__poll-vote__timestamp\">\n {{ parseDate(vote!.created_at) }}\n </div>\n</div>\n" }]
30
- }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.DateParserService }]; }, propDecorators: { vote: [{
29
+ args: [{ selector: 'stream-poll-vote', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-vote\">\n <div class=\"str-chat__poll-vote__author\">\n <stream-avatar-placeholder\n location=\"poll-voter\"\n [user]=\"vote?.user\"\n [imageUrl]=\"vote?.user?.image\"\n [name]=\"vote?.user?.name ?? anonymousTranslation\"\n type=\"user\"\n />\n <div class=\"str-chat__poll-vote__author__name\">\n {{ vote?.user?.name ?? anonymousTranslation }}\n </div>\n </div>\n <div *ngIf=\"vote?.created_at\" class=\"str-chat__poll-vote__timestamp\">\n {{ parseDate(vote!.created_at) }}\n </div>\n</div>\n" }]
30
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.DateParserService }], propDecorators: { vote: [{
31
31
  type: Input
32
32
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC12b3RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1yZXN1bHRzL3BvbGwtdm90ZS9wb2xsLXZvdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLXJlc3VsdHMvcG9sbC12b3RlL3BvbGwtdm90ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBSzFFOztHQUVHO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQU81QixZQUNVLGdCQUFrQyxFQUNsQyxVQUE2QjtRQUQ3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBSnZDLHlCQUFvQixHQUFHLFdBQVcsQ0FBQztRQU1qQyxJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQzthQUMzQixTQUFTLENBQUMsQ0FBQyxXQUFtQixFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFdBQVcsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7OEdBcEJVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGtGQ2Q5QixzbEJBaUJBOzJGREhhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTt1SUFNdEMsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFBvbGxBbnN3ZXIsIFBvbGxWb3RlIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgRGF0ZVBhcnNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRlLXBhcnNlci5zZXJ2aWNlJztcblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tcG9sbC12b3RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvbGwtdm90ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQb2xsVm90ZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgcG9sbCB2b3RlIG9yIGFuc3dlciB0byBkaXNwbGF5XG4gICAqL1xuICBASW5wdXQoKSB2b3RlOiBQb2xsVm90ZSB8IFBvbGxBbnN3ZXIgfCB1bmRlZmluZWQ7XG4gIGFub255bW91c1RyYW5zbGF0aW9uID0gJ0Fub255bW91cyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZVBhcnNlcjogRGF0ZVBhcnNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAuZ2V0KCdzdHJlYW1DaGF0LkFub255bW91cycpXG4gICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuYW5vbnltb3VzVHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbjtcbiAgICAgIH0pO1xuICB9XG5cbiAgcGFyc2VEYXRlKGRhdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRhdGVQYXJzZXIucGFyc2VEYXRlVGltZShuZXcgRGF0ZShkYXRlKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC12b3RlXCI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC12b3RlX19hdXRob3JcIj5cbiAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgbG9jYXRpb249XCJwb2xsLXZvdGVyXCJcbiAgICAgIFt1c2VyXT1cInZvdGU/LnVzZXJcIlxuICAgICAgW2ltYWdlVXJsXT1cInZvdGU/LnVzZXI/LmltYWdlXCJcbiAgICAgIFtuYW1lXT1cInZvdGU/LnVzZXI/Lm5hbWUgPz8gYW5vbnltb3VzVHJhbnNsYXRpb25cIlxuICAgICAgdHlwZT1cInVzZXJcIlxuICAgID48L3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLXZvdGVfX2F1dGhvcl9fbmFtZVwiPlxuICAgICAge3sgdm90ZT8udXNlcj8ubmFtZSA/PyBhbm9ueW1vdXNUcmFuc2xhdGlvbiB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInZvdGU/LmNyZWF0ZWRfYXRcIiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLXZvdGVfX3RpbWVzdGFtcFwiPlxuICAgIHt7IHBhcnNlRGF0ZSh2b3RlIS5jcmVhdGVkX2F0KSB9fVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC12b3RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1yZXN1bHRzL3BvbGwtdm90ZS9wb2xsLXZvdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLXJlc3VsdHMvcG9sbC12b3RlL3BvbGwtdm90ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBSzFFOztHQUVHO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQU81QixZQUNVLGdCQUFrQyxFQUNsQyxVQUE2QjtRQUQ3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBSnZDLHlCQUFvQixHQUFHLFdBQVcsQ0FBQztRQU1qQyxJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQzthQUMzQixTQUFTLENBQUMsQ0FBQyxXQUFtQixFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFdBQVcsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FwQlUsaUJBQWlCO21HQUFqQixpQkFBaUIsa0ZDZDlCLDJqQkFpQkE7OzRGREhhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTtxSEFNdEMsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFBvbGxBbnN3ZXIsIFBvbGxWb3RlIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgRGF0ZVBhcnNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRlLXBhcnNlci5zZXJ2aWNlJztcblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tcG9sbC12b3RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvbGwtdm90ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQb2xsVm90ZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgcG9sbCB2b3RlIG9yIGFuc3dlciB0byBkaXNwbGF5XG4gICAqL1xuICBASW5wdXQoKSB2b3RlOiBQb2xsVm90ZSB8IFBvbGxBbnN3ZXIgfCB1bmRlZmluZWQ7XG4gIGFub255bW91c1RyYW5zbGF0aW9uID0gJ0Fub255bW91cyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZVBhcnNlcjogRGF0ZVBhcnNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAuZ2V0KCdzdHJlYW1DaGF0LkFub255bW91cycpXG4gICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuYW5vbnltb3VzVHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbjtcbiAgICAgIH0pO1xuICB9XG5cbiAgcGFyc2VEYXRlKGRhdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRhdGVQYXJzZXIucGFyc2VEYXRlVGltZShuZXcgRGF0ZShkYXRlKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC12b3RlXCI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC12b3RlX19hdXRob3JcIj5cbiAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgbG9jYXRpb249XCJwb2xsLXZvdGVyXCJcbiAgICAgIFt1c2VyXT1cInZvdGU/LnVzZXJcIlxuICAgICAgW2ltYWdlVXJsXT1cInZvdGU/LnVzZXI/LmltYWdlXCJcbiAgICAgIFtuYW1lXT1cInZvdGU/LnVzZXI/Lm5hbWUgPz8gYW5vbnltb3VzVHJhbnNsYXRpb25cIlxuICAgICAgdHlwZT1cInVzZXJcIlxuICAgIC8+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLXZvdGVfX2F1dGhvcl9fbmFtZVwiPlxuICAgICAge3sgdm90ZT8udXNlcj8ubmFtZSA/PyBhbm9ueW1vdXNUcmFuc2xhdGlvbiB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInZvdGU/LmNyZWF0ZWRfYXRcIiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLXZvdGVfX3RpbWVzdGFtcFwiPlxuICAgIHt7IHBhcnNlRGF0ZSh2b3RlIS5jcmVhdGVkX2F0KSB9fVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -70,13 +70,13 @@ export class PollVoteResultsListComponent extends BasePollComponent {
70
70
  });
71
71
  return subscribe;
72
72
  }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollVoteResultsListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PollVoteResultsListComponent, selector: "stream-poll-vote-results-list", inputs: { option: "option" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"str-chat__poll-option str-chat__poll-option--full-vote-list\">\n <div class=\"str-chat__poll-option__header\">\n <div class=\"str-chat__poll-option__option-text\">{{ option?.text }}</div>\n <div class=\"str-chat__poll-result-option-vote-counter\">\n <div\n *ngIf=\"isWinner\"\n class=\"str-chat__poll-result-winning-option-icon\"\n ></div>\n <span class=\"str-chat__poll-result-option-vote-count\">\n {{ 'streamChat.{{ count }} votes' | translate:{count: voteCount ?? 0} }}\n </span>\n </div>\n </div>\n <stream-paginated-list\n class=\"str-chat__poll-vote-listing\"\n [items]=\"votes\"\n [hasMore]=\"next !== undefined\"\n [isLoading]=\"isLoading\"\n [trackBy]=\"trackByVoteId\"\n (loadMore)=\"loadVotes()\"\n >\n <ng-template let-vote=\"item\">\n <stream-poll-vote [vote]=\"vote\" />\n </ng-template>\n </stream-paginated-list>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PaginatedListComponent, selector: "stream-paginated-list", inputs: ["items", "isLoading", "hasMore", "trackBy"], outputs: ["loadMore"] }, { kind: "component", type: i3.PollVoteComponent, selector: "stream-poll-vote", inputs: ["vote"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
73
75
  }
74
- PollVoteResultsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollVoteResultsListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
75
- PollVoteResultsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollVoteResultsListComponent, selector: "stream-poll-vote-results-list", inputs: { option: "option" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"str-chat__poll-option str-chat__poll-option--full-vote-list\">\n <div class=\"str-chat__poll-option__header\">\n <div class=\"str-chat__poll-option__option-text\">{{ option?.text }}</div>\n <div class=\"str-chat__poll-result-option-vote-counter\">\n <div\n *ngIf=\"isWinner\"\n class=\"str-chat__poll-result-winning-option-icon\"\n ></div>\n <span class=\"str-chat__poll-result-option-vote-count\">\n {{ 'streamChat.{{ count }} votes' | translate:{count: voteCount ?? 0} }}\n </span>\n </div>\n </div>\n <stream-paginated-list\n class=\"str-chat__poll-vote-listing\"\n [items]=\"votes\"\n [hasMore]=\"next !== undefined\"\n [isLoading]=\"isLoading\"\n [trackBy]=\"trackByVoteId\"\n (loadMore)=\"loadVotes()\"\n >\n <ng-template let-vote=\"item\">\n <stream-poll-vote [vote]=\"vote\"></stream-poll-vote>\n </ng-template>\n </stream-paginated-list>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PaginatedListComponent, selector: "stream-paginated-list", inputs: ["items", "isLoading", "hasMore", "trackBy"], outputs: ["loadMore"] }, { kind: "component", type: i3.PollVoteComponent, selector: "stream-poll-vote", inputs: ["vote"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollVoteResultsListComponent, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PollVoteResultsListComponent, decorators: [{
77
77
  type: Component,
78
- args: [{ selector: 'stream-poll-vote-results-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-option str-chat__poll-option--full-vote-list\">\n <div class=\"str-chat__poll-option__header\">\n <div class=\"str-chat__poll-option__option-text\">{{ option?.text }}</div>\n <div class=\"str-chat__poll-result-option-vote-counter\">\n <div\n *ngIf=\"isWinner\"\n class=\"str-chat__poll-result-winning-option-icon\"\n ></div>\n <span class=\"str-chat__poll-result-option-vote-count\">\n {{ 'streamChat.{{ count }} votes' | translate:{count: voteCount ?? 0} }}\n </span>\n </div>\n </div>\n <stream-paginated-list\n class=\"str-chat__poll-vote-listing\"\n [items]=\"votes\"\n [hasMore]=\"next !== undefined\"\n [isLoading]=\"isLoading\"\n [trackBy]=\"trackByVoteId\"\n (loadMore)=\"loadVotes()\"\n >\n <ng-template let-vote=\"item\">\n <stream-poll-vote [vote]=\"vote\"></stream-poll-vote>\n </ng-template>\n </stream-paginated-list>\n</div>\n" }]
78
+ args: [{ selector: 'stream-poll-vote-results-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-option str-chat__poll-option--full-vote-list\">\n <div class=\"str-chat__poll-option__header\">\n <div class=\"str-chat__poll-option__option-text\">{{ option?.text }}</div>\n <div class=\"str-chat__poll-result-option-vote-counter\">\n <div\n *ngIf=\"isWinner\"\n class=\"str-chat__poll-result-winning-option-icon\"\n ></div>\n <span class=\"str-chat__poll-result-option-vote-count\">\n {{ 'streamChat.{{ count }} votes' | translate:{count: voteCount ?? 0} }}\n </span>\n </div>\n </div>\n <stream-paginated-list\n class=\"str-chat__poll-vote-listing\"\n [items]=\"votes\"\n [hasMore]=\"next !== undefined\"\n [isLoading]=\"isLoading\"\n [trackBy]=\"trackByVoteId\"\n (loadMore)=\"loadVotes()\"\n >\n <ng-template let-vote=\"item\">\n <stream-poll-vote [vote]=\"vote\" />\n </ng-template>\n </stream-paginated-list>\n</div>\n" }]
79
79
  }], propDecorators: { option: [{
80
80
  type: Input
81
81
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC12b3RlLXJlc3VsdHMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL3BvbGwtcmVzdWx0cy9wb2xsLXZvdGUtcmVzdWx0cy1saXN0L3BvbGwtdm90ZS1yZXN1bHRzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLXJlc3VsdHMvcG9sbC12b3RlLXJlc3VsdHMtbGlzdC9wb2xsLXZvdGUtcmVzdWx0cy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBR2pFOztHQUVHO0FBT0gsTUFBTSxPQUFPLDRCQUNYLFNBQVEsaUJBQWlCO0lBUDNCOztRQWNFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQTJDdkIsa0JBQWEsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUFjLEVBQUUsRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDO0tBc0JIO0lBakVDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPO1NBQ1I7UUFDRCxJQUFJO1lBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNoRCxNQUFNLEVBQUU7b0JBQ04sU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUU7aUJBQ2pDO2dCQUNELElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDaEI7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0MsZ0NBQWdDLENBQ2pDLENBQUM7WUFDRixNQUFNLEtBQUssQ0FBQztZQUNaLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtnQkFBUztZQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFNUyxrQkFBa0IsQ0FDMUIsSUFBVSxFQUNWLFlBQXdCO1FBRXhCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQ2hELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsU0FBUyxFQUFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDN0QsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtTQUMzQyxDQUFDLEVBQ0YsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxRQUFRO2dCQUNYLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUN4RCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO1lBQ3RDLFlBQVksRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FDRixDQUFDO1FBRUYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs7eUhBOUVVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLCtJQ25CekMsMjdCQTBCQTsyRkRQYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0UsK0JBQStCLG1CQUd4Qix1QkFBdUIsQ0FBQyxNQUFNOzhCQVN0QyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VQb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYmFzZS1wb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb2xsLCBQb2xsT3B0aW9uLCBQb2xsVm90ZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tcG9sbC12b3RlLXJlc3VsdHMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb2xsLXZvdGUtcmVzdWx0cy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxWb3RlUmVzdWx0c0xpc3RDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlUG9sbENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlc1xue1xuICAvKipcbiAgICogVGhlIHBvbGwgb3B0aW9uIHRvIGRpc3BsYXkgdGhlIHZvdGVzIGZvclxuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uOiBQb2xsT3B0aW9uIHwgdW5kZWZpbmVkO1xuICBpc1dpbm5lciA9IGZhbHNlO1xuICB2b3RlQ291bnQgPSAwO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgbmV4dD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdm90ZXM6IFBvbGxWb3RlW10gPSBbXTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgaWYgKGNoYW5nZXNbJ29wdGlvbiddKSB7XG4gICAgICB0aGlzLnNldHVwU3RhdGVTdG9yZVNlbGVjdG9yKCk7XG4gICAgICB0aGlzLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnZvdGVzID0gW107XG4gICAgICB2b2lkIHRoaXMubG9hZFZvdGVzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZFZvdGVzKCkge1xuICAgIGlmICghdGhpcy5wb2xsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucG9sbC5xdWVyeU9wdGlvblZvdGVzKHtcbiAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgb3B0aW9uX2lkOiB0aGlzLm9wdGlvbj8uaWQgPz8gJycsXG4gICAgICAgIH0sXG4gICAgICAgIHNvcnQ6IHsgY3JlYXRlZF9hdDogLTEgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG5leHQ6IHRoaXMubmV4dCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm5leHQgPSByZXNwb25zZS5uZXh0O1xuICAgICAgdGhpcy52b3RlcyA9IFsuLi50aGlzLnZvdGVzLCAuLi5yZXNwb25zZS52b3Rlc107XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5FcnJvciBsb2FkaW5nIHZvdGVzJ1xuICAgICAgKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeVZvdGVJZCA9IChfOiBudW1iZXIsIHZvdGU6IFBvbGxWb3RlKSA9PiB7XG4gICAgcmV0dXJuIHZvdGUuaWQ7XG4gIH07XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCBzdWJzY3JpYmUgPSBwb2xsLnN0YXRlLnN1YnNjcmliZVdpdGhTZWxlY3RvcihcbiAgICAgIChzdGF0ZSkgPT4gKHtcbiAgICAgICAgdm90ZUNvdW50OiBzdGF0ZS52b3RlX2NvdW50c19ieV9vcHRpb25bdGhpcy5vcHRpb24/LmlkID8/ICcnXSxcbiAgICAgICAgbWF4Vm90ZWRPcHRpb25JZHM6IHN0YXRlLm1heFZvdGVkT3B0aW9uSWRzLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5pc1dpbm5lciA9XG4gICAgICAgICAgc3RhdGUubWF4Vm90ZWRPcHRpb25JZHM/LmluY2x1ZGVzKHRoaXMub3B0aW9uPy5pZCA/PyAnJykgJiZcbiAgICAgICAgICBzdGF0ZS5tYXhWb3RlZE9wdGlvbklkcy5sZW5ndGggPT09IDE7XG4gICAgICAgIHRoaXMudm90ZUNvdW50ID0gc3RhdGUudm90ZUNvdW50ID8/IDA7XG4gICAgICAgIG1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtb3B0aW9uIHN0ci1jaGF0X19wb2xsLW9wdGlvbi0tZnVsbC12b3RlLWxpc3RcIj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLW9wdGlvbl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLW9wdGlvbl9fb3B0aW9uLXRleHRcIj57eyBvcHRpb24/LnRleHQgfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtcmVzdWx0LW9wdGlvbi12b3RlLWNvdW50ZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc1dpbm5lclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtcmVzdWx0LXdpbm5pbmctb3B0aW9uLWljb25cIlxuICAgICAgPjwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1yZXN1bHQtb3B0aW9uLXZvdGUtY291bnRcIj5cbiAgICAgICAge3sgJ3N0cmVhbUNoYXQue3sgY291bnQgfX0gdm90ZXMnIHwgdHJhbnNsYXRlOntjb3VudDogdm90ZUNvdW50ID8/IDB9IH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8c3RyZWFtLXBhZ2luYXRlZC1saXN0XG4gICAgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC12b3RlLWxpc3RpbmdcIlxuICAgIFtpdGVtc109XCJ2b3Rlc1wiXG4gICAgW2hhc01vcmVdPVwibmV4dCAhPT0gdW5kZWZpbmVkXCJcbiAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgW3RyYWNrQnldPVwidHJhY2tCeVZvdGVJZFwiXG4gICAgKGxvYWRNb3JlKT1cImxvYWRWb3RlcygpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtdm90ZT1cIml0ZW1cIj5cbiAgICAgIDxzdHJlYW0tcG9sbC12b3RlIFt2b3RlXT1cInZvdGVcIj48L3N0cmVhbS1wb2xsLXZvdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9zdHJlYW0tcGFnaW5hdGVkLWxpc3Q+XG48L2Rpdj5cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC12b3RlLXJlc3VsdHMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL3BvbGwtcmVzdWx0cy9wb2xsLXZvdGUtcmVzdWx0cy1saXN0L3BvbGwtdm90ZS1yZXN1bHRzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLXJlc3VsdHMvcG9sbC12b3RlLXJlc3VsdHMtbGlzdC9wb2xsLXZvdGUtcmVzdWx0cy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBR2pFOztHQUVHO0FBT0gsTUFBTSxPQUFPLDRCQUNYLFNBQVEsaUJBQWlCO0lBUDNCOztRQWNFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQTJDdkIsa0JBQWEsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUFjLEVBQUUsRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDO0tBc0JIO0lBakVDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPO1NBQ1I7UUFDRCxJQUFJO1lBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNoRCxNQUFNLEVBQUU7b0JBQ04sU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUU7aUJBQ2pDO2dCQUNELElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDaEI7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0MsZ0NBQWdDLENBQ2pDLENBQUM7WUFDRixNQUFNLEtBQUssQ0FBQztZQUNaLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtnQkFBUztZQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFNUyxrQkFBa0IsQ0FDMUIsSUFBVSxFQUNWLFlBQXdCO1FBRXhCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQ2hELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsU0FBUyxFQUFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDN0QsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtTQUMzQyxDQUFDLEVBQ0YsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxRQUFRO2dCQUNYLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUN4RCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO1lBQ3RDLFlBQVksRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FDRixDQUFDO1FBRUYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzsrR0E5RVUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsK0lDbkJ6QywwNkJBMEJBOzs0RkRQYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0UsK0JBQStCLG1CQUd4Qix1QkFBdUIsQ0FBQyxNQUFNOzhCQVN0QyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VQb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYmFzZS1wb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb2xsLCBQb2xsT3B0aW9uLCBQb2xsVm90ZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tcG9sbC12b3RlLXJlc3VsdHMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb2xsLXZvdGUtcmVzdWx0cy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxWb3RlUmVzdWx0c0xpc3RDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlUG9sbENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlc1xue1xuICAvKipcbiAgICogVGhlIHBvbGwgb3B0aW9uIHRvIGRpc3BsYXkgdGhlIHZvdGVzIGZvclxuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uOiBQb2xsT3B0aW9uIHwgdW5kZWZpbmVkO1xuICBpc1dpbm5lciA9IGZhbHNlO1xuICB2b3RlQ291bnQgPSAwO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgbmV4dD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdm90ZXM6IFBvbGxWb3RlW10gPSBbXTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgaWYgKGNoYW5nZXNbJ29wdGlvbiddKSB7XG4gICAgICB0aGlzLnNldHVwU3RhdGVTdG9yZVNlbGVjdG9yKCk7XG4gICAgICB0aGlzLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnZvdGVzID0gW107XG4gICAgICB2b2lkIHRoaXMubG9hZFZvdGVzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZFZvdGVzKCkge1xuICAgIGlmICghdGhpcy5wb2xsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucG9sbC5xdWVyeU9wdGlvblZvdGVzKHtcbiAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgb3B0aW9uX2lkOiB0aGlzLm9wdGlvbj8uaWQgPz8gJycsXG4gICAgICAgIH0sXG4gICAgICAgIHNvcnQ6IHsgY3JlYXRlZF9hdDogLTEgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG5leHQ6IHRoaXMubmV4dCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm5leHQgPSByZXNwb25zZS5uZXh0O1xuICAgICAgdGhpcy52b3RlcyA9IFsuLi50aGlzLnZvdGVzLCAuLi5yZXNwb25zZS52b3Rlc107XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5FcnJvciBsb2FkaW5nIHZvdGVzJ1xuICAgICAgKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeVZvdGVJZCA9IChfOiBudW1iZXIsIHZvdGU6IFBvbGxWb3RlKSA9PiB7XG4gICAgcmV0dXJuIHZvdGUuaWQ7XG4gIH07XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCBzdWJzY3JpYmUgPSBwb2xsLnN0YXRlLnN1YnNjcmliZVdpdGhTZWxlY3RvcihcbiAgICAgIChzdGF0ZSkgPT4gKHtcbiAgICAgICAgdm90ZUNvdW50OiBzdGF0ZS52b3RlX2NvdW50c19ieV9vcHRpb25bdGhpcy5vcHRpb24/LmlkID8/ICcnXSxcbiAgICAgICAgbWF4Vm90ZWRPcHRpb25JZHM6IHN0YXRlLm1heFZvdGVkT3B0aW9uSWRzLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5pc1dpbm5lciA9XG4gICAgICAgICAgc3RhdGUubWF4Vm90ZWRPcHRpb25JZHM/LmluY2x1ZGVzKHRoaXMub3B0aW9uPy5pZCA/PyAnJykgJiZcbiAgICAgICAgICBzdGF0ZS5tYXhWb3RlZE9wdGlvbklkcy5sZW5ndGggPT09IDE7XG4gICAgICAgIHRoaXMudm90ZUNvdW50ID0gc3RhdGUudm90ZUNvdW50ID8/IDA7XG4gICAgICAgIG1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtb3B0aW9uIHN0ci1jaGF0X19wb2xsLW9wdGlvbi0tZnVsbC12b3RlLWxpc3RcIj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLW9wdGlvbl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLW9wdGlvbl9fb3B0aW9uLXRleHRcIj57eyBvcHRpb24/LnRleHQgfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtcmVzdWx0LW9wdGlvbi12b3RlLWNvdW50ZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc1dpbm5lclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtcmVzdWx0LXdpbm5pbmctb3B0aW9uLWljb25cIlxuICAgICAgPjwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1yZXN1bHQtb3B0aW9uLXZvdGUtY291bnRcIj5cbiAgICAgICAge3sgJ3N0cmVhbUNoYXQue3sgY291bnQgfX0gdm90ZXMnIHwgdHJhbnNsYXRlOntjb3VudDogdm90ZUNvdW50ID8/IDB9IH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8c3RyZWFtLXBhZ2luYXRlZC1saXN0XG4gICAgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC12b3RlLWxpc3RpbmdcIlxuICAgIFtpdGVtc109XCJ2b3Rlc1wiXG4gICAgW2hhc01vcmVdPVwibmV4dCAhPT0gdW5kZWZpbmVkXCJcbiAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgW3RyYWNrQnldPVwidHJhY2tCeVZvdGVJZFwiXG4gICAgKGxvYWRNb3JlKT1cImxvYWRWb3RlcygpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtdm90ZT1cIml0ZW1cIj5cbiAgICAgIDxzdHJlYW0tcG9sbC12b3RlIFt2b3RlXT1cInZvdGVcIiAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvc3RyZWFtLXBhZ2luYXRlZC1saXN0PlxuPC9kaXY+XG4iXX0=
@@ -43,10 +43,10 @@ export class UpsertAnswerComponent extends BasePollComponent {
43
43
  stateStoreSelector(_, __) {
44
44
  return () => { };
45
45
  }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UpsertAnswerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: UpsertAnswerComponent, selector: "stream-upsert-answer", inputs: { answer: "answer", closeModal: "closeModal" }, host: { properties: { "class": "this.class" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"str-chat__dialog str-chat__dialog--form str-chat__prompt-dialog str-chat__modal__poll-add-comment\"\n>\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\">\n {{\n (answer ? \"streamChat.Update your comment\" : \"streamChat.Add a comment\")\n | translate\n }}\n </div>\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"addComment()\">\n <div class=\"str-chat__dialog__field\">\n <input formControlName=\"comment\" id=\"comment\" type=\"text\" />\n </div>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--cancel\"\n onClick=\"{close}\"\n type=\"button\"\n (click)=\"closeModal()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--submit\"\n type=\"submit\"\n [disabled]=\"formGroup.invalid\"\n >\n {{ \"streamChat.Send\" | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
48
  }
47
- UpsertAnswerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UpsertAnswerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
48
- UpsertAnswerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: UpsertAnswerComponent, selector: "stream-upsert-answer", inputs: { answer: "answer", closeModal: "closeModal" }, host: { properties: { "class": "this.class" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"str-chat__dialog str-chat__dialog--form str-chat__prompt-dialog str-chat__modal__poll-add-comment\"\n>\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\">\n {{\n (answer ? \"streamChat.Update your comment\" : \"streamChat.Add a comment\")\n | translate\n }}\n </div>\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"addComment()\">\n <div class=\"str-chat__dialog__field\">\n <input formControlName=\"comment\" id=\"comment\" type=\"text\" />\n </div>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--cancel\"\n onClick=\"{close}\"\n type=\"button\"\n (click)=\"closeModal()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--submit\"\n type=\"submit\"\n [disabled]=\"formGroup.invalid\"\n >\n {{ \"streamChat.Send\" | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UpsertAnswerComponent, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UpsertAnswerComponent, decorators: [{
50
50
  type: Component,
51
51
  args: [{ selector: 'stream-upsert-answer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"str-chat__dialog str-chat__dialog--form str-chat__prompt-dialog str-chat__modal__poll-add-comment\"\n>\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\">\n {{\n (answer ? \"streamChat.Update your comment\" : \"streamChat.Add a comment\")\n | translate\n }}\n </div>\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"addComment()\">\n <div class=\"str-chat__dialog__field\">\n <input formControlName=\"comment\" id=\"comment\" type=\"text\" />\n </div>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--cancel\"\n onClick=\"{close}\"\n type=\"button\"\n (click)=\"closeModal()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--submit\"\n type=\"submit\"\n [disabled]=\"formGroup.invalid\"\n >\n {{ \"streamChat.Send\" | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
52
52
  }], propDecorators: { class: [{
@@ -57,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
57
57
  }], closeModal: [{
58
58
  type: Input
59
59
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LWFuc3dlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL3Vwc2VydC1hbnN3ZXIvdXBzZXJ0LWFuc3dlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL3Vwc2VydC1hbnN3ZXIvdXBzZXJ0LWFuc3dlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBRTlEOztHQUVHO0FBT0gsTUFBTSxPQUFPLHFCQUNYLFNBQVEsaUJBQWlCO0lBUDNCOztRQVV3QixVQUFLLEdBQUcsa0JBQWtCLENBQUM7UUFLakQ7O1dBRUc7UUFDTSxlQUFVLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUN4QixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3BELENBQUMsQ0FBQztLQTZCSjtJQTNCQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM3QyxPQUFPO1NBQ1I7UUFDRCxJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0Msa0NBQWtDLENBQ25DLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsTUFBTSxLQUFLLENBQUM7U0FDYjtJQUNILENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxDQUFPLEVBQUUsRUFBYztRQUNsRCxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDOztrSEEzQ1UscUJBQXFCO3NHQUFyQixxQkFBcUIsaU5DckJsQyxpckNBa0NBOzJGRGJhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTTs4QkFNekIsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPO2dCQUlYLE1BQU07c0JBQWQsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBvbGwsIFBvbGxBbnN3ZXIgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBCYXNlUG9sbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtcG9sbC5jb21wb25lbnQnO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS11cHNlcnQtYW5zd2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Vwc2VydC1hbnN3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVXBzZXJ0QW5zd2VyQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXNcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3N0ci1jaGF0X19kaWFsb2cnO1xuICAvKipcbiAgICogVGhlIHBvbGwgY29tbWVudCB0byBlZGl0LCB3aGVuIGluIGVkaXQgbW9kZVxuICAgKi9cbiAgQElucHV0KCkgYW5zd2VyOiBQb2xsQW5zd2VyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIHRvIGNsb3NlIHRoZSBtb2RhbCB0aGUgY29tcG9uZW50IGlzIGRpc3BsYXllZCBpblxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VNb2RhbDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBjb21tZW50OiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gIH0pO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICBpZiAoY2hhbmdlc1snYW5zd2VyJ10pIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnY29tbWVudCcpPy5zZXRWYWx1ZSh0aGlzLmFuc3dlcj8uYW5zd2VyX3RleHQgPz8gJycpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFkZENvbW1lbnQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmludmFsaWQgfHwgIXRoaXMubWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnBvbGw/LmFkZEFuc3dlcih0aGlzLmZvcm1Hcm91cC52YWx1ZS5jb21tZW50ISwgdGhpcy5tZXNzYWdlSWQpO1xuICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5GYWlsZWQgdG8gYWRkIGNvbW1lbnQnXG4gICAgICApO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0ZVN0b3JlU2VsZWN0b3IoXzogUG9sbCwgX186ICgpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gKCkgPT4ge307XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nIHN0ci1jaGF0X19kaWFsb2ctLWZvcm0gc3RyLWNoYXRfX3Byb21wdC1kaWFsb2cgc3RyLWNoYXRfX21vZGFsX19wb2xsLWFkZC1jb21tZW50XCJcbj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2JvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fdGl0bGVcIj5cbiAgICAgIHt7XG4gICAgICAgIChhbnN3ZXIgPyBcInN0cmVhbUNoYXQuVXBkYXRlIHlvdXIgY29tbWVudFwiIDogXCJzdHJlYW1DaGF0LkFkZCBhIGNvbW1lbnRcIilcbiAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgfX1cbiAgICA8L2Rpdj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIChuZ1N1Ym1pdCk9XCJhZGRDb21tZW50KClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19maWVsZFwiPlxuICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29tbWVudFwiIGlkPVwiY29tbWVudFwiIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvbiBzdHItY2hhdF9fZGlhbG9nX19jb250cm9scy1idXR0b24tLWNhbmNlbFwiXG4gICAgICAgICAgb25DbGljaz1cIntjbG9zZX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjbG9zZU1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkNhbmNlbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19jb250cm9scy1idXR0b24gc3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uLS1zdWJtaXRcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtR3JvdXAuaW52YWxpZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuU2VuZFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LWFuc3dlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL3Vwc2VydC1hbnN3ZXIvdXBzZXJ0LWFuc3dlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL3Vwc2VydC1hbnN3ZXIvdXBzZXJ0LWFuc3dlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBRTlEOztHQUVHO0FBT0gsTUFBTSxPQUFPLHFCQUNYLFNBQVEsaUJBQWlCO0lBUDNCOztRQVV3QixVQUFLLEdBQUcsa0JBQWtCLENBQUM7UUFLakQ7O1dBRUc7UUFDTSxlQUFVLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUN4QixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3BELENBQUMsQ0FBQztLQTZCSjtJQTNCQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM3QyxPQUFPO1NBQ1I7UUFDRCxJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0Msa0NBQWtDLENBQ25DLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsTUFBTSxLQUFLLENBQUM7U0FDYjtJQUNILENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxDQUFPLEVBQUUsRUFBYztRQUNsRCxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDOytHQTNDVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixpTkNyQmxDLGlyQ0FrQ0E7OzRGRGJhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTTs4QkFNekIsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPO2dCQUlYLE1BQU07c0JBQWQsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBvbGwsIFBvbGxBbnN3ZXIgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBCYXNlUG9sbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtcG9sbC5jb21wb25lbnQnO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS11cHNlcnQtYW5zd2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Vwc2VydC1hbnN3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVXBzZXJ0QW5zd2VyQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXNcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3N0ci1jaGF0X19kaWFsb2cnO1xuICAvKipcbiAgICogVGhlIHBvbGwgY29tbWVudCB0byBlZGl0LCB3aGVuIGluIGVkaXQgbW9kZVxuICAgKi9cbiAgQElucHV0KCkgYW5zd2VyOiBQb2xsQW5zd2VyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIHRvIGNsb3NlIHRoZSBtb2RhbCB0aGUgY29tcG9uZW50IGlzIGRpc3BsYXllZCBpblxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VNb2RhbDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBjb21tZW50OiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gIH0pO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICBpZiAoY2hhbmdlc1snYW5zd2VyJ10pIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnY29tbWVudCcpPy5zZXRWYWx1ZSh0aGlzLmFuc3dlcj8uYW5zd2VyX3RleHQgPz8gJycpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFkZENvbW1lbnQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmludmFsaWQgfHwgIXRoaXMubWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnBvbGw/LmFkZEFuc3dlcih0aGlzLmZvcm1Hcm91cC52YWx1ZS5jb21tZW50ISwgdGhpcy5tZXNzYWdlSWQpO1xuICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5GYWlsZWQgdG8gYWRkIGNvbW1lbnQnXG4gICAgICApO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0ZVN0b3JlU2VsZWN0b3IoXzogUG9sbCwgX186ICgpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gKCkgPT4ge307XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nIHN0ci1jaGF0X19kaWFsb2ctLWZvcm0gc3RyLWNoYXRfX3Byb21wdC1kaWFsb2cgc3RyLWNoYXRfX21vZGFsX19wb2xsLWFkZC1jb21tZW50XCJcbj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2JvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fdGl0bGVcIj5cbiAgICAgIHt7XG4gICAgICAgIChhbnN3ZXIgPyBcInN0cmVhbUNoYXQuVXBkYXRlIHlvdXIgY29tbWVudFwiIDogXCJzdHJlYW1DaGF0LkFkZCBhIGNvbW1lbnRcIilcbiAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgfX1cbiAgICA8L2Rpdj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIChuZ1N1Ym1pdCk9XCJhZGRDb21tZW50KClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19maWVsZFwiPlxuICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29tbWVudFwiIGlkPVwiY29tbWVudFwiIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvbiBzdHItY2hhdF9fZGlhbG9nX19jb250cm9scy1idXR0b24tLWNhbmNlbFwiXG4gICAgICAgICAgb25DbGljaz1cIntjbG9zZX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjbG9zZU1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkNhbmNlbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19jb250cm9scy1idXR0b24gc3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uLS1zdWJtaXRcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtR3JvdXAuaW52YWxpZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuU2VuZFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19