@clickview/lite 0.0.25 → 0.0.26-dev.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.
- package/.eslintrc.json +3 -0
- package/dist/css/13.chunk.css +14 -4
- package/dist/css/14.chunk.css +5 -9
- package/dist/css/16.chunk.css +6 -6
- package/dist/css/17.chunk.css +7 -7
- package/dist/css/18.chunk.css +7 -3
- package/dist/css/19.chunk.css +6 -6
- package/dist/css/2.chunk.css +1 -1
- package/dist/css/20.chunk.css +6 -4
- package/dist/css/21.chunk.css +4 -2
- package/dist/css/22.chunk.css +6 -4
- package/dist/css/23.chunk.css +6 -4
- package/dist/css/24.chunk.css +5 -5
- package/dist/css/25.chunk.css +3 -3
- package/dist/css/26.chunk.css +1 -7
- package/dist/css/27.chunk.css +6 -2
- package/dist/css/28.chunk.css +6 -2
- package/dist/css/29.chunk.css +2 -2
- package/dist/css/3.chunk.css +3 -3
- package/dist/css/30.chunk.css +2 -2
- package/dist/css/32.chunk.css +2 -6
- package/dist/css/33.chunk.css +2 -2
- package/dist/css/34.chunk.css +7 -1
- package/dist/css/37.chunk.css +3 -3
- package/dist/css/38.chunk.css +2 -15
- package/dist/css/39.chunk.css +2 -4
- package/dist/css/4.chunk.css +8 -0
- package/dist/css/40.chunk.css +4 -4
- package/dist/css/41.chunk.css +2 -38
- package/dist/css/45.chunk.css +2 -36
- package/dist/css/52.chunk.css +1 -51
- package/dist/css/53.chunk.css +3 -1
- package/dist/css/54.chunk.css +1 -1
- package/dist/css/56.chunk.css +1 -13
- package/dist/css/57.chunk.css +1 -13
- package/dist/css/7.chunk.css +2 -92
- package/dist/css/9.chunk.css +4 -0
- package/dist/css/lite-app.css +55 -3
- package/dist/en.json +1 -1
- package/dist/libs/analytics/src/clients/CollectionApiClient.d.ts +1 -3
- package/dist/libs/analytics/src/enrichers/BaseAnalyticsEnricher.d.ts +1 -1
- package/dist/libs/analytics/src/enrichers/UserDataEnricher.d.ts +1 -1
- package/dist/libs/analytics/src/interfaces/AnalyticsTypes.d.ts +8 -3
- package/dist/libs/analytics/src/utils/TypeHelper.d.ts +1 -1
- package/dist/libs/analytics/src/utils/VideoDataFormatHelper.d.ts +5 -5
- package/dist/libs/common/src/backbone/constants/CommonServices.d.ts +0 -1
- package/dist/libs/common/src/backbone/core/BaseAppRouter.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseApplication.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseBehavior.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseCollection.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseCollectionView.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseLayoutView.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseModel.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseNestedModel.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseService.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/BaseView.d.ts +2 -2
- package/dist/libs/common/src/backbone/core/LayoutService.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/ListenToRadio.d.ts +1 -1
- package/dist/libs/common/src/backbone/core/Shell.d.ts +1 -1
- package/dist/libs/common/src/backbone/interfaces/BaseCollectionIdentifier.d.ts +2 -1
- package/dist/libs/common/src/backbone/interfaces/DataProvider.d.ts +1 -1
- package/dist/libs/common/src/backbone/services/LanguageService.d.ts +1 -1
- package/dist/libs/common/src/backbone/services/data-providers/AjaxDataProvider.d.ts +1 -1
- package/dist/libs/common/src/backbone/services/data-providers/SignalRDataProvider.d.ts +2 -2
- package/dist/libs/common/src/backbone/utils/FunctionHelper.d.ts +3 -3
- package/dist/libs/common/src/react/components/BackboneViewWrapper.d.ts +2 -2
- package/dist/libs/common/src/react/flight/FlightMiddleware.d.ts +1 -1
- package/dist/libs/common/src/react/flight/interfaces/HttpRequest.d.ts +3 -0
- package/dist/libs/common/src/react/middleware/ApplicationMiddleware.d.ts +2 -1
- package/dist/libs/common/src/react/utils/ArrayHelper.d.ts +5 -4
- package/dist/libs/common/src/react/utils/FetchHelper.d.ts +1 -1
- package/dist/libs/common/src/react/utils/TextHelper.d.ts +1 -1
- package/dist/libs/shared/src/apps/notifications/views/popover/NotificationsPopoverView.d.ts +2 -2
- package/dist/libs/shared/src/apps/playlists/utils/getBackgroundColourClass.d.ts +2 -0
- package/dist/libs/shared/src/apps/search/utils/InstantSearchHelper.d.ts +5 -5
- package/dist/libs/shared/src/apps/search/utils/TypeaheadHelper.d.ts +24 -24
- package/dist/libs/shared/src/apps/search/views/search-bar/SearchBarView.d.ts +5 -5
- package/dist/libs/shared/src/apps/subjects/components/preferences/footer/PreferenceFooter.d.ts +1 -1
- package/dist/libs/shared/src/apps/upload/errors/file-type/FileTypeError.d.ts +1 -1
- package/dist/libs/shared/src/components/banner-header/BannerHeader.d.ts +1 -0
- package/dist/libs/shared/src/components/forms/form-buttons/FormButtons.d.ts +2 -1
- package/dist/libs/shared/src/components/forms/form-checkbox/FormCheckbox.d.ts +1 -1
- package/dist/libs/shared/src/components/forms/form-field/CharacterCounter.d.ts +3 -2
- package/dist/libs/shared/src/components/forms/form-field/FormField.d.ts +4 -3
- package/dist/libs/shared/src/components/forms/form-wrapper/FormWrapper.d.ts +2 -1
- package/dist/libs/shared/src/components/lazy-image/LazyImage.d.ts +1 -0
- package/dist/libs/shared/src/components/popup/Popup.d.ts +14 -0
- package/dist/libs/shared/src/components/search-bar/SearchBar.d.ts +24 -0
- package/dist/libs/shared/src/components/search-bar/SearchInput.d.ts +6 -2
- package/dist/libs/shared/src/components/thumbnails/base/BaseThumbnail.d.ts +4 -2
- package/dist/libs/shared/src/components/thumbnails/video/VideoThumbnail.d.ts +2 -2
- package/dist/libs/shared/src/components/widgets/fixed-widget/FixedWidget.d.ts +17 -8
- package/dist/libs/shared/src/components/widgets/fixed-widget/FixedWidgetUtils.d.ts +1 -1
- package/dist/libs/shared/src/components/widgets/fixed-widget/PartialFixedWidget.d.ts +1 -6
- package/dist/libs/shared/src/components/widgets/items/playlist-widget-item/PlaylistWidgetItem.d.ts +1 -2
- package/dist/libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.d.ts +3 -2
- package/dist/libs/shared/src/components/widgets/items/tall-subject-widget-item/TallSubjectWidgetItem.d.ts +1 -2
- package/dist/libs/shared/src/components/widgets/items/video-widget-item/VideoWidgetItem.d.ts +2 -2
- package/dist/libs/shared/src/components/widgets/sliding-list/SlidingListContainer.d.ts +1 -1
- package/dist/libs/shared/src/components/widgets/widget-button/WidgetButton.d.ts +1 -0
- package/dist/libs/shared/src/constants/BootstrapKeys.d.ts +1 -0
- package/dist/libs/shared/src/enums/ObjectStatus.d.ts +5 -0
- package/dist/libs/shared/src/enums/PlayerMediaType.d.ts +4 -0
- package/dist/libs/shared/src/enums/UserGroup.d.ts +3 -2
- package/dist/libs/shared/src/enums/WidgetContents.d.ts +2 -1
- package/dist/libs/shared/src/flight-requests/ConfigRequests.d.ts +3 -1
- package/dist/libs/shared/src/flight-requests/PlayerRequests.d.ts +5 -0
- package/dist/libs/shared/src/flight-requests/PlaylistRequests.d.ts +1 -0
- package/dist/libs/shared/src/flight-requests/PreferenceRequests.d.ts +1 -1
- package/dist/libs/shared/src/flight-requests/ThemeRequests.d.ts +2 -0
- package/dist/libs/shared/src/flight-requests/UserRequests.d.ts +3 -1
- package/dist/libs/shared/src/images/svg/ImportedSvgs.d.ts +3 -1
- package/dist/libs/shared/src/images/svg/actions/index.d.ts +3 -1
- package/dist/libs/shared/src/interfaces/collections/index.d.ts +1 -0
- package/dist/libs/shared/src/interfaces/models/Config.d.ts +2 -0
- package/dist/libs/shared/src/interfaces/models/Glance.d.ts +2 -0
- package/dist/libs/shared/src/interfaces/models/Link.d.ts +1 -0
- package/dist/libs/shared/src/interfaces/models/PlayerViewKey.d.ts +3 -0
- package/dist/libs/shared/src/interfaces/models/Resource.d.ts +11 -3
- package/dist/libs/shared/src/interfaces/models/Thumbnail.d.ts +3 -0
- package/dist/libs/shared/src/interfaces/models/User.d.ts +8 -1
- package/dist/libs/shared/src/interfaces/models/index.d.ts +4 -0
- package/dist/libs/shared/src/interfaces/requests/CreateViewKeyRequest.d.ts +5 -0
- package/dist/libs/shared/src/interfaces/requests/UpdateVideoRequest.d.ts +5 -1
- package/dist/libs/shared/src/interfaces/requests/index.d.ts +4 -0
- package/dist/libs/shared/src/interfaces/services/BaseConfigDataService.d.ts +5 -0
- package/dist/libs/shared/src/interfaces/services/BaseUserDataService.d.ts +2 -0
- package/dist/libs/shared/src/interfaces/services/index.d.ts +1 -0
- package/dist/libs/shared/src/legacy/components/thumbnail/ThumbnailComponent.d.ts +1 -1
- package/dist/libs/shared/src/utils/ImageHelper.d.ts +5 -4
- package/dist/libs/shared/src/utils/SvgHelper.d.ts +0 -1
- package/dist/libs/shared/src/utils/UserHelper.d.ts +3 -0
- package/dist/libs/shared/src/utils/VideoDetailsHelper.d.ts +18 -0
- package/dist/projects/lite/src/app.d.ts +37 -16
- package/dist/projects/lite/src/apps/classrooms/components/classroom-activities-list/ClassroomActivitiesList.d.ts +1 -4
- package/dist/projects/lite/src/apps/classrooms/components/classroom-activities-list/empty-state/ClassroomActivitiesListEmptyState.d.ts +1 -4
- package/dist/projects/lite/src/apps/classrooms/components/classroom-students-list/ClassroomStudentItem.d.ts +3 -2
- package/dist/projects/lite/src/apps/classrooms/components/classroom-students-list/ClassroomStudentsList.d.ts +3 -2
- package/dist/projects/lite/src/apps/classrooms/components/classroom-students-list/empty-state/ClassroomStudentsListEmptyState.d.ts +1 -4
- package/dist/projects/lite/src/apps/classrooms/components/manage-classroom-student-item/ManageClassroomStudentItem.d.ts +3 -2
- package/dist/projects/lite/src/apps/classrooms/flight-requests/ClassroomRequests.d.ts +5 -3
- package/dist/projects/lite/src/apps/classrooms/views/create-classroom/CreateClassroomView.d.ts +1 -1
- package/dist/projects/lite/src/apps/classrooms/views/edit-classroom/EditClassroomView.d.ts +2 -2
- package/dist/projects/lite/src/apps/content-updates/LiteContentUpdatesApplication.d.ts +1 -1
- package/dist/projects/lite/src/apps/content-updates/components/classification-update-breadcrumbs/ClassificationUpdateBreadcrumbs.d.ts +2 -2
- package/dist/projects/lite/src/apps/default/LiteDefaultApplication.d.ts +2 -0
- package/dist/projects/lite/src/apps/playlists/LitePlaylistsApplication.d.ts +1 -0
- package/dist/projects/lite/src/apps/playlists/constants/PlaylistBgColourClassNames.d.ts +1 -0
- package/dist/projects/lite/src/apps/playlists/views/copy-playlist/CopyPlaylistView.d.ts +7 -0
- package/dist/projects/lite/src/apps/search/components/filter-types/index.d.ts +1 -1
- package/dist/projects/lite/src/apps/search/components/filter-types/more-filters/MoreFilters.d.ts +1 -4
- package/dist/projects/lite/src/apps/search/components/filter-types/radio-filter/{year-level/YearLevelRadioFilter.d.ts → year-group/YearGroupRadioFilter.d.ts} +3 -3
- package/dist/projects/lite/src/apps/search/components/scoped-search-bar/ScopedSearchBar.d.ts +2 -0
- package/dist/projects/lite/src/apps/search/interfaces/SearchFilter.d.ts +1 -1
- package/dist/projects/lite/src/apps/search/utils/FilterHelper.d.ts +2 -2
- package/dist/projects/lite/src/apps/settings/components/SettingsGroup.d.ts +2 -2
- package/dist/projects/lite/src/apps/subjects/LiteSubjectApplication.d.ts +2 -3
- package/dist/projects/lite/src/apps/subjects/utils/OnboardingHelper.d.ts +1 -2
- package/dist/projects/lite/src/apps/user-manager/LiteUserManagerApplication.d.ts +13 -8
- package/dist/projects/lite/src/apps/user-manager/components/bulk-upload-file-select/BulkUploadFileSelect.d.ts +4 -6
- package/dist/projects/lite/src/apps/user-manager/components/delete-uploaded-user-popup/DeleteUploadedUserPopup.d.ts +8 -0
- package/dist/projects/lite/src/apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup.d.ts +6 -5
- package/dist/projects/lite/src/apps/user-manager/components/edit-user-details/EditUserDetails.d.ts +15 -0
- package/dist/projects/lite/src/apps/user-manager/components/manage-users-list/ManageUsersList.d.ts +4 -6
- package/dist/projects/lite/src/apps/user-manager/components/manage-users-list/staff/ManageStaffItem.d.ts +9 -0
- package/dist/projects/lite/src/apps/user-manager/components/manage-users-list/students/ManageStudentItem.d.ts +2 -2
- package/dist/projects/lite/src/apps/user-manager/components/user-details-form/UserDetailsForm.d.ts +5 -5
- package/dist/projects/lite/src/apps/user-manager/components/user-review-table/UserReviewRow.d.ts +13 -0
- package/dist/projects/lite/src/apps/user-manager/components/user-review-table/UserReviewTable.d.ts +13 -0
- package/dist/projects/lite/src/apps/user-manager/components/year-group-select/YearGroupSelect.d.ts +8 -0
- package/dist/projects/lite/src/apps/user-manager/flight-requests/SchoolUserRequests.d.ts +12 -22
- package/dist/projects/lite/src/apps/user-manager/interfaces/BulkDeleteUsersRequest.d.ts +7 -0
- package/dist/projects/lite/src/apps/user-manager/interfaces/BulkUpdateUserStatusRequest.d.ts +8 -0
- package/dist/projects/lite/src/apps/user-manager/interfaces/EditUserRequest.d.ts +20 -6
- package/dist/projects/lite/src/apps/user-manager/interfaces/index.d.ts +1 -4
- package/dist/projects/lite/src/apps/user-manager/interfaces/mocks/MockClassroom.d.ts +2 -3
- package/dist/projects/lite/src/apps/user-manager/reducers/UserUploadReducer.d.ts +3 -4
- package/dist/projects/lite/src/apps/user-manager/validation/user-validation/UserValidationSchema.d.ts +23 -12
- package/dist/projects/lite/src/apps/user-manager/views/bulk-remove-users/BulkRemoveUsersView.d.ts +8 -0
- package/dist/projects/lite/src/apps/user-manager/views/create-user/CreateUserView.d.ts +8 -0
- package/dist/projects/lite/src/apps/user-manager/views/edit-user/EditUserView.d.ts +9 -0
- package/dist/projects/lite/src/apps/user-manager/views/{school-teacher-manager/SchoolTeacherManagerView.d.ts → school-staff-manager/SchoolStaffManagerView.d.ts} +2 -2
- package/dist/projects/lite/src/apps/user-manager/views/school-staff-manager/empty-state/SchoolStaffManagerEmptyState.d.ts +7 -0
- package/dist/projects/lite/src/apps/user-manager/views/school-student-manager/empty-state/SchoolStudentManagerEmptyState.d.ts +6 -1
- package/dist/projects/lite/src/apps/user-manager/views/toggle-user-status/ToggleUserStatusView.d.ts +7 -0
- package/dist/projects/lite/src/apps/user-manager/views/user-upload-review/UserUploadReviewView.d.ts +8 -0
- package/dist/projects/lite/src/shared/components/floating-player/FloatingPlayer.d.ts +7 -0
- package/dist/projects/lite/src/shared/components/play-page/PlayPage.d.ts +2 -0
- package/dist/projects/lite/src/shared/components/video-info-button/VideoInfoButton.d.ts +1 -1
- package/dist/projects/lite/src/shared/constants/LiteActions.d.ts +9 -8
- package/dist/projects/lite/src/shared/constants/LiteHostPlaceholderMappings.d.ts +6 -0
- package/dist/projects/lite/src/shared/constants/LiteViewModels.d.ts +2 -2
- package/dist/projects/lite/src/shared/constants/Services.d.ts +1 -0
- package/dist/projects/lite/src/shared/flight-requests/VideoRequests.d.ts +2 -3
- package/dist/projects/lite/src/shared/hooks/useHandleObjectError.d.ts +2 -2
- package/dist/projects/lite/src/shared/hooks/useInitPlayerContext.d.ts +21 -14
- package/dist/projects/lite/src/shared/interfaces/mocks/MockClassroomGroup.d.ts +2 -3
- package/dist/projects/lite/src/shared/services/FlightConfigDataService.d.ts +13 -0
- package/dist/projects/lite/src/shared/services/FlightUserDataService.d.ts +3 -0
- package/dist/projects/lite/src/shared/views/create-clip/CreateClipView.d.ts +6 -0
- package/dist/projects/lite/src/startup/RegisterAnalytics.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterAppOptions.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterApplicationVariables.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterApplications.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterCaches.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterDataProviders.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterDataServices.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterErrorHandlers.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterHandlebarsHelpers.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterLayouts.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterServices.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterStore.d.ts +1 -1
- package/dist/projects/lite/src/startup/RegisterViewDataExtensions.d.ts +1 -1
- package/dist/projects/lite/src/styles/index.d.ts +3 -0
- package/dist/projects/player/src/components/chapter-bar-items/chapter-bar-item.d.ts +79 -0
- package/dist/projects/player/src/components/chapter-bar-items/chapter-bar-items.d.ts +55 -0
- package/dist/projects/player/src/components/chapter-bar-items/chapter-bar-load-progress.d.ts +55 -0
- package/dist/projects/player/src/components/chapter-bar-items/chapter-bar-play-progress.d.ts +55 -0
- package/dist/projects/player/src/components/chapter-seek-bar/chapter-seek-bar.d.ts +1 -0
- package/dist/projects/player/src/components/chapters-button/chapter-menu-item.d.ts +60 -0
- package/dist/projects/player/src/components/chapters-button/chapters-button.d.ts +1 -0
- package/dist/projects/player/src/components/cog-button/cog-button.d.ts +38 -0
- package/dist/projects/player/src/components/collapserator/collapserator.d.ts +4 -0
- package/dist/projects/player/src/components/mouse-time-display/mouse-time-display.d.ts +3 -0
- package/dist/projects/player/src/components/playback-rate-button/playback-rate-button.d.ts +1 -0
- package/dist/projects/player/src/components/progress-control/progress-control.d.ts +1 -0
- package/dist/projects/player/src/components/quality-selector/quality-button.d.ts +1 -0
- package/dist/projects/player/src/components/quality-selector/quality-menu-item.d.ts +17 -0
- package/dist/projects/player/src/components/subs-caps-button/subs-caps-button.d.ts +1 -0
- package/dist/projects/player/src/components/thumbnail-display/thumbnail-display.d.ts +66 -0
- package/dist/projects/player/src/components/time-tooltip/time-tooltip.d.ts +15 -0
- package/dist/projects/player/src/components/time-wrapper/time-wrapper.d.ts +1 -0
- package/dist/projects/player/src/interfaces/CollapsibleComponent.d.ts +10 -0
- package/dist/projects/player/src/interfaces/models/ApiError.d.ts +4 -0
- package/dist/projects/player/src/interfaces/models/PlaybackObject.d.ts +32 -0
- package/dist/projects/player/src/players/base-player.d.ts +64 -0
- package/dist/projects/player/src/players/create-clip-player.d.ts +16 -0
- package/dist/projects/player/src/players/player.d.ts +15 -0
- package/dist/projects/player/src/plugins/clip-plugin/clip-plugin.d.ts +50 -0
- package/dist/projects/player/src/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector-handle.d.ts +54 -0
- package/dist/projects/player/src/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector.d.ts +89 -0
- package/dist/projects/player/src/plugins/create-clip-plugin/components/create-clip-seek-bar/create-clip-seek-bar.d.ts +14 -0
- package/dist/projects/player/src/plugins/create-clip-plugin/create-clip-plugin.d.ts +14 -0
- package/dist/projects/player/src/plugins/example-plugin/components/example-button/example-button.d.ts +1 -0
- package/dist/projects/player/src/plugins/example-plugin/components/example-react-button/example-react-button.d.ts +1 -0
- package/dist/projects/player/src/plugins/example-plugin/example-plugin.d.ts +2 -0
- package/dist/projects/player/src/plugins/fullscreen-on-rotate-plugin/fullscreen-on-rotate-plugin.d.ts +1 -0
- package/dist/projects/player/src/plugins/open-externally-plugin/components/open-externally-button.d.ts +1 -0
- package/dist/projects/player/src/plugins/open-externally-plugin/interfaces/ExternalLinkOptions.d.ts +3 -0
- package/dist/projects/player/src/plugins/open-externally-plugin/open-externally-plugin.d.ts +1 -0
- package/dist/projects/player/src/plugins/persist-volume-plugin/persist-volume-plugin.d.ts +1 -0
- package/dist/projects/player/src/plugins/progress-reporter-plugin/progress-reporter-plugin.d.ts +9 -0
- package/dist/projects/player/src/plugins/progressive-files-plugin/ProgressiveFilesPluginOptions.d.ts +4 -0
- package/dist/projects/player/src/plugins/progressive-files-plugin/ProgressiveRepresentation.d.ts +10 -0
- package/dist/projects/player/src/plugins/progressive-files-plugin/interfaces/Source.d.ts +6 -0
- package/dist/projects/player/src/plugins/progressive-files-plugin/progressive-files-plugin.d.ts +38 -0
- package/dist/projects/player/src/plugins/touch-controls-plugin/components/touch-controls/touch-controls.d.ts +59 -0
- package/dist/projects/player/src/plugins/touch-controls-plugin/touch-controls-plugin.d.ts +1 -0
- package/dist/projects/player/src/react/CreateClipPlayer.d.ts +3 -0
- package/dist/projects/player/src/react/EmbeddedPlayer.d.ts +7 -0
- package/dist/projects/player/src/react/Player.d.ts +8 -0
- package/dist/projects/player/src/react/react-component.d.ts +56 -0
- package/dist/projects/player/src/services/analytics-service.d.ts +15 -0
- package/dist/projects/player/src/utils/ajax-helper.d.ts +6 -0
- package/dist/projects/player/src/utils/fn.d.ts +14 -0
- package/dist/projects/player/src/utils/formatTime.d.ts +5 -0
- package/dist/projects/player/src/utils/hotkeys.d.ts +5 -0
- package/dist/projects/player/src/utils/scrollbar-helper.d.ts +6 -0
- package/dist/projects/player/src/utils/track-helper.d.ts +7 -0
- package/dist/scripts/0-171f181888.chunk.js +1 -0
- package/dist/scripts/1-7259e8a8bb.chunk.js +17 -0
- package/dist/scripts/10-66b105c2d8.chunk.js +1 -0
- package/dist/scripts/13-8c3673e075.chunk.js +1 -0
- package/dist/scripts/14-4bc696763a.chunk.js +1 -0
- package/dist/scripts/15-043e863dfb.chunk.js +1 -0
- package/dist/scripts/16-72a65d16e6.chunk.js +1 -0
- package/dist/scripts/17-067ea21652.chunk.js +1 -0
- package/dist/scripts/18-b4fa1e52f9.chunk.js +1 -0
- package/dist/scripts/19-e3599f7685.chunk.js +1 -0
- package/dist/scripts/2-370c1659a0.chunk.js +1 -0
- package/dist/scripts/20-0443e17d0b.chunk.js +1 -0
- package/dist/scripts/21-036b228cd8.chunk.js +1 -0
- package/dist/scripts/22-cfa11ae67b.chunk.js +1 -0
- package/dist/scripts/23-11a05b88f7.chunk.js +1 -0
- package/dist/scripts/24-c5c0ed3eb9.chunk.js +1 -0
- package/dist/scripts/25-83f2683f6f.chunk.js +1 -0
- package/dist/scripts/26-8e1ef2b8d3.chunk.js +1 -0
- package/dist/scripts/27-9cecba37e9.chunk.js +1 -0
- package/dist/scripts/28-4e578edcd5.chunk.js +1 -0
- package/dist/scripts/29-685b428459.chunk.js +1 -0
- package/dist/scripts/3-ef3041edd1.chunk.js +1 -0
- package/dist/scripts/30-e7d4add37c.chunk.js +1 -0
- package/dist/scripts/31-407fbd904c.chunk.js +53 -0
- package/dist/scripts/32-8434ce7c95.chunk.js +1 -0
- package/dist/scripts/33-134c778b95.chunk.js +1 -0
- package/dist/scripts/34-cb4f70d168.chunk.js +1 -0
- package/dist/scripts/35-4914b2c89e.chunk.js +1 -0
- package/dist/scripts/36-d2e13bd4e3.chunk.js +1 -0
- package/dist/scripts/37-def89fece7.chunk.js +1 -0
- package/dist/scripts/38-68ddb948f5.chunk.js +1 -0
- package/dist/scripts/39-d4f47b0420.chunk.js +1 -0
- package/dist/scripts/4-d626f7c9ff.chunk.js +1 -0
- package/dist/scripts/40-94399cfdc9.chunk.js +1 -0
- package/dist/scripts/41-5b0ed56d14.chunk.js +1 -0
- package/dist/scripts/42-c06b10dbbf.chunk.js +1 -0
- package/dist/scripts/{39-5df3077ac3.chunk.js → 43-4cc515550a.chunk.js} +1 -1
- package/dist/scripts/{41-2b44a2e66f.chunk.js → 44-073e6641ea.chunk.js} +1 -1
- package/dist/scripts/45-3a36fa2fd2.chunk.js +1 -0
- package/dist/scripts/46-811abfacf5.chunk.js +1 -0
- package/dist/scripts/47-cf7e05bfc3.chunk.js +1 -0
- package/dist/scripts/48-a49b5ae505.chunk.js +1 -0
- package/dist/scripts/49-02fe5d9da0.chunk.js +1 -0
- package/dist/scripts/5-3c15aff75b.chunk.js +1 -0
- package/dist/scripts/50-2334e58775.chunk.js +1 -0
- package/dist/scripts/51-47c28dfdba.chunk.js +1 -0
- package/dist/scripts/52-8e3cb40ad6.chunk.js +1 -0
- package/dist/scripts/53-46688b7d80.chunk.js +1 -0
- package/dist/scripts/54-c68af93be1.chunk.js +1 -0
- package/dist/scripts/55-6c7d49f405.chunk.js +1 -0
- package/dist/scripts/56-92a06b9806.chunk.js +1 -0
- package/dist/scripts/{55-4874473c9d.chunk.js → 57-16ef135200.chunk.js} +1 -1
- package/dist/scripts/58-1478dbceb8.chunk.js +1 -0
- package/dist/scripts/{56-db73243d04.chunk.js → 59-577a06a87a.chunk.js} +1 -1
- package/dist/scripts/6-68be86ae02.chunk.js +1 -0
- package/dist/scripts/{58-9a32a6fb2d.chunk.js → 60-da28194427.chunk.js} +1 -1
- package/dist/scripts/{58-4d5ed35434.chunk.js → 61-80f7131d9a.chunk.js} +1 -1
- package/dist/scripts/62-3d42c03cc9.chunk.js +1 -0
- package/dist/scripts/63-66e69ffe5b.chunk.js +1 -0
- package/dist/scripts/64-9ef637a2b1.chunk.js +1 -0
- package/dist/scripts/65-cc2384a591.chunk.js +1 -0
- package/dist/scripts/{64-87c1cf6985.chunk.js → 66-68028b1816.chunk.js} +1 -1
- package/dist/scripts/{65-2322082836.chunk.js → 67-dd69ffa06f.chunk.js} +1 -1
- package/dist/scripts/{66-6d5356f6ce.chunk.js → 68-03022ebbd0.chunk.js} +1 -1
- package/dist/scripts/69-e98764fee0.chunk.js +1 -0
- package/dist/scripts/7-760462a280.chunk.js +7 -0
- package/dist/scripts/70-aedca0b4ab.chunk.js +1 -0
- package/dist/scripts/{66-dc4b036321.chunk.js → 71-2f6c3be43a.chunk.js} +1 -1
- package/dist/scripts/8-1fe98a7811.chunk.js +1 -0
- package/dist/scripts/9-a9c57eac6a.chunk.js +1 -0
- package/dist/scripts/bundle-29922f7591.min.js +31 -0
- package/dist/scripts/bundles.json +2 -2
- package/dist/scripts/pdf.worker.entry-167ab971d3.min.worker.js +1 -0
- package/dist/scripts/polyfills-428e62f641.min.js +1 -0
- package/package.json +8 -4
- package/typings/libs/Trackers.d.ts +1 -1
- package/typings/libs/videojs-contrib-quality-levels.d.ts +29 -0
- package/dist/css/0.chunk.css.map +0 -1
- package/dist/css/1.chunk.css +0 -223
- package/dist/css/1.chunk.css.map +0 -1
- package/dist/css/10.chunk.css +0 -106
- package/dist/css/10.chunk.css.map +0 -1
- package/dist/css/11.chunk.css +0 -26
- package/dist/css/11.chunk.css.map +0 -1
- package/dist/css/12.chunk.css +0 -10
- package/dist/css/12.chunk.css.map +0 -1
- package/dist/css/13.chunk.css.map +0 -1
- package/dist/css/14.chunk.css.map +0 -1
- package/dist/css/15.chunk.css.map +0 -1
- package/dist/css/16.chunk.css.map +0 -1
- package/dist/css/17.chunk.css.map +0 -1
- package/dist/css/18.chunk.css.map +0 -1
- package/dist/css/19.chunk.css.map +0 -1
- package/dist/css/2.chunk.css.map +0 -1
- package/dist/css/20.chunk.css.map +0 -1
- package/dist/css/21.chunk.css.map +0 -1
- package/dist/css/22.chunk.css.map +0 -1
- package/dist/css/23.chunk.css.map +0 -1
- package/dist/css/24.chunk.css.map +0 -1
- package/dist/css/25.chunk.css.map +0 -1
- package/dist/css/26.chunk.css.map +0 -1
- package/dist/css/27.chunk.css.map +0 -1
- package/dist/css/28.chunk.css.map +0 -1
- package/dist/css/29.chunk.css.map +0 -1
- package/dist/css/3.chunk.css.map +0 -1
- package/dist/css/30.chunk.css.map +0 -1
- package/dist/css/31.chunk.css +0 -4
- package/dist/css/31.chunk.css.map +0 -1
- package/dist/css/32.chunk.css.map +0 -1
- package/dist/css/33.chunk.css.map +0 -1
- package/dist/css/34.chunk.css.map +0 -1
- package/dist/css/35.chunk.css +0 -6
- package/dist/css/35.chunk.css.map +0 -1
- package/dist/css/36.chunk.css +0 -4
- package/dist/css/36.chunk.css.map +0 -1
- package/dist/css/37.chunk.css.map +0 -1
- package/dist/css/38.chunk.css.map +0 -1
- package/dist/css/39.chunk.css.map +0 -1
- package/dist/css/4.chunk.css.map +0 -1
- package/dist/css/40.chunk.css.map +0 -1
- package/dist/css/41.chunk.css.map +0 -1
- package/dist/css/42.chunk.css +0 -14
- package/dist/css/42.chunk.css.map +0 -1
- package/dist/css/43.chunk.css +0 -38
- package/dist/css/43.chunk.css.map +0 -1
- package/dist/css/44.chunk.css +0 -14
- package/dist/css/44.chunk.css.map +0 -1
- package/dist/css/45.chunk.css.map +0 -1
- package/dist/css/46.chunk.css +0 -52
- package/dist/css/46.chunk.css.map +0 -1
- package/dist/css/47.chunk.css +0 -4
- package/dist/css/5.chunk.css.map +0 -1
- package/dist/css/50.chunk.css +0 -52
- package/dist/css/50.chunk.css.map +0 -1
- package/dist/css/51.chunk.css +0 -2
- package/dist/css/52.chunk.css.map +0 -1
- package/dist/css/53.chunk.css.map +0 -1
- package/dist/css/54.chunk.css.map +0 -1
- package/dist/css/55.chunk.css +0 -2
- package/dist/css/55.chunk.css.map +0 -1
- package/dist/css/56.chunk.css.map +0 -1
- package/dist/css/57.chunk.css.map +0 -1
- package/dist/css/58.chunk.css +0 -43
- package/dist/css/58.chunk.css.map +0 -1
- package/dist/css/59.chunk.css +0 -14
- package/dist/css/59.chunk.css.map +0 -1
- package/dist/css/6.chunk.css.map +0 -1
- package/dist/css/60.chunk.css +0 -43
- package/dist/css/60.chunk.css.map +0 -1
- package/dist/css/7.chunk.css.map +0 -1
- package/dist/css/79.chunk.css +0 -58
- package/dist/css/79.chunk.css.map +0 -1
- package/dist/css/8.chunk.css +0 -54
- package/dist/css/8.chunk.css.map +0 -1
- package/dist/css/82.chunk.css +0 -28
- package/dist/css/82.chunk.css.map +0 -1
- package/dist/css/83.chunk.css +0 -11
- package/dist/css/83.chunk.css.map +0 -1
- package/dist/css/84.chunk.css +0 -152
- package/dist/css/84.chunk.css.map +0 -1
- package/dist/css/85.chunk.css +0 -21
- package/dist/css/85.chunk.css.map +0 -1
- package/dist/css/86.chunk.css +0 -17
- package/dist/css/86.chunk.css.map +0 -1
- package/dist/css/87.chunk.css +0 -21
- package/dist/css/87.chunk.css.map +0 -1
- package/dist/css/88.chunk.css +0 -5
- package/dist/css/88.chunk.css.map +0 -1
- package/dist/css/90.chunk.css +0 -38
- package/dist/css/90.chunk.css.map +0 -1
- package/dist/css/lite-app.css.map +0 -1
- package/dist/libs/common/src/backbone/services/ScrollService.d.ts +0 -19
- package/dist/libs/shared/src/components/svgs/ClickViewLogo.d.ts +0 -2
- package/dist/libs/shared/src/components/thumbnails/video/VideoThumbnailWatchProgressBar.d.ts +0 -8
- package/dist/libs/shared/src/components/video-list/components/video-item-badges/VideoItemBadges.d.ts +0 -7
- package/dist/libs/shared/src/components/video-list/components/video-item-description/UseTruncateText.d.ts +0 -9
- package/dist/libs/shared/src/enums/ThumbnailSize.d.ts +0 -6
- package/dist/libs/shared/src/services/ConfigDataService.d.ts +0 -13
- package/dist/projects/lite/src/apps/upload/views/my-uploads/DismissibleAlert.d.ts +0 -2
- package/dist/projects/lite/src/apps/upload/views/my-uploads/MyUploadsView.d.ts +0 -6
- package/dist/projects/lite/src/apps/user-manager/components/delete-uploaded-student-popup/DeleteUploadedStudentPopup.d.ts +0 -8
- package/dist/projects/lite/src/apps/user-manager/components/delete-uploaded-teacher-popup/DeleteUploadedTeacherPopup.d.ts +0 -8
- package/dist/projects/lite/src/apps/user-manager/components/edit-student-details/EditStudentDetails.d.ts +0 -12
- package/dist/projects/lite/src/apps/user-manager/components/edit-teacher-details/EditTeacherDetails.d.ts +0 -12
- package/dist/projects/lite/src/apps/user-manager/components/index.d.ts +0 -5
- package/dist/projects/lite/src/apps/user-manager/components/manage-users-list/teachers/ManageTeacherItem.d.ts +0 -9
- package/dist/projects/lite/src/apps/user-manager/components/student-review-table/StudentReviewRow.d.ts +0 -11
- package/dist/projects/lite/src/apps/user-manager/components/student-review-table/StudentReviewTable.d.ts +0 -9
- package/dist/projects/lite/src/apps/user-manager/components/teacher-review-table/TeacherReviewRow.d.ts +0 -11
- package/dist/projects/lite/src/apps/user-manager/components/teacher-review-table/TeacherReviewTable.d.ts +0 -9
- package/dist/projects/lite/src/apps/user-manager/components/year-level-select/YearLevelSelect.d.ts +0 -9
- package/dist/projects/lite/src/apps/user-manager/enums/index.d.ts +0 -1
- package/dist/projects/lite/src/apps/user-manager/enums/mocks/MockUserType.d.ts +0 -4
- package/dist/projects/lite/src/apps/user-manager/flight-requests/YearLevelRequests.d.ts +0 -4
- package/dist/projects/lite/src/apps/user-manager/interfaces/mocks/MockStudent.d.ts +0 -10
- package/dist/projects/lite/src/apps/user-manager/interfaces/mocks/MockTeacher.d.ts +0 -8
- package/dist/projects/lite/src/apps/user-manager/interfaces/mocks/MockUserRole.d.ts +0 -3
- package/dist/projects/lite/src/apps/user-manager/interfaces/mocks/MockYearLevel.d.ts +0 -3
- package/dist/projects/lite/src/apps/user-manager/views/create-student/CreateStudentView.d.ts +0 -5
- package/dist/projects/lite/src/apps/user-manager/views/create-teacher/CreateTeacherView.d.ts +0 -5
- package/dist/projects/lite/src/apps/user-manager/views/edit-student/EditStudentView.d.ts +0 -7
- package/dist/projects/lite/src/apps/user-manager/views/edit-teacher/EditTeacherView.d.ts +0 -7
- package/dist/projects/lite/src/apps/user-manager/views/remove-user/RemoveUserView.d.ts +0 -8
- package/dist/projects/lite/src/apps/user-manager/views/school-teacher-manager/empty-state/SchoolTeacherManagerEmptyState.d.ts +0 -2
- package/dist/projects/lite/src/apps/user-manager/views/student-upload-review/StudentUploadReviewView.d.ts +0 -5
- package/dist/projects/lite/src/apps/user-manager/views/teacher-upload-review/TeacherUploadReviewView.d.ts +0 -5
- package/dist/projects/lite/src/shared/components/clips/ClipItem.d.ts +0 -8
- package/dist/projects/lite/src/shared/components/clips/Clips.d.ts +0 -7
- package/dist/projects/lite/src/shared/components/interactives/InteractiveItem.d.ts +0 -7
- package/dist/projects/lite/src/shared/components/interactives/Interactives.d.ts +0 -7
- package/dist/projects/lite/src/shared/components/play-page/Buttons.d.ts +0 -7
- package/dist/projects/lite/src/shared/components/web-player/WebPlayer.d.ts +0 -9
- package/dist/scripts/0-1d51c87483.chunk.js +0 -1
- package/dist/scripts/0-702db3d74c.chunk.js +0 -1
- package/dist/scripts/0-b02efe11fb.chunk.js +0 -1
- package/dist/scripts/0-bf0af5f75c.chunk.js +0 -1
- package/dist/scripts/0.chunk.js +0 -355
- package/dist/scripts/0.chunk.js.map +0 -1
- package/dist/scripts/1-4f19a5caea.chunk.js +0 -17
- package/dist/scripts/1-b20a2dd250.chunk.js +0 -17
- package/dist/scripts/1-d1ce3fe6e8.chunk.js +0 -17
- package/dist/scripts/1-fcddc988fa.chunk.js +0 -17
- package/dist/scripts/1.chunk.js +0 -1031
- package/dist/scripts/1.chunk.js.map +0 -1
- package/dist/scripts/10.chunk.js +0 -619
- package/dist/scripts/10.chunk.js.map +0 -1
- package/dist/scripts/11-32e30d10ce.chunk.js +0 -1
- package/dist/scripts/11-6e7f935551.chunk.js +0 -1
- package/dist/scripts/11-e2f313f85e.chunk.js +0 -1
- package/dist/scripts/11.chunk.js +0 -445
- package/dist/scripts/11.chunk.js.map +0 -1
- package/dist/scripts/12-72a5373486.chunk.js +0 -1
- package/dist/scripts/12-7e1380d9fa.chunk.js +0 -1
- package/dist/scripts/12-c7f5866361.chunk.js +0 -1
- package/dist/scripts/12-fa7004b555.chunk.js +0 -1
- package/dist/scripts/12.chunk.js +0 -1533
- package/dist/scripts/12.chunk.js.map +0 -1
- package/dist/scripts/13-1cd85ad3ee.chunk.js +0 -1
- package/dist/scripts/13-4245983c0a.chunk.js +0 -1
- package/dist/scripts/13-95937e4149.chunk.js +0 -1
- package/dist/scripts/13-ec41bdbbbe.chunk.js +0 -1
- package/dist/scripts/13.chunk.js +0 -469
- package/dist/scripts/13.chunk.js.map +0 -1
- package/dist/scripts/14-03b4af57e1.chunk.js +0 -1
- package/dist/scripts/14-3d60b8ee85.chunk.js +0 -1
- package/dist/scripts/14-62608fc1de.chunk.js +0 -1
- package/dist/scripts/14-eba60049a5.chunk.js +0 -1
- package/dist/scripts/14.chunk.js +0 -930
- package/dist/scripts/14.chunk.js.map +0 -1
- package/dist/scripts/15-379cb5f586.chunk.js +0 -1
- package/dist/scripts/15-3da33fa6d0.chunk.js +0 -1
- package/dist/scripts/15-90226fb996.chunk.js +0 -1
- package/dist/scripts/15-d811a90e8d.chunk.js +0 -1
- package/dist/scripts/15.chunk.js +0 -437
- package/dist/scripts/15.chunk.js.map +0 -1
- package/dist/scripts/16-00e83a6d12.chunk.js +0 -1
- package/dist/scripts/16-885363ce46.chunk.js +0 -1
- package/dist/scripts/16-913b2535ea.chunk.js +0 -1
- package/dist/scripts/16-9fdbeac822.chunk.js +0 -1
- package/dist/scripts/16.chunk.js +0 -633
- package/dist/scripts/16.chunk.js.map +0 -1
- package/dist/scripts/17-2b6bf7febc.chunk.js +0 -1
- package/dist/scripts/17-6d597b8323.chunk.js +0 -1
- package/dist/scripts/17-c62d5aa7f2.chunk.js +0 -1
- package/dist/scripts/17-d6c19ccb60.chunk.js +0 -1
- package/dist/scripts/17.chunk.js +0 -356
- package/dist/scripts/17.chunk.js.map +0 -1
- package/dist/scripts/18-33efcac0c6.chunk.js +0 -1
- package/dist/scripts/18-5affadddcc.chunk.js +0 -1
- package/dist/scripts/18-69049350eb.chunk.js +0 -1
- package/dist/scripts/18-d3af229f1f.chunk.js +0 -1
- package/dist/scripts/18.chunk.js +0 -339
- package/dist/scripts/18.chunk.js.map +0 -1
- package/dist/scripts/19-17ffa1078f.chunk.js +0 -1
- package/dist/scripts/19-2380200cfb.chunk.js +0 -1
- package/dist/scripts/19-d394ae9543.chunk.js +0 -1
- package/dist/scripts/19-f0550464de.chunk.js +0 -1
- package/dist/scripts/19.chunk.js +0 -506
- package/dist/scripts/19.chunk.js.map +0 -1
- package/dist/scripts/2-53e37c2047.chunk.js +0 -1
- package/dist/scripts/2-6aad743aee.chunk.js +0 -1
- package/dist/scripts/2-c47e1da13a.chunk.js +0 -1
- package/dist/scripts/2-f455e81583.chunk.js +0 -1
- package/dist/scripts/2.chunk.js +0 -18851
- package/dist/scripts/2.chunk.js.map +0 -1
- package/dist/scripts/20-81a48ca4fa.chunk.js +0 -1
- package/dist/scripts/20-81c863da2f.chunk.js +0 -1
- package/dist/scripts/20-ca85f0514e.chunk.js +0 -1
- package/dist/scripts/20-e20c4c0645.chunk.js +0 -1
- package/dist/scripts/20.chunk.js +0 -1942
- package/dist/scripts/20.chunk.js.map +0 -1
- package/dist/scripts/21-8b195ab041.chunk.js +0 -1
- package/dist/scripts/21-c28f436ec9.chunk.js +0 -1
- package/dist/scripts/21-ef4a226771.chunk.js +0 -1
- package/dist/scripts/21-f6ff589cb4.chunk.js +0 -1
- package/dist/scripts/21.chunk.js +0 -1544
- package/dist/scripts/21.chunk.js.map +0 -1
- package/dist/scripts/22-8a60335dfb.chunk.js +0 -1
- package/dist/scripts/22-99c04e164f.chunk.js +0 -1
- package/dist/scripts/22-f458cb647a.chunk.js +0 -1
- package/dist/scripts/22-fe35a069b2.chunk.js +0 -1
- package/dist/scripts/22.chunk.js +0 -1338
- package/dist/scripts/22.chunk.js.map +0 -1
- package/dist/scripts/23-028eb81a43.chunk.js +0 -1
- package/dist/scripts/23-62d1922569.chunk.js +0 -1
- package/dist/scripts/23-633a2d5b09.chunk.js +0 -1
- package/dist/scripts/23-bb1e2bfb90.chunk.js +0 -1
- package/dist/scripts/23.chunk.js +0 -749
- package/dist/scripts/23.chunk.js.map +0 -1
- package/dist/scripts/24-68f8df3eca.chunk.js +0 -1
- package/dist/scripts/24-765209316d.chunk.js +0 -1
- package/dist/scripts/24-7924828128.chunk.js +0 -1
- package/dist/scripts/24-a254eb1f32.chunk.js +0 -1
- package/dist/scripts/24.chunk.js +0 -1207
- package/dist/scripts/24.chunk.js.map +0 -1
- package/dist/scripts/25-663dfb4e48.chunk.js +0 -1
- package/dist/scripts/25-7ad07f87d4.chunk.js +0 -1
- package/dist/scripts/25-93218e513e.chunk.js +0 -1
- package/dist/scripts/25-db170bd5e3.chunk.js +0 -1
- package/dist/scripts/25.chunk.js +0 -750
- package/dist/scripts/25.chunk.js.map +0 -1
- package/dist/scripts/26-93c9661292.chunk.js +0 -1
- package/dist/scripts/26-a4a0b97207.chunk.js +0 -1
- package/dist/scripts/26-ef5709d204.chunk.js +0 -1
- package/dist/scripts/26-f3dcacfe4f.chunk.js +0 -1
- package/dist/scripts/26.chunk.js +0 -826
- package/dist/scripts/26.chunk.js.map +0 -1
- package/dist/scripts/27-35820f00f1.chunk.js +0 -1
- package/dist/scripts/27-400831ca44.chunk.js +0 -1
- package/dist/scripts/27-8a4d69f288.chunk.js +0 -1
- package/dist/scripts/27-e844268f38.chunk.js +0 -1
- package/dist/scripts/27.chunk.js +0 -658
- package/dist/scripts/27.chunk.js.map +0 -1
- package/dist/scripts/28-0730152b25.chunk.js +0 -1
- package/dist/scripts/28-22cbd36128.chunk.js +0 -1
- package/dist/scripts/28-853bc5de1f.chunk.js +0 -1
- package/dist/scripts/28-930e7d5870.chunk.js +0 -1
- package/dist/scripts/28.chunk.js +0 -692
- package/dist/scripts/28.chunk.js.map +0 -1
- package/dist/scripts/29-965aa23b96.chunk.js +0 -1
- package/dist/scripts/29-b164ecafe9.chunk.js +0 -1
- package/dist/scripts/29-d6f6b32986.chunk.js +0 -1
- package/dist/scripts/29-e0f2036314.chunk.js +0 -1
- package/dist/scripts/29.chunk.js +0 -562
- package/dist/scripts/29.chunk.js.map +0 -1
- package/dist/scripts/3-02219d10d4.chunk.js +0 -7
- package/dist/scripts/3-0ce5d8bff2.chunk.js +0 -7
- package/dist/scripts/3-a1bd8c9016.chunk.js +0 -7
- package/dist/scripts/3-f64ba09964.chunk.js +0 -7
- package/dist/scripts/3.chunk.js +0 -800
- package/dist/scripts/3.chunk.js.map +0 -1
- package/dist/scripts/30-13106255a1.chunk.js +0 -1
- package/dist/scripts/30-2cfcf52ea1.chunk.js +0 -1
- package/dist/scripts/30-77202cb6be.chunk.js +0 -1
- package/dist/scripts/30-c93abab057.chunk.js +0 -1
- package/dist/scripts/30.chunk.js +0 -767
- package/dist/scripts/30.chunk.js.map +0 -1
- package/dist/scripts/31-1307509953.chunk.js +0 -1
- package/dist/scripts/31-9d4e38eb3e.chunk.js +0 -1
- package/dist/scripts/31-e3ee095203.chunk.js +0 -1
- package/dist/scripts/31-e6a8291d2f.chunk.js +0 -1
- package/dist/scripts/31.chunk.js +0 -468
- package/dist/scripts/31.chunk.js.map +0 -1
- package/dist/scripts/32-40ed1dd894.chunk.js +0 -1
- package/dist/scripts/32-7030dc98ed.chunk.js +0 -1
- package/dist/scripts/32-88a7177e95.chunk.js +0 -1
- package/dist/scripts/32-8ec5bb19f5.chunk.js +0 -1
- package/dist/scripts/32.chunk.js +0 -441
- package/dist/scripts/32.chunk.js.map +0 -1
- package/dist/scripts/33-47b0ac90bd.chunk.js +0 -1
- package/dist/scripts/33-85222ccf93.chunk.js +0 -1
- package/dist/scripts/33-8740c874b3.chunk.js +0 -1
- package/dist/scripts/33-93b8d74603.chunk.js +0 -1
- package/dist/scripts/33.chunk.js +0 -829
- package/dist/scripts/33.chunk.js.map +0 -1
- package/dist/scripts/34-2de007b628.chunk.js +0 -1
- package/dist/scripts/34-6113635e43.chunk.js +0 -1
- package/dist/scripts/34-81e4464339.chunk.js +0 -1
- package/dist/scripts/34-ada5bfd254.chunk.js +0 -1
- package/dist/scripts/34.chunk.js +0 -622
- package/dist/scripts/34.chunk.js.map +0 -1
- package/dist/scripts/35-0ff2658139.chunk.js +0 -1
- package/dist/scripts/35-329132fe49.chunk.js +0 -1
- package/dist/scripts/35-3eb6fe74fc.chunk.js +0 -1
- package/dist/scripts/35-d2fb66920b.chunk.js +0 -1
- package/dist/scripts/35.chunk.js +0 -962
- package/dist/scripts/35.chunk.js.map +0 -1
- package/dist/scripts/36-0532d93a26.chunk.js +0 -1
- package/dist/scripts/36-0d6e16e354.chunk.js +0 -1
- package/dist/scripts/36-3bfbb52684.chunk.js +0 -1
- package/dist/scripts/36-bc85df33de.chunk.js +0 -1
- package/dist/scripts/36.chunk.js +0 -545
- package/dist/scripts/36.chunk.js.map +0 -1
- package/dist/scripts/37-010a76757b.chunk.js +0 -1
- package/dist/scripts/37-10fe5a06a5.chunk.js +0 -1
- package/dist/scripts/37-3e5e429c93.chunk.js +0 -1
- package/dist/scripts/37-e26652840b.chunk.js +0 -1
- package/dist/scripts/37.chunk.js +0 -627
- package/dist/scripts/37.chunk.js.map +0 -1
- package/dist/scripts/38-0b6a6b9619.chunk.js +0 -1
- package/dist/scripts/38-31744f9ae7.chunk.js +0 -1
- package/dist/scripts/38-76dc0e356d.chunk.js +0 -1
- package/dist/scripts/38-d60741eca8.chunk.js +0 -1
- package/dist/scripts/38.chunk.js +0 -943
- package/dist/scripts/38.chunk.js.map +0 -1
- package/dist/scripts/39-4b26fafe13.chunk.js +0 -1
- package/dist/scripts/39-6549f483c6.chunk.js +0 -1
- package/dist/scripts/39-b38f2afcd9.chunk.js +0 -1
- package/dist/scripts/39.chunk.js +0 -585
- package/dist/scripts/39.chunk.js.map +0 -1
- package/dist/scripts/4-0dd0a25c20.chunk.js +0 -1
- package/dist/scripts/4-3b38074599.chunk.js +0 -1
- package/dist/scripts/4-9e83a22d7a.chunk.js +0 -1
- package/dist/scripts/4-d5bec07430.chunk.js +0 -1
- package/dist/scripts/4.chunk.js +0 -403
- package/dist/scripts/4.chunk.js.map +0 -1
- package/dist/scripts/40-2b7ac55647.chunk.js +0 -1
- package/dist/scripts/40-6e3500fafc.chunk.js +0 -1
- package/dist/scripts/40-8e6e9d285f.chunk.js +0 -1
- package/dist/scripts/40-fa1b51a3e0.chunk.js +0 -1
- package/dist/scripts/40.chunk.js +0 -273
- package/dist/scripts/40.chunk.js.map +0 -1
- package/dist/scripts/41-2e358dbf59.chunk.js +0 -1
- package/dist/scripts/41-9a07dd3c06.chunk.js +0 -1
- package/dist/scripts/41-cde309348b.chunk.js +0 -1
- package/dist/scripts/41.chunk.js +0 -252
- package/dist/scripts/41.chunk.js.map +0 -1
- package/dist/scripts/42-4f9c639481.chunk.js +0 -1
- package/dist/scripts/42-680fb45a87.chunk.js +0 -1
- package/dist/scripts/42-9e75f420d8.chunk.js +0 -1
- package/dist/scripts/42-a612da3a86.chunk.js +0 -1
- package/dist/scripts/42.chunk.js +0 -464
- package/dist/scripts/42.chunk.js.map +0 -1
- package/dist/scripts/43-1141245420.chunk.js +0 -1
- package/dist/scripts/43-3818cf7ed2.chunk.js +0 -1
- package/dist/scripts/43-cb8bdb3d8f.chunk.js +0 -1
- package/dist/scripts/43-d2fb4006f3.chunk.js +0 -1
- package/dist/scripts/43.chunk.js +0 -345
- package/dist/scripts/43.chunk.js.map +0 -1
- package/dist/scripts/44-0648e8e28f.chunk.js +0 -1
- package/dist/scripts/44-9bc4201e0f.chunk.js +0 -1
- package/dist/scripts/44-b959741f1f.chunk.js +0 -1
- package/dist/scripts/44-f4e93786c0.chunk.js +0 -1
- package/dist/scripts/44.chunk.js +0 -537
- package/dist/scripts/44.chunk.js.map +0 -1
- package/dist/scripts/45-21e213d97e.chunk.js +0 -1
- package/dist/scripts/45-23e64d06ed.chunk.js +0 -1
- package/dist/scripts/45-586cefa5b3.chunk.js +0 -1
- package/dist/scripts/45-5ded8ca3db.chunk.js +0 -1
- package/dist/scripts/45.chunk.js +0 -221
- package/dist/scripts/45.chunk.js.map +0 -1
- package/dist/scripts/46-273127f163.chunk.js +0 -1
- package/dist/scripts/46-2afd7ee1fb.chunk.js +0 -1
- package/dist/scripts/46-3847eb7655.chunk.js +0 -1
- package/dist/scripts/46-8b4730ff48.chunk.js +0 -1
- package/dist/scripts/46.chunk.js +0 -230
- package/dist/scripts/46.chunk.js.map +0 -1
- package/dist/scripts/47-86e38a1468.chunk.js +0 -1
- package/dist/scripts/47-ab30686138.chunk.js +0 -1
- package/dist/scripts/47-c4c6264df4.chunk.js +0 -1
- package/dist/scripts/47.chunk.js +0 -408
- package/dist/scripts/47.chunk.js.map +0 -1
- package/dist/scripts/48-54817c0e78.chunk.js +0 -1
- package/dist/scripts/48-54db253a8c.chunk.js +0 -1
- package/dist/scripts/48-92bbddf27d.chunk.js +0 -1
- package/dist/scripts/48-d9cd99d55e.chunk.js +0 -1
- package/dist/scripts/48.chunk.js +0 -241
- package/dist/scripts/48.chunk.js.map +0 -1
- package/dist/scripts/49-0826d62735.chunk.js +0 -1
- package/dist/scripts/49-6a65a3f865.chunk.js +0 -1
- package/dist/scripts/49-702676e587.chunk.js +0 -1
- package/dist/scripts/49-f43a08f90b.chunk.js +0 -1
- package/dist/scripts/49.chunk.js +0 -249
- package/dist/scripts/49.chunk.js.map +0 -1
- package/dist/scripts/5-202373c80b.chunk.js +0 -1
- package/dist/scripts/5-52c2070b12.chunk.js +0 -1
- package/dist/scripts/5-974660e17b.chunk.js +0 -1
- package/dist/scripts/5-e47ccdc9aa.chunk.js +0 -1
- package/dist/scripts/5.chunk.js +0 -1161
- package/dist/scripts/5.chunk.js.map +0 -1
- package/dist/scripts/50-76d7668c64.chunk.js +0 -1
- package/dist/scripts/50-8069668f8a.chunk.js +0 -1
- package/dist/scripts/50-af699c531e.chunk.js +0 -1
- package/dist/scripts/50-e94493066c.chunk.js +0 -1
- package/dist/scripts/50.chunk.js +0 -132
- package/dist/scripts/50.chunk.js.map +0 -1
- package/dist/scripts/51-6177cd4126.chunk.js +0 -1
- package/dist/scripts/51-907ccc689c.chunk.js +0 -1
- package/dist/scripts/51-aa7b835007.chunk.js +0 -1
- package/dist/scripts/51-caf124fbb7.chunk.js +0 -1
- package/dist/scripts/51.chunk.js +0 -230
- package/dist/scripts/51.chunk.js.map +0 -1
- package/dist/scripts/52-805f7fe04d.chunk.js +0 -1
- package/dist/scripts/52-96d9beee16.chunk.js +0 -1
- package/dist/scripts/52-d3494312ce.chunk.js +0 -1
- package/dist/scripts/52-dd5dd9f7f7.chunk.js +0 -1
- package/dist/scripts/52.chunk.js +0 -318
- package/dist/scripts/52.chunk.js.map +0 -1
- package/dist/scripts/53-7d97e2f664.chunk.js +0 -1
- package/dist/scripts/53-b24c780288.chunk.js +0 -1
- package/dist/scripts/53-be20bb20c9.chunk.js +0 -1
- package/dist/scripts/53-d75ca53045.chunk.js +0 -1
- package/dist/scripts/53.chunk.js +0 -212
- package/dist/scripts/53.chunk.js.map +0 -1
- package/dist/scripts/54-2e75bad46f.chunk.js +0 -1
- package/dist/scripts/54-603f252394.chunk.js +0 -1
- package/dist/scripts/54-fdfdb33705.chunk.js +0 -1
- package/dist/scripts/54.chunk.js +0 -108
- package/dist/scripts/54.chunk.js.map +0 -1
- package/dist/scripts/55-306c5a0e4d.chunk.js +0 -1
- package/dist/scripts/55-ed637c4847.chunk.js +0 -1
- package/dist/scripts/55-eea39b3205.chunk.js +0 -1
- package/dist/scripts/55.chunk.js +0 -69
- package/dist/scripts/55.chunk.js.map +0 -1
- package/dist/scripts/56-20237748ba.chunk.js +0 -1
- package/dist/scripts/56-2ed3b5764b.chunk.js +0 -1
- package/dist/scripts/56-ca513946cf.chunk.js +0 -1
- package/dist/scripts/56.chunk.js +0 -209
- package/dist/scripts/56.chunk.js.map +0 -1
- package/dist/scripts/57-d5c787b4e3.chunk.js +0 -1
- package/dist/scripts/57-dfacc1ad90.chunk.js +0 -1
- package/dist/scripts/57-e51101c8a1.chunk.js +0 -1
- package/dist/scripts/57-e76b06192a.chunk.js +0 -1
- package/dist/scripts/57.chunk.js +0 -211
- package/dist/scripts/57.chunk.js.map +0 -1
- package/dist/scripts/58-a8612894ef.chunk.js +0 -1
- package/dist/scripts/58-bb756b517d.chunk.js +0 -1
- package/dist/scripts/58.chunk.js +0 -113
- package/dist/scripts/58.chunk.js.map +0 -1
- package/dist/scripts/59-18ef4c5afb.chunk.js +0 -1
- package/dist/scripts/59-ad37f90eca.chunk.js +0 -1
- package/dist/scripts/59-da8a8c97a9.chunk.js +0 -1
- package/dist/scripts/59-f42476f89d.chunk.js +0 -1
- package/dist/scripts/59.chunk.js +0 -108
- package/dist/scripts/59.chunk.js.map +0 -1
- package/dist/scripts/6-0a53c42432.chunk.js +0 -1
- package/dist/scripts/6-6ac39034e0.chunk.js +0 -1
- package/dist/scripts/6-8ada925fb7.chunk.js +0 -1
- package/dist/scripts/6-bf7446464f.chunk.js +0 -1
- package/dist/scripts/6.chunk.js +0 -423
- package/dist/scripts/6.chunk.js.map +0 -1
- package/dist/scripts/60-41208378cc.chunk.js +0 -1
- package/dist/scripts/60-5713de53e2.chunk.js +0 -1
- package/dist/scripts/60-81ac7ce262.chunk.js +0 -1
- package/dist/scripts/60-f95d0a0a90.chunk.js +0 -1
- package/dist/scripts/60.chunk.js +0 -110
- package/dist/scripts/60.chunk.js.map +0 -1
- package/dist/scripts/61-41c8cb7e0f.chunk.js +0 -1
- package/dist/scripts/61-7d2ad17963.chunk.js +0 -1
- package/dist/scripts/61-85e73cde67.chunk.js +0 -1
- package/dist/scripts/61-8ce5227508.chunk.js +0 -1
- package/dist/scripts/61.chunk.js +0 -161
- package/dist/scripts/61.chunk.js.map +0 -1
- package/dist/scripts/62-62d450716a.chunk.js +0 -1
- package/dist/scripts/62-94874205ae.chunk.js +0 -1
- package/dist/scripts/62-a0a69501ac.chunk.js +0 -1
- package/dist/scripts/62.chunk.js +0 -145
- package/dist/scripts/62.chunk.js.map +0 -1
- package/dist/scripts/63-870238c0d7.chunk.js +0 -1
- package/dist/scripts/63-91623df29f.chunk.js +0 -1
- package/dist/scripts/63-c921b87f3f.chunk.js +0 -1
- package/dist/scripts/63-d423dd59f5.chunk.js +0 -1
- package/dist/scripts/63.chunk.js +0 -139
- package/dist/scripts/63.chunk.js.map +0 -1
- package/dist/scripts/64-c0e959f4bb.chunk.js +0 -1
- package/dist/scripts/64-d280e018c4.chunk.js +0 -1
- package/dist/scripts/64.chunk.js +0 -142
- package/dist/scripts/64.chunk.js.map +0 -1
- package/dist/scripts/65-37ba4bad15.chunk.js +0 -1
- package/dist/scripts/65-3c772a4624.chunk.js +0 -1
- package/dist/scripts/65-f94e7ab2ef.chunk.js +0 -1
- package/dist/scripts/65.chunk.js +0 -170
- package/dist/scripts/65.chunk.js.map +0 -1
- package/dist/scripts/66-a6ac298fa2.chunk.js +0 -1
- package/dist/scripts/66-faeadaa25e.chunk.js +0 -1
- package/dist/scripts/66.chunk.js +0 -172
- package/dist/scripts/66.chunk.js.map +0 -1
- package/dist/scripts/67-2e0d661c52.chunk.js +0 -1
- package/dist/scripts/67-edfc0ba1e9.chunk.js +0 -1
- package/dist/scripts/67.chunk.js +0 -173
- package/dist/scripts/67.chunk.js.map +0 -1
- package/dist/scripts/68.chunk.js +0 -165
- package/dist/scripts/68.chunk.js.map +0 -1
- package/dist/scripts/69.chunk.js +0 -102
- package/dist/scripts/69.chunk.js.map +0 -1
- package/dist/scripts/7-0917af7a17.chunk.js +0 -1
- package/dist/scripts/7-096f5703bd.chunk.js +0 -1
- package/dist/scripts/7-5ac5be64dd.chunk.js +0 -1
- package/dist/scripts/7-81162e12a2.chunk.js +0 -1
- package/dist/scripts/7.chunk.js +0 -2629
- package/dist/scripts/7.chunk.js.map +0 -1
- package/dist/scripts/70.chunk.js +0 -60
- package/dist/scripts/70.chunk.js.map +0 -1
- package/dist/scripts/71.chunk.js +0 -65
- package/dist/scripts/71.chunk.js.map +0 -1
- package/dist/scripts/72.chunk.js +0 -37
- package/dist/scripts/72.chunk.js.map +0 -1
- package/dist/scripts/73.chunk.js +0 -65
- package/dist/scripts/73.chunk.js.map +0 -1
- package/dist/scripts/74.chunk.js +0 -67
- package/dist/scripts/74.chunk.js.map +0 -1
- package/dist/scripts/75.chunk.js +0 -104
- package/dist/scripts/75.chunk.js.map +0 -1
- package/dist/scripts/76.chunk.js +0 -123
- package/dist/scripts/76.chunk.js.map +0 -1
- package/dist/scripts/77.chunk.js +0 -1001
- package/dist/scripts/77.chunk.js.map +0 -1
- package/dist/scripts/78.chunk.js +0 -36
- package/dist/scripts/78.chunk.js.map +0 -1
- package/dist/scripts/79.chunk.js +0 -1001
- package/dist/scripts/79.chunk.js.map +0 -1
- package/dist/scripts/8-0853e12e22.chunk.js +0 -1
- package/dist/scripts/8-7dc2d39ce2.chunk.js +0 -1
- package/dist/scripts/8-95563e3d36.chunk.js +0 -1
- package/dist/scripts/8-a89310bd50.chunk.js +0 -1
- package/dist/scripts/8.chunk.js +0 -24
- package/dist/scripts/8.chunk.js.map +0 -1
- package/dist/scripts/80.chunk.js +0 -36
- package/dist/scripts/80.chunk.js.map +0 -1
- package/dist/scripts/81.chunk.js +0 -619
- package/dist/scripts/81.chunk.js.map +0 -1
- package/dist/scripts/82.chunk.js +0 -437
- package/dist/scripts/82.chunk.js.map +0 -1
- package/dist/scripts/83.chunk.js +0 -633
- package/dist/scripts/83.chunk.js.map +0 -1
- package/dist/scripts/84.chunk.js +0 -1938
- package/dist/scripts/84.chunk.js.map +0 -1
- package/dist/scripts/85.chunk.js +0 -692
- package/dist/scripts/85.chunk.js.map +0 -1
- package/dist/scripts/86.chunk.js +0 -829
- package/dist/scripts/86.chunk.js.map +0 -1
- package/dist/scripts/87.chunk.js +0 -622
- package/dist/scripts/87.chunk.js.map +0 -1
- package/dist/scripts/88.chunk.js +0 -962
- package/dist/scripts/88.chunk.js.map +0 -1
- package/dist/scripts/89.chunk.js +0 -943
- package/dist/scripts/89.chunk.js.map +0 -1
- package/dist/scripts/9-9865a75c99.chunk.js +0 -1
- package/dist/scripts/9.chunk.js +0 -327
- package/dist/scripts/9.chunk.js.map +0 -1
- package/dist/scripts/90.chunk.js +0 -345
- package/dist/scripts/90.chunk.js.map +0 -1
- package/dist/scripts/91.chunk.js +0 -108
- package/dist/scripts/91.chunk.js.map +0 -1
- package/dist/scripts/92.chunk.js +0 -110
- package/dist/scripts/92.chunk.js.map +0 -1
- package/dist/scripts/93.chunk.js +0 -165
- package/dist/scripts/93.chunk.js.map +0 -1
- package/dist/scripts/94.chunk.js +0 -102
- package/dist/scripts/94.chunk.js.map +0 -1
- package/dist/scripts/95.chunk.js +0 -65
- package/dist/scripts/95.chunk.js.map +0 -1
- package/dist/scripts/96.chunk.js +0 -65
- package/dist/scripts/96.chunk.js.map +0 -1
- package/dist/scripts/97.chunk.js +0 -67
- package/dist/scripts/97.chunk.js.map +0 -1
- package/dist/scripts/98.chunk.js +0 -104
- package/dist/scripts/98.chunk.js.map +0 -1
- package/dist/scripts/99.chunk.js +0 -123
- package/dist/scripts/99.chunk.js.map +0 -1
- package/dist/scripts/bundle-0958accd59.min.js +0 -15
- package/dist/scripts/bundle-9ed1e126dd.min.js +0 -15
- package/dist/scripts/bundle-a520bd54ca.min.js +0 -15
- package/dist/scripts/bundle-fef50e5bb9.min.js +0 -15
- package/dist/scripts/bundle.js +0 -47069
- package/dist/scripts/bundle.js.map +0 -1
- package/dist/scripts/pdf.worker.entry.worker.js +0 -46239
- package/dist/scripts/pdf.worker.entry.worker.js.map +0 -1
- package/dist/scripts/polyfills-1f23e4a487.min.js +0 -1
- package/dist/scripts/polyfills-2723daf478.min.js +0 -1
- package/dist/scripts/polyfills-384beac1bd.min.js +0 -1
- package/dist/scripts/polyfills-8a0101e5f1.min.js +0 -1
- package/dist/scripts/polyfills.js +0 -15254
- package/dist/scripts/polyfills.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/projects/lite/webpack/universalModuleDefinition","file://C:/ClickView Projects/@clickview/packages/projects/lite/webpack/bootstrap","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/AbortController.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/Errors.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/HttpClient.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/HubConnection.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/ILogger.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/ITransport.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/Loggers.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/NodeHttpClient.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/Subject.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/Utils.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","file://C:/ClickView Projects/@clickview/node_modules/@microsoft/signalr/dist/esm/index.js","file://C:/ClickView Projects/@clickview/node_modules/base64-js/index.js","file://C:/ClickView Projects/@clickview/node_modules/buffer/index.js","file://C:/ClickView Projects/@clickview/node_modules/dropzone/dist/dropzone.js","file://C:/ClickView Projects/@clickview/node_modules/ieee754/index.js","file://C:/ClickView Projects/@clickview/node_modules/isarray/index.js","file://C:/ClickView Projects/@clickview/node_modules/js-cookie/src/js.cookie.js","file://C:/ClickView Projects/@clickview/node_modules/jssha/dist/sha1.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify-string.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/parser.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/scanner.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/state.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/tokens/create-token-class.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/tokens/multi.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/tokens/text.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/utils/class.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/utils/options.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/string.js","file://C:/ClickView Projects/@clickview/node_modules/reselect/es/index.js","file://C:/ClickView Projects/@clickview/node_modules/webpack/buildin/global.js","file://C:/ClickView Projects/@clickview/node_modules/webpack/buildin/module.js","file://C:/ClickView Projects/@clickview/node_modules/whatwg-fetch/fetch.js","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/Analytics.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/AnalyticsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/AnalyticsService.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/clients/BaseAnalyticsClient.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/clients/CollectionApiClient.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/clients/DebuggerClient.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/ApplicationOptionsKey.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/CountryRegionMapping.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/EventFirehose.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/GlobalChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/Regions.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/Services.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enrichers/BaseAnalyticsEnricher.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enrichers/CoreContextEnricher.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enrichers/UserDataEnricher.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enums/CountryCode.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enums/RegionName.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/interfaces/AnalyticsTypes.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/interfaces/User.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/models/AnalyticsEvent.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/services/ContextService.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/transport/EventTransport.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/CollectionApiClientHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/DataFormatHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/EventWhitelistHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/TypeHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/UploadDataFormatHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/UrlHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/UserAgentHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/VideoDataFormatHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/BehaviorChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/Caches.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/CommonChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/CommonServices.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/DataProviders.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/AppLink.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseAppRouter.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseApplication.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseCollection.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseCollectionView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseLayoutView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseModel.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseNestedModel.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/EventNames.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/LayoutService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/ListenToRadio.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/LocationUtils.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/Middleware.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/Shell.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/DataServiceErrorType.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/HttpStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/HttpVerbs.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/errors/DevError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/errors/NotImplementedError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/interfaces/BaseCollectionIdentifier.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/interfaces/DataServiceError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/BaseAlertService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/BaseDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/EnvironmentVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/InstanceManager.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/LanguageService.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/ScrollService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/ViewModelService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/caches/FifoMemoryCache.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/data-providers/AjaxDataProvider.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/data-providers/SignalRDataProvider.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/ConcurrencyHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/DataServiceErrorHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/FunctionHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/LocalStorageHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/UrlHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/UserAgentHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/components/BackboneViewWrapper.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/constants/ViewModelActions.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/context/PageTitleContext.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/core/ReactApplication.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/core/ReactLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightHelpers.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightMiddleware.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightReducer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightSimulator.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/constants/Actions.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/constants/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/data-layers/AjaxRequest.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/data-layers/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/enums/RequestStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/enums/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/Denormalizer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/Normalizer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/SimulatorHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/StateHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseInstance.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseRenderBackboneView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseSetPageTitle.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/useViewModel.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/middleware/ApplicationMiddleware.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/reducers/ApplicationDataReducer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/reducers/ViewModelReducer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/ArrayHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/ObjectHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/PageTitleHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/RandomHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/TextHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/TimeHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/collections/NotificationCollection.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/notification-item/NotificationItem.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/notification-item/NotificationItemComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/notification-item/notification-item.scss?d156","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/partial-loading/NotificationsPartial.hbs","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/partial-loading/notification-partial.scss?ed71","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-list/NotificationList.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-list/NotificationListComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-status/NotificationStatus.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-status/NotificationStatusComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-status/notification-status.scss?5641","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/AppLinkReferrer.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationActions.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationAlertType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationAppLinkModules.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationModules.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/models/Notification.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/services/NotificationDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/services/NotificationService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/services/NotificationSocketService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/services/data-providers/NotificationsSocketDataProvider.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/utils/NotificationAppLinkHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/utils/NotificationsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/header/NotificationHeader.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/header/NotificationHeaderView.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/header/notification-header.scss?3cc9","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/popover/NotificationsPopover.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/popover/NotificationsPopoverView.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/enums/PlaylistSortType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/utils/PlaylistSortHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/confirm-selection/ConfirmSelection.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/confirm-selection/ConfirmSelectionComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/confirm-selection/confirm-selection.scss?1e4e","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/classification/ClassificationSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/classification/ClassificationSearchResultComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/classification/classification-search-result.scss?7f5f","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/recent-search/RecentSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/recent-search/RecentSearchResultComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/recent-search/recent-search.scss?0ca7","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/series/SeriesSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/series/SeriesSearchResultComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/tag/TagSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/tag/TagSearchResultComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/video-result/VideoSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/video-result/VideoSearchResultComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-context/SearchContext.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-context/SearchContextComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-context/search-context.scss?4f93","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-tips/SearchTipItem.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-tips/SearchTips.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-tips/SearchTipsComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-tips/search-tips.scss?8be1","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/constants/TypeaheadConfiguration.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/enums/SearchQueryType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/enums/SearchTypes.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/models/Query.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/services/ContextualSearchService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/utils/InstantSearchHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/utils/RecentSearchHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/utils/SearchHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/utils/TypeaheadHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/SearchBar.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/SearchBarView.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/partial/SearchBarPartial.hbs","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/partial/search-bar-partial.scss?5769","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/search.scss?29a7","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/DirectSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/FolderResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/Loading.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/NoLibraries.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/NotFound.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/RecentSearchHeader.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/ResultFooter.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/ResultHeader.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/enums/ClassificationMemberType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/collections/PendingItemsCollection.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/constants/UploadConstants.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/enums/FileLifestyle.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/enums/PendingItemStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/errors/file-type/FileTypeError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/errors/internet-connectivity/InternetConnectivityError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/services/BasePendingItemsService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/services/DropzoneWrapper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/services/UploadService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/utils/PendingItemsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/Alert.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/AlertContent.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/AlertList.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/alert.scss?d6f6","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/app-link/AppLink.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/avatar/Avatar.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/avatar/avatar.scss?7f4f","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/file-select-button/FileSelectButton.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/icon-button/IconButton.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/icon-button/icon-button.scss?5d3a","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/Popup.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/PopupButtons.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/PopupLoadingSpinner.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/series-link/SeriesLink.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/series-link/series-link.scss?011d","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/spinner-button/SpinnerButton.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/svg-container/SvgContainer.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/svg-container/SvgContainer2.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/svgs/clickview-logo/ClickViewLogo.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/text/Text.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/tooltip/Tooltip.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/AppVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/BootstrapKeys.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/CacheDurations.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/DataPrefixes.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/LayoutRegions.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/RadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/SharedServices.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/WithStatements.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/context/VideoActionsContext.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/CountryCode.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/CurationStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/CustomerType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/Images.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/LibraryType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/MasterType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/MediaQueries.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/PartialLoading.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/PendingProcessOrigin.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/SettingKind.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/SettingName.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/SubtitleExtractionOptions.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/UserRole.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/VideoOrigin.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/errors/primitives/AlertError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/errors/primitives/DialogError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/errors/primitives/ErrorPageError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/ClassificationRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/ConfigRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/UserRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseGetMediaQueryString.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseMediaQuery.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/ImportedSvgs.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/add-to-playlist.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/close.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/delete.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/edit-clickview.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/edit.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/expand.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/minus.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/more.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/new-window.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/no-edit.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/plus.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/preview.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/search.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/share.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/share2.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/up-down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/upload.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/visible-off.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/visible-on.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/arrow-left.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/arrow-right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/caret.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-left.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-up.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/enter.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/archive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/bell.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/bookmark.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/broadcast.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/calendar.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/cog.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/compass.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/email.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-excel.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-img.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-pdf.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-ppt.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-word.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-zip.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/folder.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/handle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/heart-outline.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/heart.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/history.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/interactive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/link.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/playlist.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/publisher-archive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/resources.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/series.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/star-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/star.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/subject.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/subjects.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/tag.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/time.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/video.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/white-wave.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/year-level.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/close-caption.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/contract.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/full-screen.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/mute.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/next.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/pause.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/play-circle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/play.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/previous.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-240.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-480.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-hd.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/volume.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/settings.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check-circle-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check-circle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/close-caption-badge.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/info.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/lock.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/question.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/verified.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/visible-off.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/visible-on.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/warning-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/warning.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/app-variables/BaseNotificationsAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/app-variables/BaseSearchAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/app-variables/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/models/Widget.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/models/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/behaviors/empty-state/EmptyStateBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/behaviors/popover/PopoverBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/behaviors/tooltip/TooltipBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/empty-state/EmptyState.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/empty-state/EmptyStateComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/thumbnail/Thumbnail.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/thumbnail/ThumbnailComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/thumbnail/thumbnail.scss?761d","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/constants/empty-state-components/EmptyStateComponents.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/constants/empty-state-components/empty-state.scss?efb9","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/enums/EmptyState.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/enums/SortType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/interfaces/CollectionIdentifier.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/utils/EmptyStateHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/utils/LangHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/AppOptionsService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/ConfigDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/ContextService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/ImageUrlService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/LanguageDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/UserDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/DurationHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/ImageHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/LibraryDataServiceHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/MaskHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/NumberHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/SvgHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/UserHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/video-actions/VideoActionsHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/app.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/classrooms/LiteClassroomsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/classrooms/flight-requests/ClassroomRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/content-updates/LiteContentUpdatesApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/content-updates/utils/LiteContentUpdateAppLinks.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/content-updates/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/dashboard/LiteDashboardApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/default/LiteDefaultApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/embed/LiteEmbedApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/notifications/LiteNotificationsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/notifications/constants/NotificationsAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/LitePlaylistsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/search/LiteSearchApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/search/constants/SearchAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/settings/LiteSettingsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/subjects/LiteSubjectApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/subjects/constants/SubjectsAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/LiteUploadApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/components/upload-file-select/UploadFileSelect.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/services/CombineUploadsService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/services/FlightVideoUploadDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/services/VideoUploadService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/user-manager/LiteUserManagerApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/watch-history/LiteWatchHistoryApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/components/floating-player/FloatingPlayer.tsx","webpack://@clickview/lite/./src/shared/components/floating-player/floating-player.scss?45d5","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/components/user-options/UserOptions.tsx","webpack://@clickview/lite/./src/shared/components/user-options/user-options.scss?42b3","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/components/web-player/WebPlayer.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/DefaultAlertHeading.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/ImageUrls.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteActions.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteLayoutRegions.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteLayouts.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteRadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteViewModels.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/RadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/Services.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/WithStatements.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/enums/LeftNavId.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/general/not-found/LiteNotFoundError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/general/private-resource/PrivateResourceError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/general/region-locked-resource/RegionLockedResourceError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/general/unspecified-error/UnspecifiedError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/playlists/playlist-not-found/LitePlaylistNotFoundError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/playlists/playlist-private/PlaylistPrivateError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/videos/video-not-found/LiteVideoNotFoundError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/videos/video-private/VideoPrivateError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/filters/OnboardingFilter.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/filters/VerifiedEmailFilter.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/flight-requests/VideoRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/hooks/useInitPlayerContext.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/hooks/useNavLock.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/embed-layout/EmbedLayout.hbs","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/embed-layout/EmbedLayoutComponent.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/embed-layout/EmbedLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/teacher-layout/TeacherLayout.hbs","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/teacher-layout/TeacherLayoutComponent.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/teacher-layout/TeacherLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/teacher-layout/drag-mask/DragMask.tsx","webpack://@clickview/lite/./src/shared/layouts/teacher-layout/drag-mask/drag-mask.scss?5197","webpack://@clickview/lite/./src/shared/layouts/teacher-layout/teacher-layout.scss?a910","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/services/FlightLibraryDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/services/FlightSeriesDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/services/FlightUserDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/services/FlightVideoDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/services/SettingsDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/utils/DialogHelper.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/utils/LeftNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/header/HeaderView.tsx","webpack://@clickview/lite/./src/shared/views/header/header.scss?b5af","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/CollapsedLeftNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/ExpandedLeftNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/LeftNavItem.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/LeftNavView.tsx","webpack://@clickview/lite/./src/shared/views/left-nav/left-nav.scss?4792","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/partial-loading/PartialLeftNavItem.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterAjaxMiddleware.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterAnalytics.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterAppOptions.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterApplicationVariables.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterApplications.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterCaches.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterDataProviders.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterDataServices.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterErrorHandlers.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterHandlebarsHelpers.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterLayouts.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterRuntimeEnvironment.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterServices.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterStore.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterViewDataExtensions.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/styles/index.ts","webpack://@clickview/lite/./src/styles/theme-overrides.scss?012e","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"FontAwesome\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ImmersiveReader\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Backbone\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Marionette\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Bloodhound\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"DOMPurify\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Handlebars\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"marked\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"moment\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Polyglot\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"React\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Autosuggest\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactBootstrap\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactCustomScrollbars\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactDOM\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"reactDropzone\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactIntersectionObserver\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactRedux\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"SortableHOC\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactTransitionGroup\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Redux\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"_\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;QACA;QACA;;;QAGA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;;;QAGA;QACA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;;;QAIA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;QACA,oBAAoB;QACpB;QACA;QACA;QACA;QACA;QACA;QACA,mBAAmB,6BAA6B;QAChD;QACA;QACA;QACA;QACA;QACA,mBAAmB,8BAA8B;QACjD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA,KAAK;QACL;QACA,KAAK;QACL;;QAEA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;;;;;;;;;;;;;ACnPA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AAC0B;AAC3B,2C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACI;AACQ;AACF;AAChD,+BAA+B,oCAAoC;AACnE;AACA;AACA,uCAAuC,2CAA2C,sBAAsB,iCAAiC;AACzI;AACA;AACA;AACA,mCAAmC,4DAAa;AAChD;AACA;AACA,mCAAmC,8DAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kDAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACiB;AAC7B,6C;;;;;;;;;;;;AClDA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiC;AAClC,kD;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;AACrB;AACA;AACA;AACA,sCAAsC,sCAAsC;AAC5E;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,sCAAsC,sCAAsC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,sCAAsC,qCAAqC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB,kC;;;;;;;;;;;;AC5EA;AAAA;AAAA;AAAA;AAAA;AACA;AACwD;AAChB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oEAAiB;AAChC;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAa;AACzB;AACA;AACA,oDAAoD,oEAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,oEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oEAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B,6C;;;;;;;;;;;;;ACvDA;AAAA;AAAA;AAAA;AACA;AACA,gBAAgB,SAAI,IAAI,SAAI;AAC5B,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY,0BAA0B;AAC1E;AACA;AACA,oCAAoC,YAAY,2BAA2B;AAC3E;AACA;AACA,oCAAoC,YAAY,6BAA6B;AAC7E;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB,sC;;;;;;;;;;;;AChDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACwD;AACnB;AAC4B;AACH;AACU;AAClB;AACI;AAC1D;AACA;AACA;AACA,IAAI,+CAAQ,WAAW,UAAc;AACrC;AACA;AACA,sBAAsB,KAAyC,GAAG,OAAuB,GAAG,SAAO;AACnG;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA,QAAQ,0CAAG;AACX,sBAAsB,2DAAY;AAClC;AACA;AACA;AACA,aAAa,+CAAQ;AACrB;AACA;AACA,iBAAiB,+CAAQ;AACzB;AACA;AACA;AACA;AACA,aAAa,+CAAQ;AACrB;AACA;AACA,iBAAiB,+CAAQ;AACzB;AACA;AACA;AACA;AACA,oDAAoD,oEAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,0DAAc;AACzE,wBAAwB,0CAAG,sBAAsB,0DAAc;AAC/D,wCAAwC,iDAAQ,uDAAuD,0DAAc;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,6DAAiB;AAC1E;AACA,iEAAiE,6DAAiB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,sBAAsB;AAC3G;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0EAAoB;AAC1E;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,iBAAiB,6DAAiB;AAClC;AACA;AACA;AACA,2BAA2B,sEAAkB;AAC7C,iBAAiB,6DAAiB;AAClC;AACA;AACA;AACA,2BAA2B,oFAAyB;AACpD,iBAAiB,6DAAiB;AAClC,2BAA2B,0EAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gCAAgC;AAC/E;AACA;AACA;AACA,wBAAwB,6DAAiB;AACzC;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA;AACA,iFAAiF,QAAQ,0DAAc,IAAI,EAAE;AAC7G;AACA,uCAAuC,6DAAiB;AACxD,uCAAuC,6DAAiB;AACxD,wCAAwC,iDAAQ,iCAAiC,6DAAiB;AAClG,+CAA+C,6DAAiB;AAChE;AACA;AACA,wCAAwC,iDAAQ,kCAAkC,6DAAiB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iDAAQ,iCAAiC,6DAAiB,gFAAgF,0DAAc;AAC5L,2CAA2C,6DAAiB,sCAAsC,0DAAc;AAChH;AACA;AACA;AACA,gCAAgC,iDAAQ,iCAAiC,6DAAiB;AAC1F,uCAAuC,6DAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA,iCAAiC,iDAAQ;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iDAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,+CAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,KAAK,EAAE,EAAwB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,yDAAyD,qBAAqB,EAAE,0BAA0B,cAAc,EAAE;AAC1H;AACA;AACA,uDAAuD,4BAA4B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,0C;;;;;;;;;;;;AChrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACwD;AACX;AACR;AACD;AACN;AAC9B;AACA;AACA,wCAAwC,oBAAoB;AACrD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX,QAAQ,0CAAG;AACX,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oEAAiB;AACtD,qDAAqD,wCAAwC;AAC7F,oDAAoD,sCAAsC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,OAAO,yDAAW,OAAO;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA,wBAAwB,iDAAQ;AAChC;AACA;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,0BAA0B,gDAAO;AACjC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,yDAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yDAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,wBAAwB;AAC3E;AACA;AACA,yBAAyB,yDAAW;AACpC;AACA;AACA,yBAAyB,yDAAW;AACpC,yBAAyB,yDAAW;AACpC;AACA;AACA,iDAAiD,yDAAW;AAC5D;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAW;AACpC;AACA;AACA,yBAAyB,yDAAW;AACpC,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,yDAAyD,8BAA8B,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,oDAAoD,EAAE;AACpG;AACA;AACA,gCAAgC,iDAAQ;AACxC;AACA;AACA;AACA;AACA,gCAAgC,iDAAQ;AACxC;AACA;AACA;AACA;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA,wBAAwB,iDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,gCAAgC,EAAE;AAC7F;AACA;AACA,gCAAgC,iDAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA,iFAAiF,gCAAgC,EAAE;AACnH;AACA;AACA,gDAAgD,iDAAQ;AACxD;AACA;AACA;AACA,gDAAgD,iDAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA,gFAAgF,wDAAwD,EAAE;AAC1I;AACA;AACA,gDAAgD,iDAAQ,kGAAkG;AAC1J;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,iDAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yDAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yDAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,wEAAwE,EAAE;AAC5I,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,iFAAiF,EAAE;AACrJ,iBAAiB;AACjB;AACA,kEAAkE,8EAA8E,EAAE;AAClJ,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAW;AAC7B;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yDAAW;AACjC;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAW;AAC7B;AACA;AACA;AACA,CAAC;AACwB;AACzB,yC;;;;;;;;;;;;ACr5BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,gBAAgB,SAAI,IAAI,SAAI;AAC5B,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACkE;AAChB;AACF;AACX;AACe;AACb;AACM;AAC7C;AACA;AACA,WAAW,iDAAQ;AACnB,WAAW,iDAAQ;AACnB,UAAU,iDAAQ;AAClB,iBAAiB,iDAAQ;AACzB,UAAU,iDAAQ;AAClB,aAAa,iDAAQ;AACrB,WAAW,iDAAQ;AACnB,cAAc,iDAAQ;AACtB,UAAU,iDAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA,8BAA8B,oDAAa;AAC3C;AACA;AACA,8BAA8B,oDAAa;AAC3C;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,oDAAoD,+BAA+B,oCAAoC;AACvH;AACA;AACA;AACA,wBAAwB,uCAAuC;AAC/D;AACA,eAAe,aAAa,eAAe,sCAAsC;AACjF;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8EAAsB;AAC7D;AACA;AACA,uCAAuC,8EAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uCAAuC;AAC1D;AACA,iBAAiB,cAAc,iBAAiB,uCAAuC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAc;AAC3C,eAAe,4DAAa,mCAAmC,mDAAU,gCAAgC,gEAAe;AACxH;AACA;AACA,CAAC;AAC+B;AAChC;AACA;AACA;AACA,gD;;;;;;;;;;;;AC1HA;AAAA;AAAA;AACA;AACA;AACO;AACP;AACA,2EAA2E,2CAA2C;AACtH;AACA,0EAA0E,2CAA2C;AACrH;AACA,0EAA0E,2CAA2C;AACrH;AACA,iFAAiF,iDAAiD;AAClI;AACA,iFAAiF,iDAAiD;AAClI;AACA,oEAAoE,qCAAqC;AACzG;AACA,qEAAqE,sCAAsC;AAC3G;AACA,CAAC,kCAAkC;AACnC,wC;;;;;;;;;;;;ACpBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B,mC;;;;;;;;;;;;ACxBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC,sC;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAC6C;AACR;AACS;AACP;AACiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0DAAc;AAC5C;AACA,6BAA6B,oCAAoC;AACjE;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mDAAU;AAC/B;AACA;AACA,uBAAuB,oEAAiB;AACxC;AACA,+CAA+C,wBAAwB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yDAAW;AAChC;AACA;AACA,qBAAqB,yDAAW;AAChC;AACA;AACA,qBAAqB,yDAAW;AAChC;AACA;AACA,qBAAqB,yDAAW;AAChC;AACA;AACA,qBAAqB,yDAAW;AAChC;AACA;AACA;AACA;AACA,+BAA+B,iDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oCAAoC;AAClE;AACA,eAAe,WAAW;AAC1B,iBAAiB,OAAO;AACxB;AACA;AACA,eAAe,oEAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;AAC3B,2C;;;;;;;;;;;;ACzGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oCAAoC;AAC3E;AACA;AACA,CAAC;AACqB;AACtB,mC;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACoD;AACD;AACd;AACS;AACY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gEAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0CAAG;AAC3B,wBAAwB,0CAAG;AAC3B,wBAAwB,0CAAG,sBAAsB,0DAAc;AAC/D;AACA,wCAAwC,iDAAQ;AAChD;AACA,+CAA+C,0DAAc;AAC7D;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,+CAA+C,0DAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA,kDAAkD,iDAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA,kDAAkD,iDAAS;AAC3D;AACA;AACA;AACA;AACA;AACA,gDAAgD,iDAAQ,oDAAoD,4DAAa;AACzH;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,iDAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD;AACA;AACA,+CAA+C,oDAAY;AAC3D;AACA,gDAAgD,iDAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0DAAW;AACjD,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;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;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACqC;AACE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACmB;AACpB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,+BAA+B,iDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,+BAA+B,iDAAQ;AACvC;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACO;AACP;AACA,iCAAiC,iDAAQ;AACzC;AACA;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,EAAE;AAChE;AACA;AACA;AACA,CAAC;AAC8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iDAAQ;AAC7B,qBAAqB,iDAAQ;AAC7B,qFAAqF,iDAAQ;AAC7F;AACA,qBAAqB,iDAAQ;AAC7B,oFAAoF,iDAAQ;AAC5F;AACA,qBAAqB,iDAAQ;AAC7B,oFAAoF,iDAAQ;AAC5F;AACA;AACA;AACA,mFAAmF,iDAAQ;AAC3F;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB,iC;;;;;;;;;;;;ACvNA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACqC;AACS;AACS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0CAAG;AAC3B,wBAAwB,0CAAG;AAC3B,wBAAwB,0CAAG,sBAAsB,0DAAc;AAC/D,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,+CAAQ;AACxC;AACA;AACA;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,mDAAmD,0DAAc;AACjE;AACA;AACA;AACA;AACA,iDAAiD,iDAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iDAAQ,mDAAmD,4DAAa;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,4BAA4B,iDAAQ,kDAAkD,4DAAa;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,oDAAoD;AACpD,kDAAkD;AAClD;AACA;AACA;AACA,wBAAwB,iDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;AAC9B,8C;;;;;;;;;;;;AChLA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC8D;AACP;AACnB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kDAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wDAAY;AAC5C;AACA;AACA,+BAA+B,iDAAS;AACxC;AACA;AACA;AACA,iCAAiC,iDAAQ;AACzC,2BAA2B,iDAAS;AACpC;AACA;AACA,iCAAiC,iDAAQ;AACzC,2BAA2B,oDAAY;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,sDAAU;AACa;AACzB,yC;;;;;;;;;;;;ACtFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACO;AACwD;AACP;AACA;AACY;AACN;AACjB;AACR;AAC4B;AAC1B;AACa;AAChB;AACpC,iC;;;;;;;;;;;;AChBY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,2DAAW;AAChC,cAAc,mBAAO,CAAC,uDAAS;AAC/B,cAAc,mBAAO,CAAC,uDAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;AC5vDA,8CAAa;;AAEb,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,0FAA0F,aAAa;AACvG;AACA;;AAEA,kIAAkI;AAClI;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C,EAAE;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,UAAU,SAAS,aAAa;AAC9C;AACA,4CAA4C,UAAU,sBAAsB,aAAa;;AAEzF;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,YAAY;AAC1B;AACA,oDAAoD,YAAY;;AAEhE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,iDAAiD;AAC7E;AACA;AACA;AACA;AACA,gCAAgC;;;AAGhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0KAA0K;AAC1K;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,2CAA2C;AAC3C;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,mCAAmC;;;AAGnC;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;;AAEvD;AACA,0LAA0L;AAC1L;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0LAA0L;AAC1L;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4GAA4G;AAC5G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA,4LAA4L;AAC5L;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,+LAA+L;AAC/L;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kMAAkM;AAClM;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT,kDAAkD;;;AAGlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4DAA4D;;;AAG5D;AACA;AACA;AACA;AACA;AACA,oMAAoM;AACpM;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,8DAA8D;;;AAG9D;AACA;AACA;AACA,sCAAsC;AACtC,sDAAsD;;;AAGtD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sDAAsD;;;AAGtD;AACA;AACA;AACA,SAAS;AACT,wDAAwD;;;AAGxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,wDAAwD;AACxD,wDAAwD;AACxD,sDAAsD;AACtD,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA,+FAA+F,eAAe;AAC9G;AACA;;AAEA,qIAAqI;AACrI;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,sCAAsC,sEAAsE;;AAE5G;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kJAAkJ;AAClJ;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,gJAAgJ;AAChJ;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;;AAEA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4JAA4J;AAC5J;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,+IAA+I;AAC/I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAA0D;AAC1D;;AAEA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,iCAAiC;AACtD;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,kJAAkJ;AAClJ;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,2DAA2D,UAAU,0DAA0D,aAAa;AAC5I,OAAO;AACP;AACA,OAAO;AACP,0DAA0D,UAAU;AACpE;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,iDAAiD;AACjD,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,uJAAuJ;AACvJ;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,+BAA+B;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,mJAAmJ;AACnJ;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mJAAmJ;AACnJ;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8FAA8F,eAAe;AAC7G;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA,qBAAqB,iCAAiC;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,kBAAkB;AACvC;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,uMAAuM;AACvM;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,wJAAwJ;AACxJ;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iCAAiC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8IAA8I;AAC9I;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;;AAEA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,2FAA2F,YAAY;AACvG;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,+IAA+I;AAC/I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,iKAAiK;AACjK;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+DAA+D;;AAE/D;AACA;AACA;AACA,0DAA0D,2BAA2B;AACrF;AACA;;AAEA;AACA,yBAAyB,mBAAmB;AAC5C;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wIAAwI;AACxI;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,iKAAiK;AACjK;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,8IAA8I;AAC9I;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,IAAI,KAA6B;AACjC;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;;AAEzC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,iDAAiD;AACjD;AACA;AACA,2EAA2E;AAC3E;AACA;AACA,8BAA8B;AAC9B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;ACz8GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACnFA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,IAA0C;AAC/C,EAAE,oCAAO,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAC;AACjB;AACA;AACA,KAAK,IAA2B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,EAAE;AACjC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA,mEAAmE;AACnE;AACA;AACA,wCAAwC;AACxC;AACA,qEAAqE;AACrE;;AAEA;AACA;;AAEA;AA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A;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B,2BAA2B;AAC3B,mCAAmC;AACnC,yCAAyC;AACzC,2BAA2B;AAC3B,+BAA+B;AAC/B,kCAAkC;AAClC,8BAA8B;AAC9B,uCAAuC;AACvC,kCAAkC;AAClC,sCAAsC;AACtC,kCAAkC;AAClC,oCAAoC;AACpC,yCAAyC;AACzC,kCAAkC;AAClC,8CAA8C,qBAAqB;AACnE,gDAAgD;AAChD,qDAAqD;AACrD,8CAA8C;AAC9C,uCAAuC;AACvC,yCAAyC;AACzC,8CAA8C;AAC9C,uCAAuC;AACvC,iCAAiC;AACjC,qCAAqC;AACrC,sCAAsC;AACtC,gCAAgC;AAChC,2CAA2C;AAC3C,mDAAmD;AACnD,+CAA+C;AAC/C,8BAA8B;AAC9B,iCAAiC;AACjC,kCAAkC;AAClC,gCAAgC;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wB;;;;;;;;;;;;AC9Ra;;AAEb;AACA;;AAEA,aAAa,mBAAO,CAAC,0EAAS;;AAE9B,YAAY,mBAAO,CAAC,sFAAe;;AAEnC;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAE3Q,onUAAonU;;AAEpnU;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2EAA2E;;AAE3E,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;;AAEA;AACA,4QAA4Q,yJAAyJ,uMAAuM;;AAE5mB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,4CAA4C;;AAE5C;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAyE;;AAEzE;;AAEA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,OAAO;AAChB,UAAU,MAAM;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,qCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sB;;;;;;;;;;;;ACnLa;;AAEb;AACA;;AAEA,aAAa,mBAAO,CAAC,kFAAgB;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB,UAAU,UAAU;AACpB;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,MAAM;AACjB;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA,wBAAwB;AACxB,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,MAAM;AAChB,WAAW;AACX;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,cAAc;AACxB,WAAW;AACX;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA,UAAU,UAAU;AACpB,UAAU,MAAM;AAChB,WAAW;AACX;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS,OAAO;AAChB,SAAS,eAAe;AACxB,SAAS,MAAM;AACf;AACA,SAAS,MAAM;AACf;AACA,UAAU,MAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,4B;;;;;;;;;;;;AChPa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4C;;;;;;;;;;;;ACXa;;AAEb;AACA;;AAEA,wBAAwB,mBAAO,CAAC,2GAAsB;;AAEtD,aAAa,mBAAO,CAAC,qFAAmB;;AAExC,YAAY,mBAAO,CAAC,+EAAQ;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,wFAAwF,eAAe;;AAEvG;AACA;AACA;AACA;AACA;AACA,sFAAsF,aAAa;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,mBAAmB;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kB;;;;;;;;;;;;AC3Ma;;AAEb;AACA;;AAEA,wBAAwB,mBAAO,CAAC,2GAAsB;;AAEtD,aAAa,mBAAO,CAAC,qFAAmB;;AAExC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,WAAW;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gCAAgC;AAChC;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8B;;;;;;;;;;;;AC3Ma;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACda;;AAEb;;AAEA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;AC9HA,iBAAiB,mBAAO,CAAC,mFAAsB;;;;;;;;;;;;;ACA/C;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEO;AACP,8FAA8F,aAAa;AAC3G;AACA;;AAEA;AACA,uEAAuE,eAAe;AACtF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,qBAAqB,YAAY;AACjC;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;;AAEA;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,wEAAwE,eAAe;AACvF;AACA;;AAEA;AACA;AACA;AACA,KAAK,IAAI;AACT,GAAG;AACH,C;;;;;;;;;;;ACvHA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD,OAAO;AACP;AACA,OAAO;AACP,4EAA4E;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,qBAAqB;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,6BAA6B,0BAA0B,eAAe;AACtE;;AAEO;AACP;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACriBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGO,IAAM,SAAS,GAAG;AAEvB;;;;;AAKA,KAPuB,eAQpB,SARoB,EAQF,IARE,EAQW,aARX,EAQ0C,YAR1C,EAQqE;AAC1F,QAAM,OAAO,GAAG,8CAAK,CAAC,OAAN,CAAc,wEAAc,CAAC,SAA7B,CAAhB;AACA,WAAO,CAAC,OAAR,CAAgB,sEAAa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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD,CAvED,EAAY,SAAS,KAAT,SAAS,MAArB,E;;;;;;;;;;;AC3FA,kBAAkB,6lB;;;;;;;;;;;ACAlB,kBAAkB,4V;;;;;;;;;;;ACAlB,kBAAkB,ylB;;;;;;;;;;;ACAlB,kBAAkB,+E;;;;;;;;;;;ACAlB,kBAAkB,igL;;;;;;;;;;;ACAlB,kBAAkB,wb;;;;;;;;;;;ACAlB,kBAAkB,6O;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpBA,kBAAkB,6D;;;;;;;;;;;ACAlB,kBAAkB,8L;;;;;;;;;;;ACAlB,kBAAkB,wb;;;;;;;;;;;ACAlB,kBAAkB,imB;;;;;;;;;;;ACAlB,kBAAkB,mL;;;;;;;;;;;ACAlB,kBAAkB,irB;;;;;;;;;;;ACAlB,kBAAkB,gF;;;;;;;;;;;ACAlB,kBAAkB,0qB;;;;;;;;;;;ACAlB,kBAAkB,sO;;;;;;;;;;;ACAlB,kBAAkB,0wB;;;;;;;;;;;ACAlB,kBAAkB,6G;;;;;;;;;;;ACAlB,kBAAkB,gZ;;;;;;;;;;;ACAlB,kBAAkB,qsB;;;;;;;;;;;ACAlB,kBAAkB,wU;;;;;;;;;;;ACAlB,kBAAkB,oU;;;;;;;;;;;ACAlB,kBAAkB,wU;;;;;;;;;;;ACAlB,kBAAkB,uF;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,sR;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,gS;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA,kBAAkB,wsB;;;;;;;;;;;ACAlB,kBAAkB,qgB;;;;;;;;;;;ACAlB,kBAAkB,wL;;;;;;;;;;;ACAlB,kBAAkB,8Z;;;;;;;;;;;ACAlB,kBAAkB,2Q;;;;;;;;;;;ACAlB,kBAAkB,u/B;;;;;;;;;;;ACAlB,kBAAkB,8qZ;;;;;;;;;;;ACAlB,kBAAkB,qgD;;;;;;;;;;;ACAlB,kBAAkB,mQ;;;;;;;;;;;ACAlB,kBAAkB,4Z;;;;;;;;;;;ACAlB,kBAAkB,q4C;;;;;;;;;;;ACAlB,kBAAkB,wkB;;;;;;;;;;;ACAlB,kBAAkB,yR;;;;;;;;;;;ACAlB,kBAAkB,yW;;;;;;;;;;;ACAlB,kBAAkB,2N;;;;;;;;;;;ACAlB,kBAAkB,gW;;;;;;;;;;;ACAlB,kBAAkB,8R;;;;;;;;;;;ACAlB,kBAAkB,onB;;;;;;;;;;;ACAlB,kBAAkB,wQ;;;;;;;;;;;ACAlB,kBAAkB,u2B;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnCA,kBAAkB,mO;;;;;;;;;;;ACAlB,kBAAkB,ozB;;;;;;;;;;;ACAlB,kBAAkB,+0D;;;;;;;;;;;ACAlB,kBAAkB,y4D;;;;;;;;;;;ACAlB,kBAAkB,+nB;;;;;;;;;;;ACAlB,kBAAkB,yyB;;;;;;;;;;;ACAlB,kBAAkB,uc;;;;;;;;;;;ACAlB,kBAAkB,mT;;;;;;;;;;;ACAlB,kBAAkB,ypB;;;;;;;;;;;ACAlB,kBAAkB,uuP;;;;;;;;;;;ACAlB,kBAAkB,+qD;;;;;;;;;;;ACAlB,kBAAkB,mc;;;;;;;;;;;ACAlB,kBAAkB,qW;;;;;;;;;;;ACAlB,kBAAkB,mnB;;;;;;;;;;;ACAlB,kBAAkB,4vP;;;;;;;;;;;ACAlB,kBAAkB,w2B;;;;;;;;;;;ACAlB,kBAAkB,kK;;;;;;;;;;;ACAlB,kBAAkB,yK;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZA,kBAAkB,8Z;;;;;;;;;;;ACAlB,kBAAkB,6Q;;;;;;;;;;;ACAlB,kBAAkB,0R;;;;;;;;;;;ACAlB,kBAAkB,6kB;;;;;;;;;;;ACAlB,kBAAkB,8F;;;;;;;;;;;ACAlB,kBAAkB,4Q;;;;;;;;;;;ACAlB,kBAAkB,4zB;;;;;;;;;;;ACAlB,kBAAkB,sjC;;;;;;;;;;;ACAlB,kBAAkB,qsB;;;;;;;;;;;ACAlB,kBAAkB,8lB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAlB;AACA;AACA;AAEA,IAAM,QAAQ,GAAG,IAAjB;;AAEA,kDAAS,+DAAT,EAA6B;AAC3B,gBAAc,EAAE,KADW;AAE3B,YAAU,EAAE,KAFe;AAG3B,cAAY,EAAG,QAHY;AAI3B,UAAQ,EAAE,IAJiB;AAK3B,kBAAgB,EAAE,KALS;AAM3B,kBAAgB,EAAE,QANS;AAO3B,oBAAkB,EAAE;AAPO,CAA7B,E,CAUA;;;AACA,0FAAoB,GAApB,gDAA2B,0DAA3B,G;;;;;;;;;;;ACjBA,kBAAkB,0hB;;;;;;;;;;;ACAlB,kBAAkB,4S;;;;;;;;;;;ACAlB,kBAAkB,4K;;;;;;;;;;;ACAlB,kBAAkB,4iB;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACXA,kBAAkB,0pB;;;;;;;;;;;ACAlB,kBAAkB,yQ;;;;;;;;;;;ACAlB,kBAAkB,myC;;;;;;;;;;;ACAlB,kBAAkB,qoC;;;;;;;;;;;ACAlB,kBAAkB,qsB;;;;;;;;;;;ACAlB,kBAAkB,wU;;;;;;;;;;;ACAlB,kBAAkB,6U;;;;;;;;;;;ACAlB,kBAAkB,wT;;;;;;;;;;;;;;;;;;;;;ACClB;AAaO,IAAe,6BAAtB;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,wBAOiB;AACb,aAAO,oEAAY,CAAC,aAApB;AACD;AATH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;ACbA;AAaO,IAAe,sBAAtB;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,wBAGiB;AACb,aAAO,oEAAY,CAAC,MAApB;AACD;AALH;;AAAA;AAAA,I;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACCA;AAAA;AAAA;;;;AAIA,IAAY,UAAZ;;AAAA,WAAY,UAAZ,EAAsB;AACpB;AACA;AACA;AACA,gEAJoB,CAIF;AACnB,CALD,EAAY,UAAU,KAAV,UAAU,MAAtB,E;;;;;;;;;;;;ACoBA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AAGA;AAEA;AACA;AAUO,IAAM,kBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,mCAYsB;AAClB,UAAI,sDAAa,KAAK,OAAL,CAAa,YAA1B,CAAJ,EACE,OAAO,KAAK,OAAL,CAAa,YAAb,EAAP;AAEF,aAAO,KAAP;AACD;AAjBH;AAAA;AAAA,mCAmBqB;AACjB,UAAM,OAAO,GAAG,KAAK,OAAL,CAAa,oBAAb,CAAkC,KAAK,OAAL,CAAa,IAA/C,EAAqD,IAArD,CAAhB;AAEA,aAAO,IAAI,+FAAJ,CAAwB,OAAxB,CAAP;AACD;AAvBH;AAAA;AAAA,uCAyByB;AAErB,UAAI,CAAC,KAAK,YAAL,EAAL,EAA0B;AAE1B,UAAM,SAAS,GAAG,KAAK,YAAL,EAAlB;AAEA,WAAK,IAAL,CAAU,aAAV,CAAwB,KAAK,OAAL,CAAa,MAArC,EAA6C,SAA7C;AACD;AAhCH;AAAA;AAAA,+BAkCiB;AACb,WAAK,gBAAL;AACD;AApCH;AAAA;AAAA,wBAGqB;AACjB,aAAO;AACL,YAAI,EAAE,CADD;AAEL,oBAAY,EAAE,wEAAgB,CAAC,iBAAjB,CAAmC,IAAnC,CAAwC,IAAxC,EAA8C,KAAK,IAAnD;AAFT,OAAP;AAID,KARH;AAAA,sBAUsB,QAVtB,EAU0C,CAAI;AAV9C;;AAAA;AAAA,EAAwC,yDAAI,CAAC,QAA7C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBA;AAGA;AAEA,IAAY,gBAAZ;;AAAA,WAAY,gBAAZ,EAA4B;AAC1B;AACA;AACA;AACA;AACA;AACD,CAND,EAAY,gBAAgB,KAAhB,gBAAgB,MAA5B;;AAqBO,IAAM,eAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,6BA4Be;AACX,aAAO;AACL,0BAAkB,gBADb;AAEL,+BAAuB,mBAFlB;AAGL,6BAAqB;AAHhB,OAAP;AAKD;AAlCH;AAAA;AAAA,oCAoCuB;AACnB,UAAI,CAAC,KAAK,OAAL,CAAa,eAAlB,EAAmC;AAEnC,WAAK,QAAL,CAAe,KAAK,IAAL,CAAkB,WAAjC,YAAiD,KAAK,OAAL,CAAa,eAA9D,GAAiF,KAAK,MAAtF;AACD;AAxCH;AAAA;AAAA,4CA0C+B;AAC3B,OAAC,CAAC,MAAD,CAAD,CAAU,GAAV,wBAA8B,KAAK,IAAL,CAAU,GAAxC,GAA+C,KAAK,cAAL,CAAoB,IAApB,CAAyB,IAAzB,CAA/C;AACD;AA5CH;AAAA;AAAA,2CA8C8B;AAC1B,OAAC,CAAC,MAAD,CAAD,CAAU,GAAV,mCAAyC,KAAK,IAAL,CAAU,GAAnD,GAA0D,KAAK,cAAL,CAAoB,IAApB,CAAyB,IAAzB,CAA1D;AACD;AAhDH;AAAA;AAAA,wCAkD2B;AACvB,WAAK,qBAAL;AACA,WAAK,oBAAL;AAEA,WAAK,IAAL,CAAU,SAAV,CAAoB,SAApB,EAA+B;AAC7B,UAAE,EAAE,kBADyB;AAE7B,sBAAc,EAAE;AAFa,OAA/B;AAKA,WAAK,OAAL,CAAa,aAAb,CAA2B,SAA3B;AACD;AA5DH;AAAA;AAAA,sCA8DyB;AACrB,OAAC,CAAC,MAAD,CAAD,CAAU,GAAV,wBAA8B,KAAK,IAAL,CAAU,GAAxC;AACA,OAAC,CAAC,MAAD,CAAD,CAAU,GAAV,mCAAyC,KAAK,IAAL,CAAU,GAAnD;AACD;AAjEH;AAAA;AAAA,6BAmEgB;AACZ,WAAK,IAAL,CAAU,GAAV,CAAc,OAAd,CAAsB,QAAtB;AACD;AArEH;AAAA;AAAA,2BAuEc;AACV,WAAK,IAAL,CAAU,GAAV,CAAc,OAAd,CAAsB,MAAtB;AACD;AAzEH;AAAA;AAAA,mCA2EyB,CA3EzB,EA2E6C;AACzC;AACA,OAAC,CAAC,eAAF;AACD;AA9EH;AAAA;AAAA,mCAgFyB,CAhFzB,EAgF6C;AACzC,WAAK,IAAL;AACD;AAlFH;AAAA;AAAA,iCAoFoB;AAChB,aAAO,KAAK,OAAL,CAAa,eAAb,GAA+B,QAA/B,GAA0C,OAAjD;AACD;AAtFH;AAAA;AAAA,+BAwFkB;AACd,UAAI,KAAK,kBAAT,EAA6B;AAE7B,WAAK,aAAL;AAEA,WAAK,IAAL,CAAU,GAAV,CAAc,OAAd,CAAsB;AACpB,aAAK,EAAE,KAAK,OAAL,CAAa,KADA;AAEpB,eAAO,EAAE,qCAFW;AAGpB,iBAAS,EAAE,KAAK,OAAL,CAAa,SAHJ;AAIpB,eAAO,EAAE,KAAK,UAAL,EAJW;AAKpB,YAAI,EAAE,IALc;AAMpB,iBAAS,EAAE,KAAK,IAAL,CAAU,KAAV,CAAgB,kBAAhB,CANS;AAOpB,gBAAQ,EAAE,KAAK,OAAL,CAAa,QAAb,IAAyB,cAPf;AAQpB,aAAK,EAAE,CARa,CAQX;;AARW,OAAtB;AAWA,UAAI,KAAK,OAAL,CAAa,IAAjB,EACE,KAAK,IAAL,CAAU,KAAV,CAAgB,kBAAhB,EAAoC,QAApC,CAA6C,KAAK,OAAL,CAAa,IAA1D;AAEF,UAAI,KAAK,OAAL,CAAa,aAAjB,EACE,KAAK,IAAL,CAAU,KAAV,CAAgB,kBAAhB,EAAoC,QAApC,CAA6C,KAAK,OAAL,CAAa,aAA1D;AAEF,WAAK,kBAAL,GAA0B,IAA1B;AACD;AA/GH;AAAA;AAAA,wBAIqB;AACjB,aAAO;AACL,aAAK,EAAE,EADF;AAEL,iBAAS,EAAE,gBAAgB,CAAC,MAFvB;AAGL,YAAI,EAAE;AAHD,OAAP;AAKD,KAVH;AAAA,sBAYsB,QAZtB,EAY0C,CAAI;AAZ9C;AAAA;AAAA,wBAce;AACX,aAAO;AACL,wBAAgB,EAAE,KAAK,OAAL,CAAa;AAD1B,OAAP;AAGD,KAlBH;AAAA,sBAoBgB,EApBhB,EAoB8B;AAC1B,UAAI,MAAM,GAAG,EAAb;AACA,UAAI,KAAK,IAAL,CAAU,EAAd,EACE,MAAM,GAAG,kDAAS,KAAK,IAAd,EAAoB,IAApB,CAAT;AAED,WAAK,IAAL,CAAkB,GAAlB,GAAwB,kDAAS,EAAT,EAAa,MAAb,EAAqB,EAArB,CAAxB;AACF;AA1BH;;AAAA;AAAA,EAAqC,yDAAI,CAAC,QAA1C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AAGA;AAkBO,IAAM,eAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,iCA0BoB;AAChB,UAAI,KAAK,OAAL,CAAa,QAAjB,EACE,OAAO,KAAK,IAAL,CAAU,KAAV,CAAgB,SAAhB,CAAP;AAEF,aAAO,KAAK,IAAL,CAAU,GAAjB;AACD;AA/BH;AAAA;AAAA,iCAiCoB;AAChB,UAAM,OAAO,GAAe;AAC1B,iBAAS,EAAE,KAAK,OAAL,CAAa;AADE,OAA5B;AAIA,UAAI,KAAK,OAAL,CAAa,KAAjB,EACE,OAAO,CAAC,KAAR,GAAgB,KAAK,OAAL,CAAa,KAA7B;AAEF,aAAO,OAAP;AACD;AA1CH;AAAA;AAAA,+BA4CiB;AACb,UAAM,EAAE,GAAG,KAAK,UAAL,EAAX;AAEA,UAAI,CAAC,EAAE,CAAC,MAAR,EAAgB;AAEhB,QAAE,CAAC,OAAH,CAAW,KAAK,UAAL,EAAX;AACD;AAlDH;AAAA;AAAA,qCAoDuB;AACnB,UAAM,OAAO,GAAG,KAAK,UAAL,EAAhB;AAEA,UAAI,OAAO,YAAY,MAAvB,EACE,OAAO,CAAC,OAAR,CAAgB,SAAhB;AACH;AAzDH;AAAA;AAAA,wBACqB;AACjB,aAAO;AACL,iBAAS,EAAE;AADN,OAAP;AAGD,KALH;AAAA,sBAOsB,QAPtB,EAO0C,CAAI;AAP9C;AAAA;AAAA,wBASe;AACX,UAAI,CAAC,KAAK,OAAL,CAAa,QAAlB,EACE,OAAO,EAAP;AAEF,aAAO;AACL,eAAO,EAAE,KAAK,OAAL,CAAa;AADjB,OAAP;AAGD,KAhBH;AAAA,sBAkBgB,EAlBhB,EAkB8B;AAC1B,UAAI,MAAM,GAAG,EAAb;AACA,UAAI,KAAK,IAAL,CAAU,EAAd,EACE,MAAM,GAAG,kDAAS,KAAK,IAAd,EAAoB,IAApB,CAAT;AAED,WAAK,IAAL,CAAkB,GAAlB,GAAwB,kDAAS,EAAT,EAAa,MAAb,EAAqB,EAArB,CAAxB;AACF;AAxBH;;AAAA;AAAA,EAAqC,yDAAI,CAAC,QAA1C,E;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,8BAAY;AACrC,iEAAiE;AACjE;;AAEA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,CAAC;AACD,gLAAgL;;AAEhL;AACA;AACA;AACA;AACA;AACA,sIAAsI,qBAAqB,yEAAyE;AACpO,0IAA0I,qBAAqB,yEAAyE;AACxO,CAAC,gBAAgB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBjB;AAGA;AACA;AAaO,IAAM,mBAAb;AAAA;;AAAA;;AAGE,+BAAmB,OAAnB,EAAsD;AAAA;;AAAA,6BAC9C,OAD8C;AAErD;;AALH;AAAA;AAAA,oCAmCuB;AACnB,aAAO,KAAK,OAAL,CAAa,gBAApB;AACD;AArCH;AAAA;AAAA,iCAuCoB;AAChB,UAAI,sDAAa,KAAK,OAAL,CAAa,OAA1B,CAAJ,EACE,OAAO,KAAK,OAAL,CAAa,OAAb,EAAP;AAEF,aAAO,KAAK,OAAL,CAAa,OAApB;AACD;AA5CH;AAAA;AAAA,qCA6CwB;AACpB,UAAI,sDAAa,KAAK,OAAL,CAAa,WAA1B,CAAJ,EACE,OAAO,KAAK,OAAL,CAAa,WAAb,EAAP;AAEF,aAAO,KAAK,OAAL,CAAa,WAApB;AACD;AAlDH;AAAA;AAAA,kCAoDoB;AAChB,aAAO;AACL,gBAAQ,EAAE,KAAK,OAAL,CAAa,QADlB;AAEL,kBAAU,EAAE,KAAK,aAAL,EAFP;AAGL,eAAO,EAAE,KAAK,UAAL,EAHJ;AAIL,mBAAW,EAAE,KAAK,cAAL;AAJR,OAAP;AAMD;AA3DH;AAAA;AAAA,wBAOiB;AACb,aAAO,qBAAP;AACD;AATH;AAAA;AAAA,wBAWsB;AAClB,UAAI,SAAS,GAAG,gFAAhB;AAEA,UAAI,KAAK,OAAL,CAAa,WAAjB,EACE,SAAS,eAAQ,KAAK,OAAL,CAAa,WAArB,CAAT;AAEF,aAAO,SAAP;AACD;AAlBH;AAAA;AAAA,wBAoBqB;AACjB,aAAO,sDAAP;AACD;AAtBH;AAAA;AAAA,wBAwBqB;AACjB,aAAO;AACL,iBAAS,EAAE,IADN;AAEL,uBAAe,EAAE;AAFZ,OAAP;AAID;AA7BH;AAAA;AAAA,wBA+BqB;AACjB,aAAO,KAAK,OAAL,CAAa,OAAb,IAAwB,EAA/B;AACD;AAjCH;;AAAA;AAAA,EAAyC,yDAAI,CAAC,SAA9C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,8BAAY;AACrC,iEAAiE;AACjE,oHAAoH;;AAEpH;AACA,uIAAuI,qBAAqB,yEAAyE;AACrO;AACA;AACA;AACA;AACA;AACA,uIAAuI,qBAAqB,yEAAyE;AACrO,CAAC;AACD;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,0FAA0F,8FAA8F,qBAAqB,yEAAyE;AACtR;AACA;AACA;AACA,CAAC;AACD,kCAAkC;AAClC,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,oHAAoH;;AAEpH,qIAAqI,qBAAqB,yEAAyE;AACnO;AACA;AACA;AACA;AACA;AACA,uIAAuI,qBAAqB,yEAAyE;AACrO,CAAC,gBAAgB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CjB;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAcA;;;;AAGO,IAAM,kBAAb;AAAA;;AAAA;;AAGE,8BAAY,OAAZ,EAA8C;AAAA;;AAAA,6BACtC,OADsC;AAE7C;;AALH;AAAA;AAAA,iCAOmB;AACf,UAAI,KAAK,OAAL,CAAa,WAAjB,EAA8B;AAC5B,aAAK,QAAL,CAAc,KAAK,OAAL,CAAa,WAA3B,EAAwC,gBAAxC,EAA0D,KAAK,YAA/D;AACD;;AAED,WAAK,QAAL,CAAc,KAAK,KAAnB,EAA0B,kBAA1B,EAA8C,KAAK,MAAnD;AACD;AAbH;AAAA;AAAA,6BA8Ce;AACX,aAAO;AACL,aAAK,EAAE;AADF,OAAP;AAGD;AAlDH;AAAA;AAAA,mCAuEsB;AAClB,WAAK,GAAL,CAAS,IAAT,YAAkB,sDAAM,CAAC,gBAAzB,GAA6C,IAA7C;AACD;AAzEH;AAAA;AAAA,4BA2EkB,CA3ElB,EA2EiC;AAC7B;;;AAGA,UAAI,KAAK,OAAL,CAAa,OAAjB,EACE;AAEF,UAAI,CAAC,sDAAa,KAAK,OAAL,CAAa,cAA1B,CAAL,EACE;AAEF,aAAO,KAAK,OAAL,CAAa,cAAb,CAA4B,KAA5B,CAAkC,IAAlC,EAAwC,SAAxC,CAAP;AACD;AAtFH;AAAA;AAAA,kCAwFqB;AACjB,UAAI,CAAC,KAAK,OAAL,CAAa,WAAlB,EACE;AAEF,oDAAK,CAAC,OAAN,CAAc,KAAK,OAAL,CAAa,WAA3B,EACG,OADH,CACW,gBADX;AAED;AA9FH;AAAA;AAAA,kCAgGoB;AAChB,UAAM,QAAQ,GAAG,KAAK,KAAL,CAAW,GAAX,CAAe,UAAf,CAAjB;AACA,aAAO;AACL,cAAM,EAAN,sDADK;AAEL,WAAG,EAAE,8DAAW,CAAC,wBAAZ,CAAqC,KAAK,KAAL,CAAW,GAAX,CAAe,WAAf,CAArC,EAAkE,KAAK,OAAL,CAAa,gBAA/E,CAFA;AAGL,gBAAQ,EAAE,QAAQ,IAAI,oEAAc,CAAC,iBAAf,CAAiC,QAAjC,CAHjB;AAIL,eAAO,EAAE,0DAAS,CAAC,MAAV,CAAiB,6DAAY,CAAC,IAA9B,CAJJ;AAKL,gBAAQ,EAAE,KAAK,OAAL,CAAa,QALlB;AAML,gBAAQ,EAAE,KAAK,OAAL,CAAa;AANlB,OAAP;AAQD;AA1GH;AAAA;AAAA,+BA4GiB;AACb,oDAAK,CAAC,OAAN,CAAc,gGAAgB,CAAC,SAA/B,EAA0C,OAA1C,CAAkD,eAAlD;AAEA,UAAI,CAAC,KAAK,OAAL,CAAa,QAAlB,EACE;AACF;;;;;;AAKA,UAAI,KAAK,OAAL,CAAa,WAAjB,EAA8B;AAC5B,YAAM,MAAM,GAAG,KAAK,KAAL,CAAW,KAAX,CAAf;AACA,cAAM,CAAC,MAAP,KAAkB,MAAM,CAAC,CAAD,CAAN,CAAU,MAAV,GAAmB,gDAAO,KAAK,WAAZ,EAAyB,IAAzB,CAArC;AACD;AACF;AA1HH;AAAA;AAAA,wBAeiB;AACb,aAAO,oBAAP;AACD;AAjBH;AAAA;AAAA,wBAmBqB;AACjB,aAAO,qDAAP;AACD;AArBH;AAAA;AAAA,wBAuBoB;AAChB,aAAO,GAAP;AACD;AAzBH;AAAA;AAAA,wBA2BsB;AAClB,UAAI,KAAK,OAAL,CAAa,iBAAjB,EACE,OAAO,KAAK,OAAL,CAAa,iBAApB;AAEF,UAAI,SAAS,aAAM,sDAAM,CAAC,kBAAb,oBAAb;AAEA,UAAI,KAAK,OAAL,CAAa,cAAjB,EACE,SAAS,IAAI,iBAAb;AAEF,aAAO,SAAP;AACD;AArCH;AAAA;AAAA,wBAuCqB;AAAA;;AACjB,yDACO,sDAAM,CAAC,gBADd,GACmC,cADnC,gCAEO,KAFP;AAID;AA5CH;AAAA;AAAA,wBAoDqB;AACjB,UAAI,CAAC,KAAK,OAAL,CAAa,OAAlB,EACE,OAAO,EAAP;AAEF,aAAO;AACL,kBAAU,KAAK,OAAL,CAAa;AADlB,OAAP;AAGD;AA3DH;AAAA;AAAA,wBA6DuB;AACnB,UAAI,KAAK,OAAL,CAAa,OAAb,IAAwB,CAAC,KAAK,OAAL,CAAa,IAA1C,EACE,OAAO,EAAP;AAEF,aAAO;AACL,YAAI,EAAE,KAAK,OAAL,CAAa,IADd;AAEL,cAAM,EAAE;AAFH,OAAP;AAID;AArEH;;AAAA;AAAA,EAAwC,yDAAI,CAAC,SAA7C,E;;;;;;;;;;;AC5BA;AACA,kBAAkB,kO;;;;;;;;;;;;;;;;;;;;;ACDlB;AAGA;AAEA;AAEA;AAIO,IAAM,oBAAoB,uBAC9B,kEAAgB,CAAC,aADa,EACG,UAAC,IAAD,EAA0C;AAC1E,MAAM,YAAY,GAAkC,6FAAe,CAAC,WAAhB,CAA4B,oEAAY,CAAC,aAAzC,CAApD;AAEA,MAAM,gBAAgB,GAAG;AACvB,YAAQ,EAAE,YAAY,CAAC,0BADA;AAEvB,WAAO,EAAE,IAAI,CAAC,OAAL,CAAa,gBAAb,CAA8B,mBAFhB;AAGvB,eAAW,YAAK,wDAAM,CAAC,eAAZ,cAA+B,IAAI,CAAC,OAAL,CAAa,gBAAb,CAA8B,WAA7D,CAHY;AAIvB,oBAAgB,EAAE,IAAI,CAAC,OAAL,CAAa,gBAAb,CAA8B,SAA9B,KAA4C,IAA5C,GAAmD,wDAAM,CAAC,UAA1D,GAAuE,wDAAM,CAAC;AAJzE,GAAzB;AAOA,+FAAe,CAAC,eAAhB,CAAgC,oEAAY,CAAC,aAA7C;AACA,SAAO,gBAAP;AACD,CAb8B,CAA1B,C;;;;;;;;;;;ACXP;AACA,kBAAkB,0H;;;;;;;;;;;;ACDlB;AAAA;AAAA,IAAY,gBAAZ;;AAAA,WAAY,gBAAZ,EAA4B;AAC1B;AACD,CAFD,EAAY,gBAAgB,KAAhB,gBAAgB,MAA5B,E;;;;;;;;;;;;ACAA;AAAA;AAAA,IAAY,QAAZ;;AAAA,WAAY,QAAZ,EAAoB;AAClB;AACA;AACA;AACA;AACA;AACD,CAND,EAAY,QAAQ,KAAR,QAAQ,MAApB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAEA;AAIO,IAAM,oBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,uCAC4B;AACxB,aAAO,wDAAQ,CAAC,KAAK,IAAN,CAAf;AACD;AAHH;;AAAA;AAAA,EAA0C,wFAA1C,E;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACEA;AAAA;AAAO,IAAM,gBAAgB,GAAG;AAC9B,mBAD8B,6BACZ,IADY,EAC0C;AAAA,QAArC,cAAqC,uEAAZ,YAAY;AACtE,WAAQ,IAAY,CAAC,cAAD,CAAZ,IAAgC,CAAE,IAAY,CAAC,cAAD,CAAZ,CAA6B,MAAvE;AACD;AAH6B,CAAzB,C;;;;;;;;;;;;;;;;;;;;;;;ACFP;AACA;AAEA;AACA;AACA;AAEO,IAAM,UAAU,GAAG;AACxB,UADwB,sBAChB;AAAA;;AACN,8DAA0B,MAA1B,EAAkC,UAAC,SAAD,EAAoB,eAApB,EAAiE;AACjG,UAAI,CAAC,KAAI,CAAC,OAAL,CAAa,SAAb,EAAwB,eAAxB,CAAL,EACE;AAEF;;;;;;;;;AAQA,UAAM,SAAS,GAAG,eAAe,CAAC,IAAhB,CAAqB,IAArB,CAA0B,iBAA5C;AAEA,aAAO,6FAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,EAAgD,eAAe,CAAC,IAAhE,CAAP;AACD,KAfD;AAgBD,GAlBuB;AAoBxB,SApBwB,mBAoBhB,GApBgB,EAoBH,OApBG,EAoB8B;AACpD,QAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AAC3B,+DAAI,CAAC,WAAL,UAAuB,IAAI,6EAAJ,CAAa,2BAAb,CAAvB;AACA,aAAO,KAAP;AACD;;AAED,QAAI,QAAO,OAAP,MAAmB,QAAvB,EAAiC;AAC/B,+DAAI,CAAC,WAAL,UAAuB,IAAI,6EAAJ,CAAa,2EAAb,CAAvB;AACA,aAAO,KAAP;AACD;;AAED,QAAI,uDAAc,OAAO,CAAC,IAAR,CAAa,IAAb,CAAkB,iBAAhC,CAAJ,EAAwD;AACtD,+DAAI,CAAC,WAAL,UAAuB,IAAI,6EAAJ,CAAa,8BAAb,CAAvB;AACA,aAAO,KAAP;AACD;;AAED,WAAO,IAAP;AACD;AArCuB,CAAnB,C;;;;;;;;;;;;;;;;;;;;;;ACPP;AAEA;AAEA,IAAM,sBAAsB,GAAkB;AAC5C,YAAU,EAAE;AADgC,CAA9C;AAcO,IAAM,iBAAb;AAGE,6BAAY,OAAZ,EAA+B;AAAA;;AAC7B,SAAK,OAAL,GAAY;AACV,mBAAa,EAAE;AADL,OAEP,OAFO,CAAZ;AAID;;AARH;AAAA;AAAA,wBAUiB;AACb,aAAO,wEAAc,CAAC,UAAtB;AACD;AAZH;AAAA;AAAA,wBAc0B;AACtB,aAAO,KAAK,OAAL,CAAa,aAAb,CAA2B,UAAlC;AACD;AAhBH;AAAA;AAAA,wBAkBsB;AAClB,aAAO,KAAK,OAAL,CAAa,UAAb,KAA4B,8DAAc,CAAC,KAAlD;AACD;AApBH;AAAA;AAAA,wBAsBuB;AACnB,aAAO,KAAK,OAAL,CAAa,UAApB;AACD;AAxBH;AAAA;AAAA,wBA0B+B;AAC3B,aAAO,KAAK,OAAL,CAAa,YAApB;AACD;AA5BH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBA;AAGA;AACA;AACA;AACA;AACA;AAGO,IAAM,iBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,8BASmB,QATnB,EASwD,aATxD,EASkF;AAC9E,aAAO,KAAK,GAAL,CAAiB;AACtB,gBAAQ,EAAE,aADY;AAEtB,mBAAW,EAAE,0EAAkB,CAAC,MAFV;AAGtB,kBAAU,EAAE,wEAAc,CAAC,QAHL;AAItB,gBAAQ,EAAR,QAJsB;AAKtB,qBAAa,EAAb;AALsB,OAAjB,CAAP;AAOD;AAjBH;AAAA;AAAA,+BAmBoB,QAnBpB,EAmBwD;AACpD,aAAO,KAAK,GAAL,CAAiB;AACtB,gBAAQ,EAAE,cADY;AAEtB,mBAAW,EAAE,SAFS;AAGtB,qBAAa,EAAE,sEAAa,CAAC,OAHP;AAItB,gBAAQ,EAAR,QAJsB;AAKtB,kBAAU,EAAE,wEAAc,CAAC;AALL,OAAjB,CAAP;AAOD;AA3BH;AAAA;AAAA,wBACiB;AACb,aAAO,4EAAkB,CAAC,MAA1B;AACD;AAHH;AAAA;AAAA,wBAKwB;AACpB,aAAO,2EAAkB,CAAC,MAA1B;AACD;AAPH;;AAAA;AAAA,EAAuC,6FAAvC;AA8BA,IAAM,gBAAgB,GAAG;AACvB,iBAAe,EAAE,4EAAkB,CAAC,MADb;AAEvB,iBAAe,EAAE,2EAAkB,CAAC;AAFb,CAAzB;AAKO,IAAM,uBAAuB,GAAG;AACrC,uBADqC,iCACf,OADe,EACkB,OADlB,EAC6D;AAChG,2CACK,gBADL,GACqB;AACnB,iBAAW,EAAE,0EAAkB,CAAC,MADb;AAEnB,eAAS,EAAE,mBAAC,CAAD;AAAA,eAA0B,CAAC,CAAC,SAAF,EAA1B;AAAA,OAFQ;AAGnB,aAAO,EAAP,OAHmB;AAInB,aAAO,EAAP;AAJmB,KADrB;AAOD;AAToC,CAAhC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CP;AACA;AAEA;AAUA,IAAM,sBAAsB,GAAG,CAA/B;AACA,IAAM,oBAAoB,GAAG,CAA7B;AAEO,IAAM,oBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;;AAGU,yBAAqC,EAArC;AACA,2BAAuC,EAAvC;AAJV;AA+EC;;AA/ED;AAAA;AAAA,iCAcmB;AACf,WAAK,QAAL,CAAc,4FAAc,CAAC,KAA7B,EAAoC,yDAAI,CAAC,UAAL,CAAgB,KAApD,EAA2D,KAAK,UAAhE;AACA,WAAK,QAAL,CAAc,4FAAc,CAAC,KAA7B,EAAoC,yDAAI,CAAC,UAAL,CAAgB,KAApD,EAA2D,KAAK,kBAAhE;AACD;AAED;;;;;AAnBF;AAAA;AAAA,+BAuBqB,OAvBrB,EAuB0C;AACtC,UAAI,KAAK,cAAL,CAAoB,MAApB,IAA8B,sBAAlC,EACE,KAAK,cAAL,CAAoB,OAApB;AAEF,WAAK,cAAL,CAAoB,IAApB,CAAyB;AACvB,gBAAQ,EAAE,CAAC,KAAK,cAAL,CAAoB,MADR;AAEvB,eAAO,EAAP;AAFuB,OAAzB;AAID;AA/BH;AAAA;AAAA,wCAiC0B;AACtB,UAAI,CAAC,KAAK,cAAL,CAAoB,MAAzB,EAAiC;AACjC,aAAO,KAAK,cAAL,CAAoB,KAAK,cAAL,CAAoB,MAApB,GAA6B,CAAjD,CAAP;AACD;AApCH;AAAA;AAAA,yCAsC2B;AACvB,UAAI,CAAC,KAAK,cAAL,CAAoB,MAArB,IAA+B,KAAK,cAAL,CAAoB,MAApB,GAA6B,CAA7B,GAAiC,CAApE,EAAuE;AACvE,aAAO,KAAK,cAAL,CAAoB,KAAK,cAAL,CAAoB,MAApB,GAA6B,CAAjD,CAAP;AACD;AAED;;;;;;;;AA3CF;AAAA;AAAA,uCAkD6B,OAlD7B,EAkDkD;AAC9C,UAAI,CAAC,yDAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B,OAA3B,CAAD,IAAwC,yDAAI,CAAC,aAAL,CAAmB,cAAnB,OAAwC,GAApF,EACE;AAEF,UAAI,KAAK,YAAL,CAAkB,MAAlB,IAA4B,oBAAhC,EACE,KAAK,YAAL,CAAkB,OAAlB;AAEF,WAAK,YAAL,CAAkB,IAAlB,CAAuB;AACrB,gBAAQ,EAAE,CAAC,KAAK,YAAL,CAAkB,MADR;AAErB,eAAO,EAAP;AAFqB,OAAvB;AAID;AA7DH;AAAA;AAAA,sCA+DwB;AACpB,UAAI,CAAC,KAAK,YAAL,CAAkB,MAAvB,EAA+B;AAC/B,aAAO,KAAK,YAAL,CAAkB,KAAK,YAAL,CAAkB,MAAlB,GAA2B,CAA7C,CAAP;AACD;AAlEH;AAAA;AAAA,uCAoEyB;AACrB,UAAI,CAAC,KAAK,YAAL,CAAkB,MAAnB,IAA6B,KAAK,YAAL,CAAkB,MAAlB,GAA2B,CAA3B,GAA+B,CAAhE,EAAmE;AACnE,aAAO,KAAK,YAAL,CAAkB,KAAK,YAAL,CAAkB,MAAlB,GAA2B,CAA7C,CAAP;AACD;AAED;;;;AAzEF;AAAA;AAAA,mCA4EqB;AACjB,aAAO,KAAK,cAAL,CAAoB,MAApB,KAA+B,CAAtC;AACD;AA9EH;AAAA;AAAA,wBAMiB;AACb,aAAO,wEAAc,CAAC,OAAtB;AACD;AARH;AAAA;AAAA,wBAU4B;AACxB,aAAO,KAAK,QAAL,KAAkB,KAAK,QAAL,GAAgB,IAAI,IAAJ,EAAlC,CAAP;AACD;AAZH;;AAAA;AAAA,EAA0C,yDAAI,CAAC,OAA/C;AAiFO,IAAM,cAAc,GAAyB,IAAI,oBAAJ,EAA7C,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClGP;AAGA;AAMO,IAAM,eAAb;AAAA;;AAAA;;AAGE,2BAAY,OAAZ,EAA2C;AAAA;;AAAA;;AACzC,8BAAM,OAAN;AAEA,UAAK,SAAL,GAAiB,OAAO,CAAC,SAAzB;AAHyC;AAI1C;;AAPH;AAAA;AAAA,mCAaqB;AACjB,aAAO,KAAK,SAAZ;AACD;AAfH;AAAA;AAAA,wBASiB;AACb,aAAO,wEAAc,CAAC,QAAtB;AACD;AAXH;;AAAA;AAAA,EAAqC,yDAAI,CAAC,OAA1C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AAEO,IAAM,mBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,sCAS2B,SAT3B,EAS8E;AAC1E,UAAM,cAAc,GAAmB;AAAE,cAAM,EAAE,EAAV;AAAc,eAAO,EAAE;AAAvB,OAAvC;AAEA,WAAK,GAAL,CAAiB;AACf,gBAAQ,EAAE,aADK;AAEf,mBAAW,EAAE,0EAAkB,CAAC,MAFjB;AAGf,kBAAU,EAAE,wEAAc,CAAC,QAHZ;AAIf,qBAAa,EAAE,sEAAa,CAAC,MAJd;AAKf,gBAAQ,EAAE,kBAAC,MAAD,EAAmB;AAC3B,wBAAc,CAAC,MAAf,GAAwB,MAAxB;AAEA,cAAI,cAAc,CAAC,OAAf,IAA0B,sDAAa,SAAb,CAA9B,EACE,SAAQ,CAAC,cAAD,CAAR;AACH;AAVc,OAAjB;AAaA,WAAK,GAAL,CAAqB;AACnB,gBAAQ,EAAE,cADS;AAEnB,mBAAW,EAAE,0EAAkB,CAAC,OAFb;AAGnB,kBAAU,EAAE,wEAAc,CAAC,QAHR;AAInB,qBAAa,EAAE,sEAAa,CAAC,OAJV;AAKnB,gBAAQ,EAAE,kBAAC,OAAD,EAAiB;AACzB,wBAAc,CAAC,OAAf,GAAyB,OAAzB;AAEA,cAAI,cAAc,CAAC,MAAf,IAAyB,sDAAa,SAAb,CAA7B,EACE,SAAQ,CAAC,cAAD,CAAR;AACH;AAVkB,OAArB;AAYD;AArCH;AAAA;AAAA,wBACiB;AACb,aAAO,4EAAkB,CAAC,QAA1B;AACD;AAHH;AAAA;AAAA,wBAKwB;AACpB,aAAO,2EAAkB,CAAC,QAA1B;AACD;AAPH;;AAAA;AAAA,EAAyC,6FAAzC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXA;AAEA;AAGA;AACA;AACA;AACA;AAGO,IAAM,eAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,mCASyC,QATzC,EASuE,aATvE,EASiG;AAC7F,aAAO,KAAK,GAAL,CAAY;AACjB,gBAAQ,EAAE,kBADO;AAEjB,mBAAW,EAAE,0EAAkB,CAAC,YAFf;AAGjB,kBAAU,EAAE,wEAAc,CAAC,QAHV;AAIjB,gBAAQ,EAAR,QAJiB;AAKjB,qBAAa,EAAb;AALiB,OAAZ,CAAP;AAOD;AAjBH;AAAA;AAAA,iCAmBsB,QAnBtB,EAmBiE,aAnBjE,EAmB2F;AACvF,aAAO,KAAK,GAAL,CAAS;AACd,gBAAQ,EAAE,gDADI;AAEd,mBAAW,EAAE,0EAAkB,CAAC,SAFlB;AAGd,kBAAU,EAAE,wEAAc,CAAC,QAHb;AAId,gBAAQ,EAAR,QAJc;AAKd,qBAAa,EAAb;AALc,OAAT,CAAP;AAOD;AA3BH;AAAA;AAAA,wBACiB;AACb,aAAO,4EAAkB,CAAC,IAA1B;AACD;AAHH;AAAA;AAAA,wBAKwB;AACpB,aAAO,2EAAkB,CAAC,IAA1B;AACD;AAPH;;AAAA;AAAA,EAAqC,6FAArC;AA8BA,IAAM,gBAAgB,GAAG;AACvB,iBAAe,EAAE,4EAAkB,CAAC,IADb;AAEvB,iBAAe,EAAE,2EAAkB,CAAC;AAFb,CAAzB;AAKO,IAAM,qBAAqB,GAAG;AACnC,4BADmC,sCAEjC,OAFiC,EAEL,OAFK,EAEsC;AAEvE,2CACK,gBADL,GACqB;AACnB,iBAAW,EAAE,0EAAkB,CAAC,YADb;AAEnB,eAAS,EAAE,mBAAC,CAAD;AAAA,eAAwB,CAAC,CAAC,cAAF,EAAxB;AAAA,OAFQ;AAGnB,aAAO,EAAP,OAHmB;AAInB,aAAO,EAAP;AAJmB,KADrB;AAOD,GAXkC;AAanC;AACA,aAAW,EAAE;AACX,mBAAe,EAAE,4EAAkB,CAAC,IADzB;AAEX,aAAS,YAAK,0EAAkB,CAAC,YAAxB,UAFE;AAGX,WAAO,EAAE,iBAAC,QAAD;AAAA,aAA+B,QAAQ,CAAC,cAAT,EAA/B;AAAA,KAHE;AAIX,eAAW,EAAE,qBAAC,OAAD;AAAA,aAA8B,6FAAe,CAAC,WAAhB,CAA4B,4EAAkB,CAAC,IAA/C,EAAqD,OAArD,CAA9B;AAAA,KAJF;AAKX,wBAAoB,EAAE;AALX;AAdsB,CAA9B,C;;;;;;;;;;;;AC/CP;AAAA;AAAA;AAAA;AAAA;;AAEA,IAAM,OAAO,GAAG,SAAV,OAAU,CAAC,KAAD,EAAyB,WAAzB,EAA8C,OAA9C,EAAiE;AAC/E,OAAK,GAAG,KAAK,CAAC,QAAN,EAAR;AAEA,MAAI,IAAI,GAAG,WAAW,GAAG,KAAK,CAAC,MAA/B;AAEA,MAAI,IAAI,IAAI,CAAZ,EACE,OAAO,KAAP;AAEF,SAAO,IAAI,KAAJ,CAAU,IAAI,GAAG,CAAjB,EAAoB,IAApB,CAAyB,OAAzB,IAAoC,KAA3C;AACD,CATD;;AAWA,IAAM,cAAc,GAAG;AACrB;;;AAGA,mBAJqB,6BAIH,YAJG,EAIiB;AACpC,QAAI,CAAC,oDAAW,YAAX,CAAL,EACE,OAAO,EAAP;AAEF,QAAM,IAAI,GAAG,IAAI,IAAJ,CAAS,YAAT,CAAb;AAEA,QAAM,CAAC,GAAG,IAAI,CAAC,WAAL,EAAV;AAAA,QACE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,aAAL,EAAD,EAAuB,CAAvB,EAA0B,GAA1B,CADb;AAAA,QAEE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,aAAL,EAAD,EAAuB,CAAvB,EAA0B,GAA1B,CAFb;;AAIA,QAAI,CAAC,GAAG,CAAR,EAAW;AACT,uBAAU,CAAV,cAAe,CAAf,cAAoB,CAApB;AACD;;AAED,qBAAU,CAAV,cAAe,CAAf;AACD;AAnBoB,CAAvB;;;;;;;;;;;;;;;;;;;;;;;ACbA;AACA;AAEA;AAGA;AAmBA,IAAK,eAAL;;AAAA,WAAK,eAAL,EAAoB;AAClB;AACA;AACD,CAHD,EAAK,eAAe,KAAf,eAAe,MAApB;;AAKA,IAAM,UAAU,mDACb,uDAAS,CAAC,OADG,EACO,eAAe,CAAC,MADvB,gCAEb,uDAAS,CAAC,UAFG,EAEU,eAAe,CAAC,SAF1B,eAAhB;AAKA,IAAM,SAAS,GAAG;AAChB,gBAAc,EAAE,wBAAC,IAAD;AAAA,sCAA+C,IAA/C;AAAA;AADA,CAAlB;AAIO,IAAM,WAAW,GAAG;AACzB,WADyB,qBACf,OADe,EACE,OADF,EACwB;AAC/C,WAAO,WAAW,CAAC,UAAZ,CAAuB,OAAvB,EAAgC,OAAhC,CAAP;AACD,GAHwB;AAKzB,iBALyB,2BAMvB,MANuB,EAMP,cANO,EAMsC,YANtC,EAMiE;AAExF;AACA,QAAI,MAAM,IAAI,MAAM,CAAC,GAArB,EACE,OAAO,WAAW,CAAC,UAAZ,CAAuB,MAAM,CAAC,GAA9B,EAAmC,YAAnC,CAAP;AAEF,WAAO,WAAW,CAAC,wBAAZ,CAAqC,cAArC,EAAqD,YAArD,CAAP;AACD,GAbwB;;AAevB;;;;AAIF,2BAnByB,qCAmBC,GAnBD,EAmBY;AACnC,WAAO,kBAAkB,CAAC,GAAD,CAAlB,CAAwB,OAAxB,CAAgC,UAAhC,EAA4C,MAA5C,CAAP;AACD,GArBwB;AAuBzB,0BAvByB,oCAuBA,cAvBA,EAuB4C,OAvB5C,EAuBkE;AAAA,QACjF,eADiF,GACjC,cADiC,CACjF,eADiF;AAAA,QAChE,oBADgE,GACjC,cADiC,CAChE,oBADgE;AAAA,QAC1C,IAD0C,GACjC,cADiC,CAC1C,IAD0C,EAGzF;;AACA,QAAM,OAAO,GAAG,8EAAS,CAAC,aAAV,CAAwB,eAAxB,YAA4C,SAAS,CAAC,cAAV,CAAyB,UAAU,CAAC,IAAD,CAAnC,CAA5C,EAAhB;AAEA,QAAM,GAAG;AAAK,UAAI,EAAE,WAAW,CAAC,yBAAZ,CAAsC,oBAAtC;AAAX,OAA2E,OAA3E,CAAT;AAEA,WAAO,WAAW,CAAC,UAAZ,CAAuB,OAAvB,EAAgC,GAAhC,CAAP;AACD,GAhCwB;AAkCzB,YAlCyB,sBAkCd,OAlCc,EAkCG,OAlCH,EAkCyB;AAChD,QAAI,CAAC,OAAL,EACE;AAEF,QAAI,iFAAY,CAAC,OAAb,CAAqB,OAArB,CAAJ,EACE,OAAO,OAAP;AAEF,QAAM,MAAM,GAAG,CAAC,CAAC,KAAF,CAAQ,OAAR,CAAf;AAEA,QAAM,SAAS,GAAG,OAAO,CAAC,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA1B,GACd,GADc,GAEd,GAFJ;AAIA,QAAI,GAAG,GAAG,OAAV;AAEA,QAAI,GAAG,CAAC,QAAJ,CAAa,GAAb,CAAJ,EACE,GAAG,GAAG,GAAG,CAAC,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAN;AAEF,WAAO,GAAG,aAAM,SAAN,SAAkB,MAAlB,CAAV;AACD,GArDwB;AAuDzB;AACA,0BAxDyB,oCAwDA,SAxDA,EAwD6C,OAxD7C,EAwDmE;AAC1F,QAAI,CAAC,SAAL,EACE,OAAO,EAAP;AAEF,QAAI,OAAJ;AAEA,QAAI,CAAC,SAAL,EACE;AAEF,QAAI,SAAS,YAAY,yDAAI,CAAC,KAA9B,EACE,OAAO,GAAG,SAAS,CAAC,GAAV,CAAc,KAAd,CAAV,CADF,KAEK,IAAI,OAAO,SAAP,KAAqB,QAAzB,EACH,OAAO,GAAG,SAAV,CADG,KAGH,OAAO,GAAG,SAAS,CAAC,GAApB;AAEF,QAAI,CAAC,OAAL,EAAc;AAEd,QAAM,GAAG;AACP,UAAI,EAAE,uDAAS,CAAC,KADT;AAEP,aAAO,EAAE;AAFF,OAGJ,OAHI,CAAT;AAMA,WAAO,WAAW,CAAC,UAAZ,CAAuB,OAAvB,EAA0C,GAA1C,CAAP;AACD;AAjFwB,CAApB,C;;;;;;;;;;;;ACvCP;AAAA;AAAA;AAAA;AAAA;AAEA;AAGO,IAAM,8BAA8B,GAAG;AAC5C,WAAS,EAAE;AACT,mBAAe,EAAE,4EAAkB,CAAC,OAD3B;AAET,aAAS,EAAE,gBAFF;AAGT,WAAO,EAAE,iBAAC,QAAD;AAAA,aAAsC,QAAQ,CAAC,YAAT,EAAtC;AAAA,KAHA;AAIT,eAAW,EAAE,qBAAC,OAAD;AAAA,aAA8B,6FAAe,CAAC,WAAhB,CAA4B,4EAAkB,CAAC,OAA/C,EAAwD,OAAxD,CAA9B;AAAA,KAJJ;AAKT,wBAAoB,EAAE;AALb;AADiC,CAAvC,C;;;;;;;;;;;;ACCP;AAAA;AAAA;;;AAGA,IAAM,UAAU,GAAG,MAAnB;AACA,IAAM,SAAS,GAAG,WAAlB;AACA,IAAM,uBAAuB,GAAG,MAAhC;AAEO,IAAM,UAAU,GAAG;AAExB,UAFwB,sBAEgB;AAAA,QAA/B,OAA+B,uEAAF,EAAE;AAAA,QAC9B,cAD8B,GACqB,OADrB,CAC9B,cAD8B;AAAA,QACd,iBADc,GACqB,OADrB,CACd,iBADc;AAAA,wBACqB,OADrB,CACK,IADL;AAAA,QACK,IADL,8BACY,IADZ;AAGtC,QAAM,WAAW,GAAG,CAAC,YAAK,UAAL,EAArB;AAEA,QAAI,WAAW,CAAC,MAAhB,EAAwB;AAExB,QAAI,KAAK,GAAG,CAAC,CAAC,OAAD,EAAU;AAAE,yBAAU,UAAV,cAAwB,iBAAiB,GAAG,iBAAH,GAAuB,EAAhE;AAAF,KAAV,CAAb;AAEA,QAAI,IAAJ,EAAU,KAAK,CAAC,QAAN,CAAe,WAAf;AAEV,KAAC,CAAC,KAAD,CAAD,CAAS,QAAT,CAAkB,UAAU,CAAC,SAAX,CAAqB,cAArB,CAAlB;AACA,KAAC,CAAC,UAAU,CAAC,SAAX,CAAqB,cAArB,CAAD,CAAD,CAAwC,QAAxC,CAAiD,SAAjD;AAEA,WAAO,KAAP;AACD,GAjBuB;AAmBxB,UAnBwB,oBAmBf,MAnBe,EAmBA;AACtB,QAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAK,UAAL,EAA3B;AAEA,QAAI,CAAC,OAAO,CAAC,MAAb,EAAqB;AAErB,QAAM,SAAS,GAAG,CAAC,YAAK,SAAL,EAAnB;AACA,aAAS,CAAC,WAAV,CAAsB,SAAtB;AAEA,WAAO,CAAC,MAAR;AACD,GA5BuB;AA8BxB,WA9BwB,qBA8Bd,cA9Bc,EA8BS;AAC/B,QAAM,MAAM,GAAG,cAAc,IAAI,uBAAjC;AAEA,QAAM,GAAG,GAAG,CAAC,CAAC,MAAD,CAAb;AACA,QAAI,CAAC,GAAG,CAAC,MAAT,EAAiB;AAEjB,WAAO,GAAP;AACD;AArCuB,CAAnB,C;;;;;;;;;;;;ACbP;AAAA;AAAO,IAAM,YAAY,GAAG;AAC1B,WAD0B,qBAChB,GADgB,EACH,SADG,EACc;AACtC,QAAI,YAAY,GAAG,GAAG,CAAC,QAAJ,EAAnB;AAEA,QAAI,YAAY,CAAC,MAAb,IAAuB,SAA3B,EACE,OAAO,YAAP;AAEF,aAAS,GAAG,SAAS,GAAG,YAAY,CAAC,MAArC;;AAEA,WAAO,SAAS,GAAG,CAAnB,EAAsB;AACpB,kBAAY,GAAG,MAAM,YAArB;AACA,eAAS;AACV;;AACD,WAAO,YAAP;AACD;AAdyB,CAArB,C;;;;;;;;;;;;;;;;;;;;;;;;;ACAP;AACA;AAWA,IAAM,SAAS,GAAG,IAAlB;AAEO,IAAM,eAAb;AAGE;AAAA;AAAwB;;AAH1B;AAAA;AAAA,2BASgB,OAThB,EASyD;AAAA,UAAxB,OAAwB,uEAAF,EAAE;AACrD,UAAM,QAAQ,GAAG,KAAK,YAAL,CAAkB,OAAlB,EAA2B,OAA3B,CAAjB;AACA,UAAM,IAAI,GAAG,KAAK,OAAL,CAAa,QAAb,EAAuB,OAAvB,CAAb;AAEA,UAAI,CAAC,IAAD,IAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAL,CAAU,MAAhC,EAAwC;AAExC,aAAO,IAAI,CAAC,IAAL,CAAU,GAAV,EAAP;AACD;AAhBH;AAAA;AAAA,4BAkBkB,cAlBlB,EAkBiD,OAlBjD,EAkBoE;AAChE,aAAO,8DAAQ,cAAR,EAAwB,OAAO,CAAC,WAAR,IAAuB,EAA/C,CAAP;AACD;AApBH;AAAA;AAAA,iCAsBuB,QAtBvB,EAsByC,OAtBzC,EAsB6D;AAAA,4BAC5B,OAD4B,CACnD,MADmD;AAAA,UACnD,MADmD,gCAC1C,SAD0C,oBAGzD;;AACA,aAAO,4EAAsB;AAC3B,cAAM,EAAkB,MADG;AAE3B,gBAAQ,EAAgB;AAFG,OAAtB,CAAP;AAID;AA9BH;AAAA;AAAA,wBAK4B;AACxB,aAAO,KAAK,QAAL,KAAkB,KAAK,QAAL,GAAgB,IAAI,IAAJ,EAAlC,CAAP;AACD;AAPH;;AAAA;AAAA;AAiCO,IAAM,SAAS,GAAG,eAAe,CAAC,QAAlC;AACA,IAAM,YAAY,GAAG,qDAArB,C;;;;;;;;;;;;AChDP;AAAA;AAAO,IAAM,UAAU,GAAG;AACxB,aADwB,uBACZ,SADY,EACO,QADP,EACuB;;;AAC7C,QAAI,QAAQ,GAAG,EAAf;AAEA,cAAI,SAAJ,MAAa,IAAb,IAAa,aAAb,GAAa,MAAb,GAAa,GAAE,MAAf,EACE,QAAQ,GAAG,SAAS,CAAC,CAAD,CAApB;AAEF,cAAI,QAAJ,MAAY,IAAZ,IAAY,aAAZ,GAAY,MAAZ,GAAY,GAAE,MAAd,EACE,QAAQ,IAAI,QAAQ,CAAC,CAAD,CAApB;AAEF,WAAO,QAAQ,CAAC,WAAT,EAAP;AACD;AAXuB,CAAnB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAP;AAEA;AAEA,IAAM,SAAS,GAAG,2BAAlB;AAEA,IAAY,WAAZ;;AAAA,WAAY,WAAZ,EAAuB;AACrB;AACA;AACA;AACA;AACD,CALD,EAAY,WAAW,KAAX,WAAW,MAAvB;;AAYO,IAAM,qBAAqB,GAAG,SAAxB,qBAAwB;AAAA;;AAAA,0CAClC,WAAW,CAAC,aADsB,EACN;AAC3B,SAAK,EAAE,6FAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,eAArC,CADoB;AAE3B,WAAO,EAAE,uDAAY,CAAC;AAFK,GADM,yBAKlC,WAAW,CAAC,kBALsB,EAKD;AAChC,SAAK,EAAE,6FAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,oBAArC,CADyB;AAEhC,WAAO,EAAE,uDAAY,CAAC;AAFU,GALC,yBASlC,WAAW,CAAC,KATsB,EASd;AACnB,SAAK,EAAE,6FAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADY;AAEnB,WAAO,EAAE,uDAAY,CAAC;AAFH,GATc,yBAalC,WAAW,CAAC,IAbsB,EAaf;AAClB,SAAK,EAAE,6FAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,MAArC,CADW;AAElB,WAAO,EAAE,uDAAY,CAAC;AAFJ,GAbe;AAAA,CAA9B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqG;AAA+F;AAA2G;AAAmG;AAA+E;AAAiG;AAAiG;AAA6G;AAA6H;AAAqG;AAAuE;AAAgG;AAAgE;AAAkE;AAA0F;AAA8E;AAA0F;AAA8E;AAAsF;AAA0E;AAA8E;AAA0G;AAAkG;AAA0H;AAAkG;AAA6F;AAAiF;AAAkF;AAA+D;AAAqD;AAA6D;AAAkF;AAAgF;AAAgF;AAA2E;AAA2E;AAAuE;AAAqE;AAAkE;AAA+D;AAAkG;AAA2E;AAAuE;AAA2E;AAAiE;AAAqD;AAAsE;AAA4D;AAA8E;AAAuE;AAA+G;AAA0F;AAA8F;AAAyG;AAAkF;AAAkF;AAAmF;AAA2E;AAA2D;AAAoE;AAAgE;AAAmG;AAA+G;AAA+G;AAAqG;AAA8F;AAA8F;AAA6F;AAA6F;AAA0F;AAA0F;AAAuF;AAAmF;AAA4E;AAA4E;AAAwE;AAAwE;AAAsE;AAAoH;AAA4F;AAAoH;AAA4F;AAA0F;AAA0F;AAAsG;AAA2E;AAA0E;AAA4D;AAA8E;AAAsF;AAA0D;AAAkE;AAAoE;AAAgE;AAAoF;AAAgG;AAAgF;AAA0F;AAAsF;AAAiF;AAA6E;AAAyC;AAAwE;AAAgD;AAA0E;AAA0D;AAAkD;AAAsD;AAC1pR;AAA+G;AAAkF;AAA0F;AAAkG;AAAoG;AAA+F;AAAmG;AAAwG;AAAkF;AAA4F;AAA4F;AAAkF;AAAqF;AAA8F;AAA4F;AAAoF;AAA4G;AAA4E;AAAgF;AAAqE;AAA8F;AAA8F;AAA0F;AAA4E;AAAoF;AAA8F;AAA0F;AAAkG;AAAkG;AAA0F;AAAwF;AAAkF;AAAwF;AAA8E;AAAoF;AAA8E;AAA4H;AAA8F;AAA0F;AAAyF;AAAsH;AAA8G;AAAkF;AAAuF;AAAqF;AAAyF;AAAiG;AAAiG;AAAgE;AAAsF;AAAgF;AAAwF;AAAwF;AAA4E;AAEjwJ;AAEA;AAEA;AAkBA,IAAM,KAAK,GAAG,IAAI,gEAAI,CAAC,KAAT,CAAe;AAC3B,QAAM,EAAE,MADmB;AAE3B,eAAa,EAAE,IAAI,gEAAI,CAAC,aAAT,CAAuB,EAAvB;AAFY,CAAf,CAAd;AAKA,KAAK,CACF,qBADH,CACyB,wDADzB,EAEG,qBAFH,CAEyB,0DAFzB,EAGG,qBAHH,CAGyB,yDAHzB,EAIG,qBAJH,CAIyB,gEAJzB,EAKG,qBALH,CAKyB,wDALzB,EAMG,qBANH,CAMyB,+DANzB,EAOG,qBAPH,CAOyB,2DAPzB,EAQG,qBARH,CAQyB,uEARzB,EASE;AATF,CAUG,qBAVH,CAUyB,+DAVzB,EAWG,qBAXH,CAWyB,iEAXzB,EAYG,qBAZH,CAYyB,qEAZzB,EAaG,qBAbH,CAayB,oEAbzB,EAcG,qBAdH,CAcyB,gEAdzB,EAeG,qBAfH,CAeyB,6DAfzB;AAiBA,KAAK,CACF,cADH,CACkB,qEADlB;AAGA,KAAK,CAAC,KAAN,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;;IAIM,mB;;;;;;;;;;;;;wBACkB;AACpB,aAAO,8EAAW,CAAC,UAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,yBAA8B,OADzB;AAEL,0BAA8B,WAFzB;AAGL,iCAA8B;AAHzB,OAAP;AAKD;;;wBAEqB;AACpB,aAAO,CACL,cADK,EAEL,eAFK,EAGL,iBAHK,EAIL,aAJK,EAKL,gBALK,EAML,UANK,EAOL,WAPK,EAQL,aARK,CAAP;AAUD;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EA5B+B,8DAAI,CAAC,S;;AA+BhC,IAAM,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,4BAyBc;AAAA;;AACV,yMAA0D,IAA1D,CAA+D,gBAAuB;AAAA,YAApB,cAAoB,QAApB,cAAoB;;AACpF,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EAAiD,2DAAC,cAAD,EAAe,IAAf,CAAjD;AACD,OAFD;AAGD;AA7BH;AAAA;AAAA,8BA+BmB,EA/BnB,EA+B6B;AAAA;;AACzB,qMAAwD,IAAxD,CAA6D,iBAAsB;AAAA,YAAnB,aAAmB,SAAnB,aAAmB;;AACjF,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EAAiD,2DAAC,aAAD,EAAc;AAAC,YAAE,EAAE;AAAL,SAAd,CAAjD;AACD,OAFD;AAGD;AAnCH;AAAA;AAAA,oCAqCyB,EArCzB,EAqCqC,MArCrC,EAqC6E;AAAA;;AACzE,UAAI,GAAG,GAAyB,MAAM,CAAC,GAAvC;AAEA,UAAI,CAAC,CAAE,UAAF,EAAc,QAAd,EAAyB,QAAzB,CAAkC,GAAlC,CAAL,EACE,GAAG,GAAG,UAAN;AAEF,ifAAqE,IAArE,CAA0E,iBAA4B;AAAA,YAAzB,mBAAyB,SAAzB,mBAAyB;;AACpG,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EAAiD,2DAAC,mBAAD,EAAoB;AAAC,YAAE,EAAE,EAAL;AAAS,mBAAS,EAAE;AAApB,SAApB,CAAjD;AACD,OAFD;AAGD;AA9CH;AAAA;AAAA,mCAgDqB;AAAA;;AACjB,iSAAqE,IAArE,CAA0E,iBAA4B;AAAA,YAAzB,mBAAyB,SAAzB,mBAAyB;AACpG,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,MADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,SAFI;AAGvB,uBAAa,EAAE,4EAAa,CAAC,QAHN;AAIvB,kBAAQ,EAAE,8EAAe,CAAC;AAJH,SAAzB;;AAOA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,2DAAC,mBAAD,EAAoB;AAAC,0BAAgB,EAAE,gBAAnB;AAAqC,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAjD,SAApB,CADF;AAGD,OAXD;AAYD;AA7DH;AAAA;AAAA,kCA+DuB,EA/DvB,EA+DiC;AAAA;;AAC7B,yRAAiE,IAAjE,CAAsE,iBAA0B;AAAA,YAAvB,iBAAuB,SAAvB,iBAAuB;AAC9F,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,IADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,SAFI;AAGvB,uBAAa,EAAE,4EAAa,CAAC,QAHN;AAIvB,kBAAQ,EAAE,8EAAe,CAAC;AAJH,SAAzB;;AAOA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,2DAAC,iBAAD,EAAkB;AAAC,YAAE,EAAE,EAAL;AAAS,0BAAgB,EAAE,gBAA3B;AAA6C,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAzD,SAAlB,CADF;AAGD,OAXD;AAYD;AA5EH;AAAA;AAAA,oCA8EyB,EA9EzB,EA8EmC;AAAA;;AAC/B,+NAAqE,IAArE,CAA0E,iBAA4B;AAAA,YAAzB,mBAAyB,SAAzB,mBAAyB;AACpG,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,MADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,SAFI;AAGvB,uBAAa,EAAE,4EAAa,CAAC,QAHN;AAIvB,kBAAQ,EAAE,8EAAe,CAAC;AAJH,SAAzB;;AAOA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,2DAAC,mBAAD,EAAoB;AAAC,YAAE,EAAE,EAAL;AAAS,0BAAgB,EAAE,gBAA3B;AAA6C,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAzD,SAApB,CADF;AAGD,OAXD;AAYD;AA3FH;AAAA;AAAA,gCA6FqB,WA7FrB,EA6FwC;AAAA;;AACpC,4iBACG,IADH,CACQ,iBAAmC;AAAA,YAAhC,0BAAgC,SAAhC,0BAAgC;AACvC,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,SADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,SAFI;AAGvB,kBAAQ,EAAE,8EAAe,CAAC,KAHH;AAIvB,oBAAU,EAAE,8EAAe,CAAC,IAJL;AAKvB,uBAAa,EAAE,4EAAa,CAAC;AALN,SAAzB;;AAQA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,2DAAC,0BAAD,EAA2B;AACzB,qBAAW,EAAE,WADY;AAEzB,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA,WAFa;AAGzB,0BAAgB,EAAE;AAHO,SAA3B,CADF;AAOD,OAjBH;AAkBD;AAhHH;AAAA;AAAA,mCAkHwB,WAlHxB,EAkH6C,MAlH7C,EAkH+D;AAAA;;AAC3D,UAAM,UAAU,GAAG,MAAM,CAAC,UAA1B;AAEA,mRACG,IADH,CACQ,iBAAwC;AAAA,YAArC,+BAAqC,SAArC,+BAAqC;AAC5C,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,UADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,SAFI;AAGvB,kBAAQ,EAAE,8EAAe,CAAC,KAHH;AAIvB,oBAAU,EAAE,8EAAe,CAAC,IAJL;AAKvB,uBAAa,EAAE,4EAAa,CAAC;AALN,SAAzB;;AAQA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,2DAAC,+BAAD,EAAgC;AAC9B,qBAAW,EAAE,WADiB;AAE9B,oBAAU,EAAE,UAFkB;AAG9B,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA,WAHkB;AAI9B,0BAAgB,EAAE;AAJY,SAAhC,CADF;AAQD,OAlBH;AAmBD;AAxIH;AAAA;AAAA,6BA0IkB,WA1IlB,EA0IuC,MA1IvC,EA0IyD;AAAA;;AAAA,gCACzB,MADyB,CAC7C,WAD6C;AAAA,UAC7C,WAD6C,oCAC/B,EAD+B;AAGrD,uTAAgF,IAAhF,CAAqF,iBAAiC;AAAA,YAA9B,wBAA8B,SAA9B,wBAA8B;AACpH,YAAM,gBAAgB,GAAG;AACvB,gBAAM,EAAE,yEAAU,CAAC,cADI;AAEvB,kBAAQ,EAAE,8EAAe,CAAC,KAFH;AAGvB,uBAAa,EAAE,4EAAa,CAAC;AAHN,SAAzB;;AAMA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,2DAAC,wBAAD,EAAyB;AACvB,qBAAW,EAAE,WADU;AAEvB,oBAAU,EAAE,WAFW;AAGvB,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA,WAHW;AAIvB,0BAAgB,EAAE;AAJK,SAAzB,CADF;AAQD,OAfD;AAgBD;AA7JH;AAAA;AAAA,8BA+JmB,WA/JnB,EA+JwC,OA/JxC,EA+JuD;AAAA;;AACnD,+SAA4E,IAA5E,CAAiF,kBAA+B;AAAA,YAA5B,sBAA4B,UAA5B,sBAA4B;AAC9G,YAAM,gBAAgB,GAAG;AACvB,gBAAM,EAAE,yEAAU,CAAC,cADI;AAEvB,oBAAU,EAAE,yEAAU,CAAC,IAFA;AAGvB,kBAAQ,EAAE,8EAAe,CAAC,KAHH;AAIvB,uBAAa,EAAE,4EAAa,CAAC;AAJN,SAAzB;;AAOA,eAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,2DAAC,sBAAD,EAAuB;AACrB,qBAAW,EAAE,WADQ;AAErB,iBAAO,EAAE,OAFY;AAGrB,oBAAU,EAAE;AAAA,mBAAM,OAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA,WAHS;AAIrB,0BAAgB,EAAE;AAJG,SAAvB,CADF;AAQD,OAhBD;AAiBD;AAjLH;AAAA;AAAA,gCAmLqB,WAnLrB,EAmL0C,OAnL1C,EAmLyD;AAAA;;AACrD,qPAAgF,IAAhF,CAAqF,kBAAiC;AAAA,YAA9B,wBAA8B,UAA9B,wBAA8B;AACpH,YAAM,gBAAgB,GAAG;AACvB,gBAAM,EAAE,yEAAU,CAAC,cADI;AAEvB,oBAAU,EAAE,yEAAU,CAAC,MAFA;AAGvB,kBAAQ,EAAE,8EAAe,CAAC,KAHH;AAIvB,uBAAa,EAAE,4EAAa,CAAC;AAJN,SAAzB;;AAOA,eAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,2DAAC,wBAAD,EAAyB;AACvB,qBAAW,EAAE,WADU;AAEvB,iBAAO,EAAE,OAFc;AAGvB,oBAAU,EAAE;AAAA,mBAAM,OAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA,WAHW;AAIvB,0BAAgB,EAAE;AAJK,SAAzB,CADF;AAQD,OAhBD;AAiBD;AArMH;AAAA;AAAA,wBAGiB;AACb,aAAO,wBAAP;AACD;AALH;AAAA;AAAA,wBAWwB;AACpB,aAAO,8EAAW,CAAC,UAAnB;AACD;AAbH;AAAA;AAAA,wBAe6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,sFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAvBH;AAAA;AAAA,wBAO0B;AACtB,aAAO,mBAAP;AACD;AATH;;AAAA;AAAA,EAA2C,6FAA3C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AAOO,IAAM,iBAAiB,GAAG;AAC/B,QAD+B,oBACzB;AACJ,WAAO;AACL,SAAG,EAAE,2BADA;AAEL,SAAG,EAAE,YAFA;AAGL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,CAAP;AACD,OALI;AAML,aAAO,EAAE;AANJ,KAAP;AAQD,GAV8B;AAY/B,cAZ+B,wBAYlB,EAZkB,EAYR;AACrB,WAAO;AACL,SAAG,sCAA+B,EAA/B,CADE;AAEL,SAAG,sBAAe,EAAf,CAFE;AAGL,sBAAgB,EAAE,CAAC,YAAD,CAHb;AAIL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,GAAjB,CAAqB,YAArB,EAAmC,EAAnC,CAAP;AACD,OANI;AAOL,aAAO,EAAE;AAPJ,KAAP;AASD,GAtB8B;AAwB/B,iBAxB+B,2BAyB7B,SAzB6B,EAyBI,OAzBJ,EAyB6C,KAzB7C,EAyB+D;AAE5F,WAAO;AACL,SAAG,EAAE,2BADA;AAEL,SAAG,EAAE,kBAFA;AAGL,UAAI,EAAE,mFAAS,CAAC,IAHX;AAIL,sBAAgB,EAAE,CAAC,YAAD,CAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,EAAoC,gCACtC,SADsC,GAC7B;AACZ,kBAAQ,EAAE,EADE;AAEZ,gBAAM,EAAE,EAFI;AAGZ,oBAAU,EAAE,EAHA;AAIZ,sBAAY,EAAE;AAJF,SAD6B,CAApC,CAAP;AAOD,OAbI;AAcL,aAAO,EAAP,OAdK;AAeL,WAAK,EAAL;AAfK,KAAP;AAiBD,GA5C8B;AA8C/B,eA9C+B,yBA8CjB,SA9CiB,EA8CgB,OA9ChB,EA8CsC,KA9CtC,EA8CwD;AACrF,WAAO;AACL,SAAG,EAAE,2BADA;AAEL,SAAG,oBAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,GAHX;AAIL,sBAAgB,EAAE,CAAE,YAAF,sBAA6B,SAAS,CAAC,EAAvC,EAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,EAAsC,SAAtC,CAAP;AACD,OAPI;AAQL,aAAO,EAAP,OARK;AASL,WAAK,EAAL;AATK,KAAP;AAWD,GA1D8B;AA4D/B,iBA5D+B,2BA4Df,EA5De,EA4DH,OA5DG,EA4DmB,KA5DnB,EA4DqC;AAClE,WAAO;AACL,SAAG,EAAE,2BADA;AAEL,SAAG,oBAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,MAHX;AAIL,sBAAgB,EAAE,CAAC,YAAD,CAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,qEAAM,CAAC,SAAP,WAAwB,YAAxB,EAAsC,EAAtC;AACA,eAAO,EAAP;AACD,OARI;AASL,aAAO,EAAP,OATK;AAUL,WAAK,EAAL;AAVK,KAAP;AAYD,GAzE8B;;AA2E/B;;;AAGA,aA9E+B,uBA+E7B,QA/E6B,EA+EJ,WA/EI,EA+EiB,OA/EjB,EA+EuC,KA/EvC,EA+EyD;AAEtF,WAAO;AACL,SAAG,sCAA+B,WAA/B,cADE;AAEL,SAAG,0BAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,IAHX;AAIL,sBAAgB,EAAE,qBAAe,WAAf,GAA8B,UAA9B,EAA0C,0BAA1C,CAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,KAAjB,CAAuB,YAAvB,EAAqC,WAArC,EAAkD,UAAlD,EAA8D,iBAA9D,EAAiF,QAAjF,CAAP;AACD,OAPI;AAQL,aAAO,EAAP,OARK;AASL,WAAK,EAAL;AATK,KAAP;AAWD,GA5F8B;AA8F/B,gBA9F+B,0BA+F7B,UA/F6B,EA+FP,WA/FO,EA+Fc,OA/Fd,EA+FoC,KA/FpC,EA+FsD;AAEnF,WAAO;AACL,SAAG,sCAA+B,WAA/B,cADE;AAEL,SAAG,6BAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,MAHX;AAIL,sBAAgB,uBAAiB,WAAjB,6BAAmC,UAAU,CAAC,GAAX,CAAe,WAAC;AAAA,kCAAgB,CAAhB;AAAA,OAAhB,CAAnC,IAAyE,0BAAzE,EAJX;AAKL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,EAAsC,WAAtC,EAAmD,UAAnD,EAA+D,UAA/D,CAAP;AACD,OAPI;AAQL,aAAO,EAAP,OARK;AASL,WAAK,EAAL;AATK,KAAP;AAWD,GA5G8B;;AA8G/B;;;AAGA,qBAjH+B,+BAkH7B,KAlH6B,EAmH7B,WAnH6B,EAoH7B,OApH6B,EAqH7B,KArH6B,EAqHZ;AAEjB,WAAO;AACL,SAAG,sCAA+B,WAA/B,YADE;AAEL,SAAG,uBAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,IAHX;AAIL,sBAAgB,EAAE,qBAAc,WAAd,EAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,KAAjB,CAAuB,YAAvB,EAAqC,WAArC,EAAkD,QAAlD,EAA4D,QAA5D,EAAsE,KAAtE,CAAP;AACD,OAPI;AAQL,aAAO,EAAP,OARK;AASL,WAAK,EAAL;AATK,KAAP;AAWD,GAlI8B;AAoI/B,WApI+B,qBAqI7B,KArI6B,EAqIF,SArIE,EAqIwB,OArIxB,EAqI6C,KArI7C,EAqI8D;AAE3F,WAAO;AACL,SAAG,kCAA2B,KAAK,CAAC,EAAjC,CADE;AAEL,SAAG,kBAAW,KAAK,CAAC,EAAjB,CAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,GAHX;AAIL,sBAAgB,EAAE,CAAE,QAAF,sBAAyB,SAAS,CAAC,EAAnC,EAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,qEAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,EAAoC,gCAC/B,SAD+B,GACtB;AACZ,gBAAM,EAAE,SAAS,CAAC,MAAV,CAAiB,GAAjB,CAAqB,gBAAM,EAAG;AACpC,gBAAI,MAAM,CAAC,EAAP,KAAc,KAAK,CAAC,EAAxB,EACE,OAAO,MAAP;AAEF,mBAAO,KAAP;AACD,WALO;AADI,SADsB,CAApC;AAUA,eAAO,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,QAAxB,EAAkC,KAAlC,CAAP;AACD,OAjBI;AAkBL,aAAO,EAAP,OAlBK;AAmBL,WAAK,EAAL;AAnBK,KAAP;AAqBD,GA5J8B;AA8J/B,aA9J+B,uBA8JnB,OA9JmB,EA8JF,WA9JE,EA8JmB,OA9JnB,EA8JyC,KA9JzC,EA8J2D;AACxF,WAAO;AACL,SAAG,kCAA2B,OAA3B,CADE;AAEL,SAAG,gBAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,MAHX;AAIL,sBAAgB,EAAE,CAAE,QAAF,sBAAyB,WAAzB,EAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,qEAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,EAAsC,WAAtC,EAAmD,QAAnD,EAA6D,OAA7D;AACA,qEAAM,CAAC,SAAP,WAAwB,QAAxB,EAAkC,OAAlC;AACA,eAAO,EAAP;AACD,OATI;AAUL,aAAO,EAAP,OAVK;AAWL,WAAK,EAAL;AAXK,KAAP;AAaD,GA5K8B;AA8K/B,oBA9K+B,8BA+K7B,QA/K6B,EAgL7B,OAhL6B,EAiL7B,OAjL6B,EAkL7B,KAlL6B,EAkLX;AAElB,WAAO;AACL,SAAG,kCAA2B,OAA3B,cADE;AAEL,SAAG,qBAFE;AAGL,UAAI,EAAE,QAHD;AAIL,UAAI,EAAE,mFAAS,CAAC,IAJX;AAKL,sBAAgB,mBAAa,OAAb,6BAA2B,QAAQ,CAAC,GAAT,CAAa,WAAC;AAAA,8BAAY,CAAZ;AAAA,OAAd,CAA3B,IAAkE,0BAAlE,EALX;AAML,qBAAe,EAAE,2BAAK;AACpB,gBAAQ,CAAC,OAAT,CAAiB,iBAAO,EAAG;AACzB,uEAAM,CAAC,SAAP,CAAiB,KAAjB,CAAuB,QAAvB,EAAiC,OAAjC,EAA0C,UAA1C,EAAsD,iBAAtD,EAAyE,CAAC,OAAD,CAAzE;AACD,SAFD;AAGA,eAAO,6DAAM,CAAC,SAAP,CAAiB,GAAjB,CAAqB,QAArB,EAA+B,OAA/B,CAAP;AACD,OAXI;AAYL,aAAO,EAAP,OAZK;AAaL,WAAK,EAAL;AAbK,KAAP;AAeD,GAnM8B;AAqM/B,yBArM+B,mCAsM7B,QAtM6B,EAuM7B,OAvM6B,EAwM7B,OAxM6B,EAyM7B,KAzM6B,EAyMX;AAElB,WAAO;AACL,SAAG,EAAE,mFAAS,CAAC,UAAV,iCAA8C,OAA9C,gBAAkE;AAAE,UAAE,EAAE;AAAN,OAAlE,CADA;AAEL,SAAG,wBAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,MAHX;AAIL,sBAAgB,mBAAa,OAAb,GAAwB,0BAAxB,4BAAuD,QAAQ,CAAC,GAAT,CAAa,WAAC;AAAA,8BAAY,CAAZ;AAAA,OAAd,CAAvD,EAJX;AAKL,qBAAe,EAAE,2BAAK;AACpB,gBAAQ,CAAC,OAAT,CAAiB,iBAAO,EAAG;AACzB,uEAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,QAAxB,EAAkC,OAAlC,EAA2C,UAA3C,EAAuD,OAAvD;AACD,SAFD;AAGA,eAAO,6DAAM,CAAC,SAAP,CAAiB,GAAjB,CAAqB,QAArB,EAA+B,OAA/B,CAAP;AACD,OAVI;AAWL,aAAO,EAAP,OAXK;AAYL,WAAK,EAAL;AAZK,KAAP;AAcD,GAzN8B;AA2N/B,sBA3N+B,kCA2NX;AAClB,WAAO;AACL,SAAG,wCADE;AAEL,SAAG,EAAE,oBAFA;AAGL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,EAAsC,MAAtC,CAA6C,WAAC;AAAA,iBAAI,CAAC,CAAC,YAAN;AAAA,SAA9C,CAAP;AACD;AALI,KAAP;AAOD,GAnO8B;AAqO/B,eArO+B,yBAqOjB,SArOiB,EAqOS,OArOT,EAqO+B,KArO/B,EAqOiD;AAC9E,WAAO;AACL,SAAG,qCAA8B,SAAS,CAAC,EAAxC,UADE;AAEL,SAAG,2BAAoB,SAAS,CAAC,EAA9B,CAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,GAHX;AAIL,sBAAgB,EAAE,CAAE,YAAF,sBAA6B,SAAS,CAAC,EAAvC,EAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,EAAoC,gCACtC,SADsC,GAC7B;AACZ,sBAAY,EAAE;AADF,SAD6B,CAApC,CAAP;AAID,OAVI;AAWL,aAAO,EAAP,OAXK;AAYL,WAAK,EAAL;AAZK,KAAP;AAcD,GApP8B;AAsP/B,iBAtP+B,2BAuP7B,SAvP6B,EAuPH,OAvPG,EAuPmB,KAvPnB,EAuPqC;AAElE,WAAO;AACL,SAAG,qCAA8B,SAAS,CAAC,EAAxC,YADE;AAEL,SAAG,6BAAsB,SAAS,CAAC,EAAhC,CAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,GAHX;AAIL,sBAAgB,EAAE,CAAE,YAAF,sBAA6B,SAAS,CAAC,EAAvC,EAJb;AAKL,qBAAe,EAAE,2BAAK;AACpB,eAAO,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,EAAoC,gCACtC,SADsC,GAC7B;AACZ,sBAAY,EAAE;AADF,SAD6B,CAApC,CAAP;AAID,OAVI;AAWL,aAAO,EAAP,OAXK;AAYL,WAAK,EAAL;AAZK,KAAP;AAcD,GAvQ8B;;AAyQ/B;;;;;;;;;AASA,0BAlR+B,oCAkRN,QAlRM,EAkRiB;AAC9C,QAAM,UAAU,GAAG,QAAQ,CAAC,GAAT,CAAa,WAAC;AAAA,aAAI,CAAC,CAAC,EAAN;AAAA,KAAd,CAAnB;AACA,WAAO;AACL,SAAG,EAAE,4CADA;AAEL,SAAG,EAAE,0BAFA;AAGL,qBAAe,EAAE,2BAAK;AACpB,YAAM,MAAM,GAAG,6DAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,QAAxB,CAAf;AAEA,eAAO,MAAM,CAAC,MAAP,CAAc,eAAK,EAAG;AAC3B,cAAI,gBAAgB,GAAG,IAAvB;AACA,cAAI,KAAK,GAAG,CAAZ;;AAF2B;AAKzB,gBAAM,EAAE,GAAG,UAAU,CAAC,KAAD,CAArB;AACA,gBAAI,CAAC,KAAK,CAAC,QAAN,CAAe,IAAf,CAAoB,UAAC,GAAD;AAAA,qBAAsB,GAAG,CAAC,EAAJ,KAAW,EAAjC;AAAA,aAApB,CAAL,EACE,gBAAgB,GAAG,KAAnB;AAEF,iBAAK;AAToB;;AAI3B,aAAG;AAAA;AAMF,WAND,QAMS,KAAK,GAAG,UAAU,CAAC,MAN5B;;AAQA,iBAAO,gBAAP;AACD,SAbM,CAAP;AAcD;AApBI,KAAP;AAsBD;AA1S8B,CAA1B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTP;AAEA;AAEA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AAEA;;IAEM,oB;;;;;;;;;;;;;wBACkB;AACpB,aAAO,8EAAW,CAAC,eAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,2BAAgC,gBAD3B;AAEL,uCAAgC;AAF3B,OAAP;AAID;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EAdgC,8DAAI,CAAC,S;;AAiBjC,IAAM,yBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,qCAyBuB;AAAA;;AACnB,UAAM,YAAY,GAAG,CACnB,mGAAW,CAAC,KADO,EAEnB,mGAAW,CAAC,aAFO,CAArB;;AAKA,UAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,KAAD,EAAe,MAAf,EAAsC;AAC7D,gBAAQ,MAAR;AACA,eAAK,mGAAW,CAAC,aAAjB;AACE,mBAAO,qFAAyB,CAAC,uBAA1B,CAAkD,KAAlD,CAAP;;AAEF,eAAK,mGAAW,CAAC,KAAjB;AACE,mBAAO,qFAAyB,CAAC,eAA1B,CAA0C,KAA1C,CAAP;AALF;AAOD,OARD;;AAUA,4VAAwE,IAAxE,CAA6E,gBAA2B;AAAA,YAAxB,kBAAwB,QAAxB,kBAAwB;;AACtG,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EACE,oDAAC,gGAAmB,CAAC,QAArB,EAA6B;AAAC,eAAK,EAAE;AAAE,wBAAY,EAAZ,YAAF;AAAgB,4BAAgB,EAAhB;AAAhB;AAAR,SAA7B,EACE,oDAAC,kBAAD,EAAmB;AAAC,kBAAQ,EAAE,qFAAyB;AAApC,SAAnB,CADF,CADF;AAKD,OAND;AAOD;AAhDH;AAAA;AAAA,yCAkD8B,gBAlD9B,EAkDwD,IAlDxD,EAkDoE;AAAA;;AAChE,oXACG,IADH,CACQ,iBAAiC;AAAA,YAA9B,wBAA8B,SAA9B,wBAA8B;;AACrC,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EACE,oDAAC,wBAAD,EAAyB;AAAC,0BAAgB,EAAE,gBAAnB;AAAqC,kBAAQ,EAAE,qFAAyB;AAAxE,SAAzB,CADF;AAGD,OALH;AAMD;AAzDH;AAAA;AAAA,wBAGiB;AACb,aAAO,6BAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,gFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAiBwB;AACpB,aAAO,8EAAW,CAAC,eAAnB;AACD;AAnBH;AAAA;AAAA,wBAqB0B;AACtB,aAAO,oBAAP;AACD;AAvBH;;AAAA;AAAA,EAA+C,6FAA/C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAEO,IAAM,yBAAyB,GAA0B;AAC9D,iBAAe,EAAE,yBAAC,KAAD;AAAA,WAAmB;AAClC,iBAAW,EAAE,8EAAW,CAAC,OADS;AAElC,YAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB,UAFU;AAGlC,UAAI,EAAE,CAAE,KAAK,CAAC,EAAR,EAAY,kFAAU,CAAC,OAAX,CAAmB,KAAK,CAAC,IAAzB,CAAZ,CAH4B;AAIlC,YAAM,EAAE,KAAK,CAAC,iBAAN,GAA0B;AAAE,SAAC,EAAE,IAAI,CAAC,KAAL,CAAW,KAAK,CAAC,iBAAjB;AAAL,OAA1B,GAAuE;AAJ7C,KAAnB;AAAA,GAD6C;AAO9D,kBAAgB,EAAE,0BAAC,MAAD;AAAA,WAAqB;AACrC,iBAAW,EAAE,8EAAW,CAAC,OADY;AAErC,YAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB,MAFa;AAGrC,UAAI,EAAE,CAAE,MAAM,CAAC,EAAT,EAAa,kFAAU,CAAC,OAAX,CAAmB,MAAM,CAAC,IAA1B,CAAb;AAH+B,KAArB;AAAA,GAP4C;AAY9D,gCAA8B,EAAE,wCAAC,cAAD;AAAA,WAAqC;AACnE,iBAAW,EAAE,8EAAW,CAAC,eAD0C;AAEnE,YAAM,EAAE,oEAAO,CAAC,cAAR,CAAuB,qBAFoC;AAGnE,UAAI,EAAE,CAAE,cAAc,CAAC,EAAjB,EAAqB,kFAAU,CAAC,OAAX,CAAmB,cAAc,CAAC,IAAlC,CAArB;AAH6D,KAArC;AAAA,GAZ8B;AAiB9D,0BAAwB,EAAE,kCAAC,cAAD;AAAA,WAAqC;AAC7D,iBAAW,EAAE,8EAAW,CAAC,OADoC;AAE7D,YAAM,EAAE,oEAAO,CAAC,QAAR,CAAiB,cAFoC;AAG7D,UAAI,EAAE,CAAE,cAAc,CAAC,EAAjB,EAAqB,kFAAU,CAAC,OAAX,CAAmB,cAAc,CAAC,IAAlC,CAArB;AAHuD,KAArC;AAAA,GAjBoC;AAsB9D,iBAAe,EAAE,yBAAC,KAAD;AAAA,WAAmB;AAClC,iBAAW,EAAE,8EAAW,CAAC,OADS;AAElC,YAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB,KAFU;AAGlC,UAAI,EAAE,CAAC,KAAK,CAAC,EAAP,CAH4B;AAIlC,YAAM,EAAE;AAAE,kBAAU,EAAE;AAAd;AAJ0B,KAAnB;AAAA,GAtB6C;AA4B9D,yBAAuB,EAAE,iCAAC,KAAD;AAAA,WAAmB;AAC1C,iBAAW,EAAE,8EAAW,CAAC,SADiB;AAE1C,YAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB,eAFgB;AAG1C,UAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAHoC,KAAnB;AAAA,GA5BqC;AAiC9D,kBAAgB,EAAE;AAChB,eAAW,EAAE,8EAAW,CAAC,SADT;AAEhB,UAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAFV,GAjC4C;AAqC9D,uBAAqB,EAAE;AACrB,eAAW,EAAE,8EAAW,CAAC,eADJ;AAErB,UAAM,EAAE,oEAAO,CAAC,cAAR,CAAuB;AAFV;AArCuC,CAAzD,C;;;;;;;;;;;;ACPP;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;;IAEM,kB;;;;;;;;;;;;;wBACqB;AACvB,aAAO,8EAAW,CAAC,SAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,eAA0B,OADrB;AAEL,+BAA0B;AAFrB,OAAP;AAID;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EAd8B,8DAAI,CAAC,S;;AAiB/B,IAAM,oBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,4BAyBc;AAAA;;AACV,+RAAuD,IAAvD,CAA4D,gBAAsB;AAAA,YAAnB,aAAmB,QAAnB,aAAmB;;AAChF,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,oDAAC,aAAD,EAAc,IAAd,CAAjD;AACD,OAFD;AAGD;AA7BH;AAAA;AAAA,8BA+BmB,EA/BnB,EA+B+B,IA/B/B,EA+BoE;AAAA;;AAAA,UAAvB,MAAuB,uEAAF,EAAE;AAChE,UAAM,MAAM,GAAG,MAAM,CAAC,MAAP,IAAiB,CAAhC;AAEA,yTAAoE,IAApE,CAAyE,iBAA4B;AAAA,YAAzB,mBAAyB,SAAzB,mBAAyB;;AACnG,cAAI,CAAC,MAAL,CAAY,aAAZ,CACE,gFAAa,CAAC,OADhB,EAEE,oDAAC,mBAAD,EAAoB;AAAC,kBAAQ,EAAE,EAAX;AAAe,gBAAM,EAAE;AAAvB,SAApB,CAFF;AAID,OALD;AAMD;AAxCH;AAAA;AAAA,wBAGiB;AACb,aAAO,uBAAP;AACD;AALH;AAAA;AAAA,wBAOwB;AACpB,aAAO,8EAAW,CAAC,SAAnB;AACD;AATH;AAAA;AAAA,wBAe6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,gFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAvBH;AAAA;AAAA,wBAW0B;AACtB,aAAO,kBAAP;AACD;AAbH;;AAAA;AAAA,EAA0C,6FAA1C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;;IAEM,gB;;;;;;;;;;;;;wBACqB;AACvB,aAAO,8EAAW,CAAC,OAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL;AACA,8BAAwB,WAFnB;AAGL,8BAAwB,QAHnB;AAIL,+BAAwB,iBAJnB;AAKL,gCAAwB,iBALnB;AAML,wBAAwB,UANnB;AAOL,iBAAwB;AAPnB,OAAP;AASD;;;wBAEqB;AACpB,aAAO,CAAE,UAAF,EAAc,aAAd,EAA6B,OAA7B,EAAsC,UAAtC,EAAkD,WAAlD,EAA+D,OAA/D,CAAP;AACD;;;wBAE2B;AAC1B,aAAO;AACL,qBAAwB,QADnB;AAEL,oBAAwB;AAFnB,OAAP;AAID;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EA9B4B,8DAAI,CAAC,S;;AAiC7B,IAAM,kBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,6BAyBkB,MAzBlB,EAyBoC;AAAA;;AAChC,yRAAoD,IAApD,CAAyD,gBAAqB;AAAA,YAAlB,YAAkB,QAAlB,YAAkB;;AAC5E,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,oDAAC,YAAD,EAAa;AAAC,gBAAM,EAAE,MAAM,CAAC;AAAhB,SAAb,CAAjD;AACD,OAFD;AAGD;AA7BH;AAAA;AAAA,0BA+Be,EA/Bf,EA+B2B,MA/B3B,EA+B6C;AAAA;;AACzC,kQAAuC,IAAvC,CAA4C,iBAAkB;AAAA,YAAf,SAAe,SAAf,SAAe;;AAC5D,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,KAAxC,EACE,oDAAC,SAAD,EAAU;AACR,kBAAQ,EAAE,EADF;AAER,oBAAU,EAAE,MAAM,CAAC,UAFX;AAGR,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAHJ,SAAV,CADF;AAOD,OARD;AASD;AAzCH;AAAA;AAAA,8BA2CmB,EA3CnB,EA2C+B,YA3C/B,EA2CyF;AAAA;;AAAA,UAAvB,MAAuB,uEAAF,EAAE;;AACrF;AACA,UAAI,OAAO,YAAP,KAAwB,QAA5B,EAAsC;AACpC,aAAK,eAAL,CAAqB,EAArB,EAAyB,YAAY,IAAI,EAAzC;AACA;AACD;;AAED,sRAAqC,IAArC,CAA0C,iBAAiB;AAAA,YAAd,QAAc,SAAd,QAAc;;AACzD,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EACE,oDAAC,QAAD,EAAS;AAAC,YAAE,EAAE,EAAL;AAAS,mBAAS,EAAE,MAAM,CAAC;AAA3B,SAAT,CADF;AAGD,OAJD;AAKD;AAvDH;AAAA;AAAA,oCAyDyB,EAzDzB,EAyDqC,MAzDrC,EAyDuD;AAAA;;AACnD,sRAAqC,IAArC,CAA0C,iBAAiB;AAAA,YAAd,QAAc,SAAd,QAAc;;AACzD,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EACE,oDAAC,QAAD,EAAS;AAAC,YAAE,EAAE,EAAL;AAAS,mBAAS,EAAE,MAAM,CAAC;AAA3B,SAAT,CADF;AAGD,OAJD;AAKD;AA/DH;AAAA;AAAA,oCAiEyB,SAjEzB,EAiE0C;AAAA;;AACtC,gTAAkD,IAAlD,CAAuD,iBAAuB;AAAA,YAApB,cAAoB,SAApB,cAAoB;;AAC5E,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EACE,oDAAC,cAAD,EAAe;AAAC,mBAAS,EAAE;AAAZ,SAAf,CADF;AAGD,OAJD;AAKD;AAvEH;AAAA;AAAA,8BAyEmB,OAzEnB,EAyEkC;AAAA;;AAC9B,uPAAgD,IAAhD,CAAqD,iBAAsB;AAAA,YAAnB,aAAmB,SAAnB,aAAmB;;AACzE,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,KAAxC,EACE,oDAAC,aAAD,EAAc;AAAC,YAAE,EAAE,OAAL;AAAc,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAA1B,SAAd,CADF;AAGD,OAJD;AAKD;AA/EH;AAAA;AAAA,2BAiFgB,EAjFhB,EAiF4B,IAjF5B,EAiF0C,MAjF1C,EAiF4D;AAAA;;AACxD,8RAAyC,IAAzC,CAA8C,iBAAmB;AAAA,YAAhB,UAAgB,SAAhB,UAAgB;;;;AAC/D,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EACE,oDAAC,UAAD,EAAW;AAAC,YAAE,EAAE,EAAL;AAAS,gBAAM,QAAE,MAAF,MAAQ,IAAR,IAAQ,aAAR,GAAQ,MAAR,GAAQ,GAAE;AAAzB,SAAX,CADF;AAGD,OAJD;AAKD;AAvFH;AAAA;AAAA,oCAyFyB,MAzFzB,EAyF2C;AAAA;;AACvC,oUAA4D,IAA5D,CAAiE,iBAA4B;AAAA,YAAzB,mBAAyB,SAAzB,mBAAyB;;AAC3F,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EACE,oDAAC,mBAAD,EAAoB;AAAC,gBAAM,EAAE,MAAM,CAAC;AAAhB,SAApB,CADF;AAGD,OAJD;AAKD;AA/FH;AAAA;AAAA,qCAiGuB;AACnB,oEAAI,CAAC,WAAL,UAAuB,IAAI,+FAAJ,EAAvB;AACD;AAnGH;AAAA;AAAA,+BAqGiB;AAAA;;AACb,UAAM,KAAK,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,EAA4B,OAA5B,CAAoC,eAApC,CAAd;AAEA,qMAAwD,IAAxD,CAA6D,iBAAqB;AAAA,YAAlB,YAAkB,SAAlB,YAAkB;;AAChF,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,oDAAC,YAAD,EAAa;AAAC,eAAK,EAAE;AAAR,SAAb,CAAjD;AACD,OAFD;AAGD;AA3GH;AAAA;AAAA,4BA6Gc;AAAA;;AACV,UAAM,KAAK,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,EAA4B,OAA5B,CAAoC,eAApC,CAAd;AAEA,uLAAiD,IAAjD,CAAsD,kBAAkB;AAAA,YAAf,SAAe,UAAf,SAAe;;AACtE,eAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,oDAAC,SAAD,EAAU;AAAC,eAAK,EAAE;AAAR,SAAV,CAAjD;AACD,OAFD;AAGD;AAnHH;AAAA;AAAA,kCAqHoB;AAAA;;AAChB,UAAM,KAAK,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,EAA4B,OAA5B,CAAoC,eAApC,CAAd;AAEA,UAAI,CAAC,KAAL,EACE;AAJc,UAMR,aANQ,GAMU,KANV,CAMR,aANQ;AAQhB,wMAA8C,IAA9C,CAAmD,kBAAmB;AAAA,YAAhB,UAAgB,UAAhB,UAAgB;;AACpE,eAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,KAAxC,EACE,oDAAC,UAAD,EAAW;AACT,eAAK,EAAE,aAAa,CAAC,KADZ;AAET,cAAI,EAAE,aAAa,CAAC,IAFX;AAGT,iBAAO,EAAE,aAAa,CAAC,OAHd;AAIT,gBAAM,EAAE,KAAK,CAAC,MAJL;AAKT,gBAAM,EAAE,KAAK,CAAC,MALL;AAMT,oBAAU,EAAE;AAAA,mBAAM,OAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AANH,SAAX,CADF;AAUD,OAXD;AAYD;AAzIH;AAAA;AAAA,+BA2IiB;AAAA;;AACb,UAAM,KAAK,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,EAA4B,OAA5B,CAAoC,eAApC,CAAd;AAEA,qMAAwD,IAAxD,CAA6D,kBAAqB;AAAA,YAAlB,YAAkB,UAAlB,YAAkB;;AAChF,eAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,oDAAC,YAAD,EAAa;AAAC,eAAK,EAAE;AAAR,SAAb,CAAjD;AACD,OAFD;AAGD;AAjJH;AAAA;AAAA,wBAGiB;AACb,aAAO,qBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,gFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAiBwB;AACpB,aAAO,8EAAW,CAAC,OAAnB;AACD;AAnBH;AAAA;AAAA,wBAqB0B;AACtB,aAAO,gBAAP;AACD;AAvBH;;AAAA;AAAA,EAAwC,6FAAxC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjDA;AACA;AAEA;AAEA;AACA;AACA;AAEA;;IAEM,c;;;;;;;;;;;;;wBACqB;AACvB,aAAO,8EAAW,CAAC,KAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,kCAA0B;AADrB,OAAP;AAGD;;;wBAEiB;AAChB,aAAO,CAAC,sFAAD,CAAP;AACD;;;;EAb0B,8DAAI,CAAC,S;;AAgB3B,IAAM,gBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,+BAqBoB,SArBpB,EAqB8D;AAAA;;AAAA,UAAvB,MAAuB,uEAAF,EAAE;AAAA,sBACpC,MADoC,CAClD,CADkD;AAAA,UAClD,CADkD,0BAC9C,KAD8C;AAG1D,2KAA2C,IAA3C,CAAgD,gBAAkB;AAAA,YAAf,SAAe,QAAf,SAAe;;AAChE,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,oDAAC,SAAD,EAAU;AAAC,YAAE,EAAE,SAAL;AAAgB,kBAAQ,EAAE;AAA1B,SAAV,CAAjD;AACD,OAFD;AAGD;AA3BH;AAAA;AAAA,wBAGiB;AACb,aAAO,mBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC;AADT,OAAP;AAGD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,8EAAW,CAAC,KAAnB;AACD;AAfH;AAAA;AAAA,wBAiB0B;AACtB,aAAO,cAAP;AACD;AAnBH;;AAAA;AAAA,EAAsC,6FAAtC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;;IAEM,sB;;;;;;;;;;;;;wBACkB;AACpB,aAAO,8EAAW,CAAC,aAAnB;AACD;;;wBAEmB;AAClB,aAAO;AACL,4BAAoB;AADf,OAAP;AAGD;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EAbkC,8DAAI,CAAC,S;;AAgBnC,IAAM,wBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,0BAyBe,MAzBf,EAyBiC;AAAA;;AAC7B,yQACG,IADH,CACQ,gBAA0B;AAAA,YAAvB,iBAAuB,QAAvB,iBAAuB;;AAC9B,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EACE,oDAAC,yGAAD,EAAoB;AAAC,cAAI,EAAE,iBAAP;AAA0B,iBAAO,EAAE;AAAE,kBAAM,EAAN;AAAF;AAAnC,SAApB,CADF;AAGD,OALH;AAMD;AAhCH;AAAA;AAAA,wBAGiB;AACb,aAAO,2BAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,sFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAqBwB;AACpB,aAAO,8EAAW,CAAC,aAAnB;AACD;AAvBH;AAAA;AAAA,wBAiB0B;AACtB,aAAO,sBAAP;AACD;AAnBH;;AAAA;AAAA,EAA8C,6FAA9C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AAEO,IAAM,yBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,wBACqB;AACjB,aAAO;AACL,oBAAY,EAAE;AACZ,qBAAW,EAAE,8EAAW,CAAC,OADb;AAEZ,gBAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFZ,SADT;AAML,qBAAa,EAAE;AACb,qBAAW,EAAE,8EAAW,CAAC,aADZ;AAEb,gBAAM,EAAE,oEAAO,CAAC,aAAR,CAAsB;AAFjB,SANV;;AAWL;;;AAGA,oBAAY,EAAE;AACZ,qBAAW,EAAE,8EAAW,CAAC,SADb;AAEZ,gBAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAFd,SAdT;AAmBL,sBAAc,EAAE;AACd,qBAAW,EAAE,8EAAW,CAAC,SADX;AAEd,gBAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAFZ,SAnBX;AAwBL,wBAAgB,EAAE;AAChB,qBAAW,EAAE,8EAAW,CAAC,SADT;AAEhB,gBAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAFV;AAxBb,OAAP;AA6BD;AA/BH;AAAA;AAAA,wBAiC0C;AACtC,aAAO,CACL,2GAAgB,CAAC,mBADZ,EAEL,2GAAgB,CAAC,yBAFZ,EAGL,2GAAgB,CAAC,2BAHZ,EAIL,2GAAgB,CAAC,uBAJZ,EAKL,2GAAgB,CAAC,sBALZ,CAML;AACA;AACA;AARK,OAAP;AAUD,KA5CH,CA8CE;;AA9CF;AAAA;AAAA,wBA+CuC;AACnC;AACA,aAAO,EAAP;AACD;AAlDH;AAAA;AAAA,wBAoD0B;AACtB,aAAO,MAAP;AACD;AAtDH;;AAAA;AAAA,EAA+C,yFAA/C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;;IAEM,kB;;;;;;;;;;;;;wBACqB;AACvB,aAAO,8EAAW,CAAC,SAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,wBAA8B,OADzB;AAEL,iCAA8B;AAFzB,OAAP;AAID;;;wBACqB;AACpB,aAAO,CACL,aADK,EAEL,cAFK,EAGL,gBAHK,EAIL,eAJK,EAKL,yBALK,CAAP;AAOD;;;wBAEiB;AAChB,aAAO,CAAE,uFAAF,EAAuB,iFAAvB,CAAP;AACD;;;;EAvB8B,8DAAI,CAAC,S;;AA0B/B,IAAM,oBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,oCAyBuB;AAAA;;AACnB,aAAO;AACL,kBAAU,EAAE;AAAA,iBAAM,KAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA,SADP;AAEL,wBAAgB,EAAE;AAAE,kBAAQ,EAAE,8EAAe,CAAC;AAA5B;AAFb,OAAP;AAID;AA9BH;AAAA;AAAA,0BAgCe,MAhCf,EAgCiC;AAAA;;AAC7B,UAAM,kBAAkB,GAAG,SAArB,kBAAqB,CAAC,QAAD;AAAA,eAAyB;AAClD,qBAAW,EAAE,8EAAW,CAAC,SADyB;AAElD,gBAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB,QAFwB;AAGlD,cAAI,EAAE,CAAE,QAAQ,CAAC,EAAX,EAAe,kFAAU,CAAC,OAAX,CAAmB,QAAQ,CAAC,IAA5B,CAAf;AAH4C,SAAzB;AAAA,OAA3B;;AAMA,WAAK,qBAAL,CAA2B;AAAE,YAAI,EAAE,MAAM,CAAC,IAAP,IAAe,uGAAgB,CAAC;AAAxC,OAA3B;AAEA,gSAAuD,IAAvD,CAA4D,gBAAsB;AAAA,YAAnB,aAAmB,QAAnB,aAAmB;;AAChF,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,iFAAa,CAAC,OAAxC,EACE,oDAAC,aAAD,EAAc;AAAC,4BAAkB,EAAE,kBAArB;AACZ,aAAG,EAAE,MAAM,CAAC,IADA;AAEZ,cAAI,EAAE,2GAAkB,CAAC,mBAAnB,CAAuC,MAAM,CAAC,IAA9C;AAFM,SAAd,CADF;AAMD,OAPD;AAQD;AAjDH;AAAA;AAAA,6BAmDkB,EAnDlB,EAmD4B;AAAA;;AACxB,UAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,KAAD;AAAA,eAAmB;AACzC,qBAAW,EAAE,8EAAW,CAAC,OADgB;AAEzC,gBAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB,UAFiB;AAGzC,cAAI,EAAE,CAAE,KAAK,CAAC,EAAR,EAAY,kFAAU,CAAC,OAAX,CAAmB,KAAK,CAAC,IAAzB,CAAZ,CAHmC;AAIzC,gBAAM,EAAE,KAAK,CAAC,iBAAN,GAA0B;AAAE,aAAC,EAAE,IAAI,CAAC,KAAL,CAAW,KAAK,CAAC,iBAAjB;AAAL,WAA1B,GAAuE;AAJtC,SAAnB;AAAA,OAAxB;;AAOA,UAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,MAAD;AAAA,eAAqB;AAC5C,qBAAW,EAAE,8EAAW,CAAC,OADmB;AAE5C,gBAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB,MAFoB;AAG5C,cAAI,EAAE,CAAE,MAAM,CAAC,EAAT,EAAa,kFAAU,CAAC,OAAX,CAAmB,MAAM,CAAC,IAA1B,CAAb;AAHsC,SAArB;AAAA,OAAzB;;AAMA,sTAAqD,IAArD,CAA0D,iBAAqB;AAAA,YAAlB,YAAkB,SAAlB,YAAkB;;AAC7E,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,iFAAa,CAAC,OAAxC,EACE,oDAAC,YAAD,EAAa;AACX,aAAG,EAAE,EADM;AAEX,oBAAU,EAAE,EAFD;AAGX,qBAAW,EAAE,8EAAW,CAAC,SAHd;AAIX,yBAAe,EAAE,eAJN;AAKX,0BAAgB,EAAE,gBALP;AAMX,mBAAS;AANE,SAAb,CADF;AAUD,OAXD;AAYD;AA7EH;AAAA;AAAA,kCA+EoB;AAAA;;AAChB,0SAA4D,IAA5D,CAAiE,iBAAwB;AAAA,YAArB,eAAqB,SAArB,eAAqB;;AACvF,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,iFAAa,CAAC,KAAxC,EACE,oDAAC,eAAD,EAAgB;AAAC,qBAAW,EAAE,8EAAW,CAAC;AAA1B,WAAyC,MAAI,CAAC,aAAL,EAAzC,CAAhB,CADF;AAGD,OAJD;AAKD;AArFH;AAAA;AAAA,iCAuFsB,EAvFtB,EAuFgC;AAAA;;AAC5B,8SAA8D,IAA9D,CAAmE,iBAAyB;AAAA,YAAtB,gBAAsB,SAAtB,gBAAsB;;AAC1F,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,iFAAa,CAAC,KAAxC,EACE,oDAAC,gBAAD,EAAiB;AAAC,aAAG,EAAE,EAAN;AAAU,oBAAU,EAAE;AAAtB,WAA8B,MAAI,CAAC,aAAL,EAA9B,CAAjB,CADF;AAGD,OAJD;AAKD;AA7FH;AAAA;AAAA,mCA+FwB,EA/FxB,EA+FkC;AAAA;;AAC9B,kQAAkE,IAAlE,CAAuE,iBAA2B;AAAA,YAAxB,kBAAwB,SAAxB,kBAAwB;;AAChG,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,iFAAa,CAAC,KAAxC,EACE,oDAAC,kBAAD,EAAmB;AACjB,aAAG,EAAE,EADY;AAEjB,oBAAU,EAAE,EAFK;AAGjB,yBAAe,EAAE;AACf,uBAAW,EAAE,8EAAW,CAAC,SADV;AAEf,kBAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAFX;AAHA,WAOb,MAAI,CAAC,aAAL,EAPa,CAAnB,CADF;AAWD,OAZD;AAaD;AA7GH;AAAA;AAAA,kCA+GuB,OA/GvB,EA+GsC;AAAA;;AAClC,2RAAiE,IAAjE,CAAsE,iBAA0B;AAAA,YAAvB,iBAAuB,SAAvB,iBAAuB;;AAC9F,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,iFAAa,CAAC,KAAxC,EACE,oDAAC,iBAAD,EAAkB;AAAC,aAAG,EAAE,OAAN;AAAe,iBAAO,EAAE,OAAxB;AAAiC,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAA7C,SAAlB,CADF;AAGD,OAJD;AAKD;AArHH;AAAA;AAAA,4CAuHiC,OAvHjC,EAuHkD,UAvHlD,EAuHoE;AAAA;;AAChE,0SACG,IADH,CACQ,iBAAoC;AAAA,YAAjC,2BAAiC,SAAjC,2BAAiC;;AACxC,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,iFAAa,CAAC,KAAxC,EACE,oDAAC,2BAAD,EAA4B;AAC1B,aAAG,YAAK,OAAL,cAAgB,UAAhB,CADuB;AAE1B,iBAAO,EAAE,OAFiB;AAG1B,oBAAU,EAAE;AAHc,WAItB,MAAI,CAAC,aAAL,EAJsB,CAA5B,CADF;AAQD,OAVH;AAWD;AAnIH;AAAA;AAAA,wBAGiB;AACb,aAAO,uBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,iFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAiBwB;AACpB,aAAO,8EAAW,CAAC,SAAnB;AACD;AAnBH;AAAA;AAAA,wBAqB0B;AACtB,aAAO,kBAAP;AACD;AAvBH;;AAAA;AAAA,EAA0C,6FAA1C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AAGA;AAGA;AACA;AACA;AAEA;AACA;;IAEM,e;;;;;;;;;;;;;wBACqB;AACvB,aAAO,8EAAW,CAAC,MAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,qBAAsB;AADjB,OAAP;AAGD;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EAb2B,8DAAI,CAAC,S;;AAgB5B,IAAM,iBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,0BAwBe,WAxBf,EAwBuC;AAAA;;AACnC,6fAA6D,IAA7D,CAAkE,gBAA0B;AAAA,YAAvB,iBAAuB,QAAvB,iBAAuB;;AAC1F,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,oDAAC,iBAAD,EAAkB;AAAC,qBAAW,EAAE;AAAd,SAAlB,CAAjD;AACD,OAFD;AAGD;AA5BH;AAAA;AAAA,wBAGiB;AACb,aAAO,oBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE;AADF;AAFJ,OAAP;AAMD;AAdH;AAAA;AAAA,wBAgBwB;AACpB,aAAO,8EAAW,CAAC,MAAnB;AACD;AAlBH;AAAA;AAAA,wBAoB0B;AACtB,aAAO,eAAP;AACD;AAtBH;;AAAA;AAAA,EAAuC,8DAAI,CAAC,WAA5C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AAEA;AACA;AAEA,IAAM,SAAS,GAAG,2BAAlB;AAEO,IAAM,kBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,wBACqB;AACjB;;;AAGA,aAAO;AACL,qBAAa,EAAE;AACb,qBAAW,EAAE,8EAAW,CAAC,MADZ;AAEb,gBAAM,EAAE,oEAAO,CAAC,MAAR,CAAe;AAFV,SADV;AAML,cAAM,EAAE;AACN,qBAAW,EAAE,8EAAW,CAAC,OADnB;AAEN,gBAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFlB,SANH;AAWL,oBAAY,EAAE;AACZ,qBAAW,EAAE,8EAAW,CAAC,OADb;AAEZ,gBAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFZ,SAXT;AAgBL,iBAAS,EAAE;AACT,qBAAW,EAAE,8EAAW,CAAC,MADhB;AAET,gBAAM,EAAE,oEAAO,CAAC,MAAR,CAAe;AAFd,SAhBN;AAqBL,sBAAc,EAAE;AACd,qBAAW,EAAE,8EAAW,CAAC,OADX;AAEd,gBAAM,EAAE,oEAAO,CAAC,QAAR,CAAiB;AAFX;AArBX,OAAP;AA0BD;AA/BH;AAAA;AAAA,wBAiCqB;AACjB,aAAO,IAAP;AACD;AAnCH;AAAA;AAAA,wBAqCiC;AAC7B,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,sBAArC,CAAP;AACD;AAvCH;;AAAA;AAAA,EAAwC,kFAAxC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;;IAEM,iB;;;;;;;;;;;;;wBACqB;AACvB,aAAO,8EAAW,CAAC,QAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,uBAAwB;AADnB,OAAP;AAGD;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EAb6B,8DAAI,CAAC,S;;AAgB9B,IAAM,mBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,4BAyBc;AAAA;;AACV,6LAAoD,IAApD,CAAyD,gBAAqB;AAAA,YAAlB,YAAkB,QAAlB,YAAkB;;AAC5E,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,2DAAC,YAAD,EAAa,IAAb,CAAjD;AACD,OAFD;AAGD;AA7BH;AAAA;AAAA,wBAGiB;AACb,aAAO,sBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,gFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAiBwB;AACpB,aAAO,8EAAW,CAAC,QAAnB;AACD;AAnBH;AAAA;AAAA,wBAqB0B;AACtB,aAAO,iBAAP;AACD;AAvBH;;AAAA;AAAA,EAAyC,6FAAzC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AAGA;AAEA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;;IAEM,gB;;;;;;;;;;;;;wBACkB;AACpB,aAAO,8EAAW,CAAC,OAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,gCAA0C,aADrC;AAEL,gCAA0C;AAFrC,OAAP;AAID;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EAd4B,8DAAI,CAAC,S;;AAiB7B,IAAM,kBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,iCAKmB;AACf,WAAK,oBAAL,GAA4B,kGAAe,CAAC,WAAhB,CAA4B,oFAAY,CAAC,QAAzC,EAAmD,IAAnD,CAA5B;AACD;AAPH;AAAA;AAAA,mCA+BwB,gBA/BxB,EA+BkD,IA/BlD,EA+B+D;AAAA;;AAC3D,iYAAgE,IAAhE,CAAqE,gBAA2B;AAAA,YAAxB,kBAAwB,QAAxB,kBAAwB;;AAC9F,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EACE,oDAAC,kBAAD,EAAmB;AACjB,aAAG,EAAE,gBADY;AAEjB,YAAE,EAAE;AAFa,SAAnB,CADF;AAMD,OAPD;AAQD;AAxCH;AAAA;AAAA,kCA0C4C;AAAA;;AAAA,UAAvB,MAAuB,uEAAF,EAAE;AACxC,yNAAkE,IAAlE,CAAuE,iBAA4B;AAAA,YAAzB,mBAAyB,SAAzB,mBAAyB;;AACjG,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EACE,oDAAC,mBAAD,EAAoB;AAClB,cAAI,EAAE,MAAM,CAAC,IAAP,IAAe,EADH;AAElB,qBAAW,EAAE,MAAM,CAAC,WAAP,IAAsB;AAFjB,SAApB,CADF;AAMD,OAPD;AAQD;AAnDH;AAAA;AAAA,kCAqDgD;AAAA,UAAxB,OAAwB,uEAAF,EAAE;AAAU;AArD1D;AAAA;AAAA,wBASiB;AACb,aAAO,qBAAP;AACD;AAXH;AAAA;AAAA,wBAiBwB;AACpB,aAAO,8EAAW,CAAC,OAAnB;AACD;AAnBH;AAAA;AAAA,wBAqB6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,KAAK,oBAAL,CAA0B,sBAD5B;AAEP,qBAAW,EAAE,sFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AA7BH;AAAA;AAAA,wBAa0B;AACtB,aAAO,gBAAP;AACD;AAfH;;AAAA;AAAA,EAAwC,6FAAxC,E;;;;;;;;;;;;;;;;;;;;;ACnCA;AAEO,IAAM,oBAAb;AAGE,gCAAY,OAAZ,EAAwD;AAAA;;AACtD,SAAK,sBAAL,GAA8B,OAAO,CAAC,sBAAtC;AACD;;AALH;AAAA;AAAA,wBAOiB;AACb,aAAO,oFAAY,CAAC,QAApB;AACD;AATH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AACA;;IAEM,e;;;;;;;;;;;;;wBACkB;AACpB,aAAO,8EAAW,CAAC,MAAnB;AACD;;;wBAEqB;AACpB,aAAO,CACL,YADK,EAEL,cAFK,CAAP;AAID;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EAd2B,8DAAI,CAAC,S;;AAiB5B,IAAM,iBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,+BAyBoB,QAzBpB,EAyBoC;AAAA;;AAChC,qQAAuD,IAAvD,CAA4D,gBAAuB;AAAA,YAApB,cAAoB,QAApB,cAAoB;;AACjF,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,oDAAC,cAAD,EAAe;AAAC,kBAAQ,EAAE,QAAX;AAAqB,oBAAU,EAAE;AAAA,mBAAM,KAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAjC,SAAf,CADF;AAGD,OAJD;AAKD;AA/BH;AAAA;AAAA,iCAiCsB,EAjCtB,EAiCkC,MAjClC,EAiCoD;AAAA;;AAChD,2MAA2D,IAA3D,CAAgE,iBAAyB;AAAA,YAAtB,gBAAsB,SAAtB,gBAAsB;;AACvF,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,oDAAC,gBAAD,EAAiB;AACf,YAAE,EAAE,EADW;AAEf,cAAI,EAAE,MAAM,CAAC,IAFE;AAGf,gBAAM,EAAE,MAAM,CAAC,MAHA;AAIf,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAJG,SAAjB,CADF;AAQD,OATD;AAUD;AA5CH;AAAA;AAAA,wBAGiB;AACb,aAAO,oBAAP;AACD;AALH;AAAA;AAAA,wBAWwB;AACpB,aAAO,8EAAW,CAAC,MAAnB;AACD;AAbH;AAAA;AAAA,wBAe6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,sFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAvBH;AAAA;AAAA,wBAO0B;AACtB,aAAO,eAAP;AACD;AATH;;AAAA;AAAA,EAAuC,6FAAvC,E;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA,IAAM,SAAS,GAAG,yBAAlB;AAMO,IAAM,gBAAgB,GAAG,2CAAW,UAAS,KAAT,EAAqC;AAAA,8BAC3C,KAD2C,CACtE,cADsE;AAAA,MACtE,cADsE,sCACrD,KADqD;AAG9E,MAAM,kBAAkB,GAAG,0FAAU,CAAqB,kEAAQ,CAAC,WAA9B,CAArC;;AAEA,MAAM,YAAY,GAAG,SAAf,YAAe,CAAC,KAAD;AAAA,WAAqB,kBAAkB,CAAC,QAAnB,CAA4B,KAA5B,EAA0C;AAClF,YAAM,EAAE,yEAAU,CAAC,KAD+D;AAElF,gBAAU,EAAE,yEAAU,CAAC,MAF2D;AAGlF,mBAAa,EAAE,4EAAa,CAAC,KAHqD;AAIlF,gBAAU,EAAE,mFAAe,CAAC,kBAAhB,CAAmC,8EAAe,CAAC,UAAnD,CAJsE;AAKlF,cAAQ,EAAE,8EAAe,CAAC;AALwD,KAA1C,CAArB;AAAA,GAArB;;AAQA,SACE,oDAAC,gHAAD,EAAiB;AACf,WAAO,EAAE,6EAAY,CAAC,MADP;AAEf,aAAS,EAAC,mBAFK;AAGf,YAAQ,EAAC,SAHM;AAIf,gBAAY,EAAE;AAJC,GAAjB,EAMI,CAAC,cAAD,IAAmB,oDAAC,0EAAD,EAAK;AAAC,UAAM,EAAC,aAAR;AAAsB,aAAS,EAAE;AAAjC,GAAL,CANvB,CADF;AAUD,CAvB+B,CAAzB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBP;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA,IAAM,SAAS,GAAG,kGAAe,CAAC,gBAAhB,CAAiC,iBAAjC,CAAlB;;IAEM,kB;;;;;;;;;;;;;4BACW,K,EAAiB;AAC9B,aAAO,KAAK,CAAC,gBAAN,IAA0B,KAAK,CAAC,EAAvC;AACD;;;wBAEoB;AACnB,aAAO,UAAC,KAAD,EAAoB,KAApB,EAAyC;AAC9C,YAAM,WAAW,GAAG,KAAK,CAAC,GAAN,CAAU,QAAV,CAApB;AACA,YAAM,WAAW,GAAG,KAAK,CAAC,GAAN,CAAU,QAAV,CAApB;AACA,YAAI,WAAW,KAAK,oBAAoB,CAAC,OAAzC,EACE,OAAO,CAAP;AACF,YAAI,WAAW,KAAK,oBAAoB,CAAC,OAAzC,EACE,OAAO,CAAC,CAAR;AAEF,eAAO,CAAP;AACD,OATD;AAUD;;;;EAhB8B,8DAAI,CAAC,U;;AAmBtC,IAAY,oBAAZ;;AAAA,WAAY,oBAAZ,EAAgC;AAC9B;AACA;AACA;AACD,CAJD,EAAY,oBAAoB,KAApB,oBAAoB,MAAhC;AAeA;;;;;;;AAKO,IAAM,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,iCAoBmB;AACf,WAAK,kBAAL;AACA,WAAK,qBAAL;AACA,WAAK,aAAL;AACD;AAxBH;AAAA;AAAA,yCA0B4B;AACxB,WAAK,kBAAL,GAA0B,kGAAe,CAAC,WAAhB,CAA4B,mEAAQ,CAAC,WAArC,EAAkD,IAAlD,CAA1B;AACA,WAAK,mBAAL,GAA2B,kGAAe,CAAC,WAAhB,CAA4B,mEAAQ,CAAC,YAArC,EAAmD,IAAnD,CAA3B;AACA,WAAK,YAAL,GAAoB,kGAAe,CAAC,WAAhB,CAA4B,iGAAc,CAAC,KAA3C,EAAkD,IAAlD,CAApB;AACD;AA9BH;AAAA;AAAA,4CAgC+B;AAC3B,WAAK,OAAL,GAAe,KAAK,kBAAL,CAAwB,aAAxB,EAAf;AACA,WAAK,YAAL,GAAoB,KAAK,mBAAL,CAAyB,eAAzB,EAApB;AACA,WAAK,QAAL,GAAgB,IAAI,kBAAJ,EAAhB;AACA,WAAK,aAAL,GAAqB,IAAI,8DAAI,CAAC,UAAT,EAArB;AAEA,WAAK,OAAL,CAAa,IAAb,CAAkB,KAAK,SAAvB,EAAkC,IAAlC;AACA,WAAK,YAAL,CAAkB,IAAlB,CAAuB,KAAK,cAA5B,EAA4C,IAA5C;AACD;AAxCH;AAAA;AAAA,oCA0CuB;AACnB,WAAK,QAAL,CAAc,KAAK,OAAnB,EAA4B,KAA5B,EAAmC,KAAK,SAAxC;AACA,WAAK,QAAL,CAAc,KAAK,YAAnB,EAAiC,KAAjC,EAAwC,KAAK,cAA7C;AAEA,WAAK,QAAL,CAAc,KAAK,OAAnB,EAA4B,QAA5B,EAAsC,KAAK,YAA3C;AACA,WAAK,QAAL,CAAc,KAAK,YAAnB,EAAiC,QAAjC,EAA2C,KAAK,iBAAhD;AAEA,WAAK,QAAL,CAAc,KAAK,OAAnB,EAA4B,QAA5B,EAAsC,KAAK,cAA3C;AACA,WAAK,QAAL,CAAc,KAAK,YAAnB,EAAiC,QAAjC,EAA2C,KAAK,mBAAhD;AAEA,WAAK,QAAL,CACE,8FAAqB,CAAC,aADxB,EAEE,wGAAgB,CAAC,2BAFnB,EAGE,KAAK,yBAHP;AAKD;AAzDH;AAAA;AAAA,mCA2DyB,MA3DzB,EA2D2C;AACvC,aAAO;AACL,UAAE,EAAE,MAAM,CAAC,GAAP,CAAW,IAAX,CADC;AAEL,YAAI,EAAE,MAAM,CAAC,GAAP,CAAW,MAAX,CAFD;AAGL,gBAAQ,EAAE,MAAM,CAAC,GAAP,CAAW,UAAX,CAHL;AAIL,cAAM,EAAE,oBAAoB,CAAC,SAJxB;AAKL,wBAAgB,EAAE,MAAM,CAAC,GAAP,CAAW,kBAAX;AALb,OAAP;AAOD;AAnEH;AAAA;AAAA,wCAqE8B,WArE9B,EAqEqD;AACjD,aAAO;AACL,UAAE,EAAE,WAAW,CAAC,GAAZ,CAAgB,kBAAhB,CADC;AAEL,YAAI,EAAE,WAAW,CAAC,GAAZ,CAAgB,OAAhB,EAAyB,GAAzB,CAA6B,MAA7B,CAFD;AAGL,gBAAQ,EAAE,WAAW,CAAC,GAAZ,CAAgB,oBAAhB,CAHL;AAIL,cAAM,EAAE,wGAAkB,CAAC,QAAnB,CAA4B,WAA5B,IAA2C,oBAAoB,CAAC,OAAhE,GAA0E,oBAAoB,CAAC,UAJlG;AAKL,wBAAgB,EAAE,WAAW,CAAC,GAAZ,CAAgB,kBAAhB,CALb;AAML,eAAO,EAAE,WAAW,CAAC,GAAZ,CAAgB,OAAhB,EAAyB,GAAzB,CAA6B,IAA7B;AANJ,OAAP;AAQD;AA9EH;AAAA;AAAA,8BAgFoB,MAhFpB,EAgFsC;AAClC,WAAK,QAAL,CAAc,GAAd,CAAkB,KAAK,cAAL,CAAoB,MAApB,CAAlB;AACD;AAlFH;AAAA;AAAA,mCAoFyB,WApFzB,EAoFgD;AAC5C,UAAM,QAAQ,GAAG,KAAK,QAAL,CAAc,SAAd,CAAwB;AAAE,wBAAgB,EAAE,WAAW,CAAC,GAAZ,CAAgB,kBAAhB;AAApB,OAAxB,CAAjB;;AAEA,UAAI,QAAJ,EAAc;AACZ,gBAAQ,CAAC,GAAT,CAAa,KAAK,mBAAL,CAAyB,WAAzB,CAAb;AACA;AACD;;AAED,WAAK,QAAL,CAAc,GAAd,CAAkB,KAAK,mBAAL,CAAyB,WAAzB,CAAlB;AACD;AA7FH;AAAA;AAAA,iCA+FuB,MA/FvB,EA+FyC;AACrC,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,MAAM,CAAC,GAAP,CAAW,IAAX,CAAlB,CAAb;AACA,WAAK,QAAL,CAAc,MAAd,CAAqB,IAArB;AACA,WAAK,aAAL,CAAmB,MAAnB,CAA0B,IAA1B;AACD;AAnGH;AAAA;AAAA,sCAqG4B,WArG5B,EAqGmD;AAC/C,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,WAAW,CAAC,GAAZ,CAAgB,kBAAhB,CAAlB,CAAb;AACA,WAAK,QAAL,CAAc,MAAd,CAAqB,IAArB;AACA,WAAK,aAAL,CAAmB,MAAnB,CAA0B,IAA1B;AAEA,oDAAK,CAAC,OAAN,CAAc,KAAK,WAAnB,EAAgC,OAAhC,CAAwC,wGAAgB,CAAC,oBAAzD;AACD;AA3GH;AAAA;AAAA,mCA6GyB,MA7GzB,EA6G2C;AACvC,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,MAAM,CAAC,GAAP,CAAW,IAAX,CAAlB,CAAb;AACA,UAAI,CAAC,GAAL,CAAS,KAAK,cAAL,CAAoB,MAApB,CAAT;AACD;AAhHH;AAAA;AAAA,wCAkH8B,WAlH9B,EAkHqD;AACjD,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,WAAW,CAAC,GAAZ,CAAgB,kBAAhB,CAAlB,CAAb;AACA,UAAI,CAAC,GAAL,CAAS,KAAK,mBAAL,CAAyB,WAAzB,CAAT;;AAEA,UAAI,wGAAkB,CAAC,QAAnB,CAA4B,WAA5B,CAAJ,EAA8C;AAC5C,aAAK,kBAAL,CAAwB,IAAxB;AACD;AACF;AAzHH;AAAA;AAAA,uCA2H6B,WA3H7B,EA2HoD;AAChD,UAAI,KAAK,aAAL,CAAmB,SAAnB,CAA6B;AAAE,UAAE,EAAE,WAAW,CAAC,GAAZ,CAAgB,IAAhB;AAAN,OAA7B,CAAJ,EACE;AAEF,WAAK,aAAL,CAAmB,GAAnB,CAAuB,WAAvB;AAEA,UAAM,KAAK,GAAc;AACvB,eAAO,EAAE,uGAAmB,CAAC,IADN;AAEvB,YAAI,EAAE,6FAAS,CAAC,IAFO;AAGvB,eAAO,EAAE,SAAS,CAAC,mBAAD,EAAsB;AAAE,mBAAS,EAAE,WAAW,CAAC,GAAZ,CAAgB,MAAhB;AAAb,SAAtB;AAHK,OAAzB;;AANgD,kCAYZ,uFAAc,CAAC,iBAAf,EAZY;AAAA,UAY/B,cAZ+B,yBAYxC,OAZwC;;AAchD,UAAM,cAAc,GAAG,yEAAa,CAAC,mBAAd,EAAvB;AACA,UAAM,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,IAAf,CAAoB,WAAC;AAAA,eACzC,cAAc,CAAC,WAAf,KAA+B,CAAC,CAAC,WAAjC,IAAgD,cAAc,CAAC,MAAf,KAA0B,CAAC,CAAC,MADnC;AAAA,OAArB,CAAtB;;AAIA,UAAI,CAAC,WAAL,EAAkB;AAChB,aAAK,CAAC,WAAN,GAAoB,SAAS,CAAC,uBAAD,CAA7B;AACA,aAAK,CAAC,gBAAN,GAAyB,WAAzB;AACA,aAAK,CAAC,OAAN,GAAgB;AACd,qBAAW,EAAE,+EAAW,CAAC,OADX;AAEd,gBAAM,EAAE,qEAAO,CAAC,OAAR,CAAgB;AAFV,SAAhB;AAID;;AAED,WAAK,YAAL,CAAkB,WAAlB,CAA8B,KAA9B;AACD;AAxJH;AAAA;AAAA,8CA0JoC,WA1JpC,EA0J2D;AACvD,UAAM,KAAK,GAAG,WAAW,CAAC,GAAZ,CAAgB,OAAhB,CAAd;AAEA,UAAM,qBAAqB,GAAG;AAC5B,mBAAW,EAAE,+EAAW,CAAC,OADG;AAE5B,cAAM,EAAE,qEAAO,CAAC,OAAR,CAAgB,UAFI;AAG5B,YAAI,EAAE,CAAE,KAAK,CAAC,GAAN,CAAU,IAAV,CAAF,EAAmB,mFAAU,CAAC,OAAX,CAAmB,KAAK,CAAC,GAAN,CAAU,MAAV,CAAnB,CAAnB;AAHsB,OAA9B;AAMA,WAAK,YAAL,CAAkB,WAAlB,CAA8B;AAC5B,YAAI,EAAE,6FAAS,CAAC,OADY;AAE5B,eAAO,EAAE,SAAS,CAAC,4BAAD,EAA+B;AAAE,mBAAS,EAAE,KAAK,CAAC,GAAN,CAAU,MAAV;AAAb,SAA/B,CAFU;AAG5B,eAAO,EAAE,SAAS,CAAC,4BAAD,EAA+B;AAAE,mBAAS,EAAE,KAAK,CAAC,GAAN,CAAU,MAAV;AAAb,SAA/B,CAHU;AAI5B,eAAO,EAAE,qBAJmB;AAK5B,mBAAW,EAAE,SAAS,CAAC,gCAAD,EAAmC;AAAE,mBAAS,EAAE,KAAK,CAAC,GAAN,CAAU,MAAV;AAAb,SAAnC,CALM;AAM5B,wBAAgB,EAAE;AANU,OAA9B;AAQD;AA3KH;AAAA;AAAA,iCA6KsB,MA7KtB,EA6KoC;AAChC,WAAK,kBAAL,CAAwB,YAAxB,CAAqC,MAArC;AACD;AA/KH;AAAA;AAAA,qCAiL0B,MAjL1B,EAiLwC;AACpC,UAAM,WAAW,GAAG,KAAK,YAAL,CAAkB,SAAlB,CAA4B;AAAE,wBAAgB,EAAE;AAApB,OAA5B,CAApB;AACA,WAAK,mBAAL,CAAyB,gBAAzB,CAA0C,WAA1C;AACD;AApLH;AAAA;AAAA,8BAsLmB,IAtLnB,EAsLuC;AAAA;;AACnC,UAAI,IAAI,CAAC,MAAL,KAAgB,oBAAoB,CAAC,SAAzC,EACE,8DAAI,CAAC,WAAL,UAAuB,IAAI,kFAAJ,CAAa,+BAAb,CAAvB;AAEF,WAAK,aAAL,CAAmB,MAAnB,CAA0B,IAA1B;AAEA,UAAM,WAAW,GAAG,KAAK,YAAL,CAAkB,SAAlB,CAA4B;AAAE,wBAAgB,EAAE,IAAI,CAAC;AAAzB,OAA5B,CAApB;AAEA,WAAK,mBAAL,CAAyB,gBAAzB,CAA0C,WAA1C,EAAuD,YAAK;AAC1D,aAAI,CAAC,mBAAL,CAAyB,sBAAzB;AACD,OAFD;AAGD;AAjMH;AAAA;AAAA,+BAmMoB,IAnMpB,EAmMwC;AACpC,UAAI,IAAI,CAAC,MAAL,KAAgB,oBAAoB,CAAC,SAAzC,EACE;AAEF,UAAM,MAAM,GAAG,KAAK,OAAL,CAAa,GAAb,CAAiB,IAAI,CAAC,EAAtB,CAAf;AAEA;;;;;;;AAMA,UAAI,MAAM,CAAC,GAAP,CAAW,SAAX,CAAJ,EACE;AAEF,oEAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,mBAAW,EAAE,+EAAW,CAAC,MADA;AAEzB,cAAM,EAAE,qEAAO,CAAC,MAAR,CAAe,WAFE;AAGzB,YAAI,EAAE,CAAC,IAAI,CAAC,EAAN;AAHmB,OAA3B;AAKD;AAvNH;AAAA;AAAA,yCAyN8B,OAzN9B,EAyN+C,IAzN/C,EAyN2D;AACvD,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,SAAd,CAAwB;AAAE,eAAO,EAAP;AAAF,OAAxB,CAAb;AAEA,UAAI,CAAC,IAAL,EAAW;AAEX,UAAI,CAAC,GAAL,CAAS;AAAE,YAAI,EAAJ;AAAF,OAAT;AACD;AA/NH;AAAA;AAAA,oCAiOsB;AAClB,aAAO,KAAK,QAAZ;AACD;AAnOH;AAAA;AAAA,wBAYiB;AACb,aAAO,mEAAQ,CAAC,cAAhB;AACD;AAdH;AAAA;AAAA,wBAgBwB;AACpB,aAAO,mFAAe,CAAC,eAAvB;AACD;AAlBH;;AAAA;AAAA,EAA2C,8DAAI,CAAC,OAAhD,E;;;;;;;;;;;;;;;;;;;;;;;;AC9DA;AACA;AAEA;AAKA;AAEA,IAAM,mBAAmB,GAAG;AAAA,6BACnB,GADmB,EACJ,OADI,EACgB;AACxC,WAAO;AACL,SAAG,mCAA4B,GAAG,CAAC,GAAJ,CAAQ,YAAE;AAAA,0CAAwB,EAAxB;AAAA,OAAV,CAA5B,CADE;AAEL,SAAG,0BAAmB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAnB,CAFE;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE,KAJN;AAKL,UAAI,EAAE,mFAAS,CAAC;AALX,KAAP;AAOD,GATyB;AAW1B,QAX0B,kBAWnB,GAXmB,EAWJ,OAXI,EAWgB;AACxC,WAAO;AACL,SAAG,0CAAmC,GAAG,CAAC,GAAJ,CAAQ,YAAE;AAAA,0CAAwB,EAAxB;AAAA,OAAV,CAAnC,CADE;AAEL,SAAG,2BAAoB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAApB,CAFE;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE,KAJN;AAKL,UAAI,EAAE,mFAAS,CAAC;AALX,KAAP;AAOD,GAnByB;AAqB1B,OArB0B,iBAqBpB,GArBoB,EAqBL,OArBK,EAqBe;AACvC,WAAO;AACL,SAAG,yCAAkC,GAAG,CAAC,GAAJ,CAAQ,YAAE;AAAA,0CAAwB,EAAxB;AAAA,OAAV,CAAlC,CADE;AAEL,SAAG,0BAAmB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAnB,CAFE;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE,KAJN;AAKL,UAAI,EAAE,mFAAS,CAAC;AALX,KAAP;AAOD,GA7ByB;AA+B1B,KA/B0B,eA+BtB,EA/BsB,EA+BV,OA/BU,EA+B0B;AAClD,WAAO;AACL,SAAG,mCAA4B,EAA5B,CADE;AAEL,SAAG,yBAAkB,EAAlB,CAFE;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE;AAJN,KAAP;AAMD,GAtCyB;AAwC1B,QAxC0B,kBAwCnB,OAxCmB,EAwCmB;AAC3C,WAAO;AACL,SAAG,EAAE,yDADA;AAEL,SAAG,EAAE,SAFA;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE;AAJN,KAAP;AAMD,GA/CyB;AAiD1B,gBAjD0B,0BAiDX,eAjDW,EAiDkC,OAjDlC,EAiDqE;AAC7F,WAAO;AACL,SAAG,EAAE,wBADA;AAEL,SAAG,4BAAqB,eAAe,CAAC,EAArC,CAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,IAHX;AAIL,aAAO,EAAP,OAJK;AAKL,UAAI,EAAE;AALD,KAAP;AAOD;AAzDyB,CAA5B;AAsFO,IAAM,4BAAb;AAGE,wCAAY,OAAZ,EAAkD;AAAA;;AAChD,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,sCAW2B,GAX3B,EAW0C,QAX1C,EAW+D;AAC3D,mEAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,UAAnB,CAA2B,GAA3B,EAAgC,QAAhC,CAAlC;AACD;AAbH;AAAA;AAAA,uCAc4B,GAd5B,EAc2C,QAd3C,EAcgE;AAC5D,mEAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,MAApB,CAA2B,GAA3B,EAAgC,QAAhC,CAAlC;AACD;AAhBH;AAAA;AAAA,sCAiB2B,GAjB3B,EAiB0C,QAjB1C,EAiB+D;AAC3D,mEAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,KAApB,CAA0B,GAA1B,EAA+B,QAA/B,CAAlC;AACD;AAnBH;AAAA;AAAA,mCAoBwB,EApBxB,EAoBoC,QApBpC,EAoBwE;AACpE,mEAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,GAApB,CAAwB,EAAxB,EAA4B,UAAC,IAAD,EAAc;AAC1E,gBAAQ,CAAC,IAAI,8DAAI,CAAC,KAAT,CAAe,IAAf,CAAD,CAAR;AACD,OAFiC,CAAlC;AAGD;AAxBH;AAAA;AAAA,oCAyByB,QAzBzB,EAyBgE;AAC5D,mEAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,MAApB,CAA2B,QAA3B,CAAlC;AACD;AA3BH;AAAA;AAAA,wCA4B6B,OA5B7B,EA4BkE,QA5BlE,EA4BuG;AACnG,mEAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,cAApB,CAAmC,OAAnC,EAA4C,QAA5C,CAAlC;AACD;AA9BH;AAAA;AAAA,wBAOiB;AACb,aAAO,sEAAY,CAAC,WAApB;AACD;AATH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjGA;AAEA;AACA;AAGA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,kGAAe,CAAC,gBAAhB,CAAiC,iBAAjC,CAAlB;AAEO,IAAM,kBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,iCAMmB;AACf;;AAEA,WAAK,sBAAL,GAA8B,kGAAe,CAAC,WAAhB,CAA4B,uEAAY,CAAC,WAAzC,EAAsD,IAAtD,CAA9B;AACA,WAAK,mBAAL,GAA2B,kGAAe,CAAC,WAAhB,CAA4B,mEAAQ,CAAC,YAArC,EAAmD,IAAnD,CAA3B;AACA,WAAK,eAAL,GAAuB,kGAAe,CAAC,WAAhB,CAA4B,uEAAY,CAAC,IAAzC,EAA+C,IAA/C,CAAvB;AACA,WAAK,YAAL,GAAoB,kGAAe,CAAC,WAAhB,CAA4B,iGAAc,CAAC,KAA3C,EAAkD,IAAlD,CAApB;AAEA,WAAK,QAAL,CAAc,KAAK,WAAnB,EAAgC,uGAAgB,CAAC,WAAjD,EAA8D,KAAK,aAAnE;AACA,WAAK,QAAL,CAAc,KAAK,WAAnB,EAAgC,uGAAgB,CAAC,eAAjD,EAAkE,KAAK,SAAvE;AACA,WAAK,QAAL,CAAc,KAAK,WAAnB,EAAgC,uGAAgB,CAAC,gBAAjD,EAAmE,KAAK,SAAxE;AACD;AAjBH;AAAA;AAAA,kCAmBwB,KAnBxB,EAmBuC;AACnC,UAAM,KAAK,GAAc;AACvB,YAAI,EAAE,6FAAS,CAAC,OADO;AAEvB,eAAO,EAAE,SAAS,CAAC,yBAAD,CAFK;AAGvB,eAAO,EAAE,KAAK,CAAC,MAAN,KAAiB,CAAjB,GACL,SAAS,CAAC,4BAAD,EAA+B;AAAE,mBAAS,EAAE,KAAK,CAAC,CAAD,CAAL,CAAS;AAAtB,SAA/B,CADJ,GAEL,SAAS,CAAC,8BAAD,EAAiC;AAAE,qBAAW,EAAE,KAAK,CAAC;AAArB,SAAjC;AALU,OAAzB;;AADmC,kCASC,uFAAc,CAAC,iBAAf,EATD;AAAA,UASlB,cATkB,yBAS3B,OAT2B;;AAWnC,UAAM,cAAc,GAAG,yEAAa,CAAC,mBAAd,EAAvB;AACA,UAAM,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,IAAf,CAAoB,WAAC;AAAA,eACzC,cAAc,CAAC,WAAf,KAA+B,CAAC,CAAC,WAAjC,IAAgD,cAAc,CAAC,MAAf,KAA0B,CAAC,CAAC,MADnC;AAAA,OAArB,CAAtB,CAZmC,CAgBnC;;AACA,UAAI,CAAC,WAAL,EAAkB;AAChB,aAAK,CAAC,WAAN,GAAoB,SAAS,CAAC,6BAAD,EAAgC;AAAE,oBAAU,EAAE,KAAK,CAAC;AAApB,SAAhC,CAA7B;AACA,aAAK,CAAC,OAAN,GAAgB;AACd,qBAAW,EAAE,+EAAW,CAAC,OADX;AAEd,gBAAM,EAAE,qEAAO,CAAC,OAAR,CAAgB;AAFV,SAAhB;AAIA,aAAK,CAAC,gBAAN,GAAyB,WAAzB;AACD;;AAED,WAAK,YAAL,CAAkB,WAAlB,CAA8B,KAA9B;AACD;AA9CH;AAAA;AAAA,gCAgDmB;AACf,UAAM,UAAU,GAAG,KAAK,aAAL,EAAnB;AAEA,UAAI,UAAU,CAAC,IAAX,CAAgB,gBAAM;AAAA,eAAI,MAAM,CAAC,GAAP,CAAW,UAAX,IAAyB,GAA7B;AAAA,OAAtB,CAAJ,EACE;AAEF,oDAAK,CAAC,OAAN,CAAc,KAAK,WAAnB,EAAgC,OAAhC,CAAwC,uGAAgB,CAAC,UAAzD;AACD;AAvDH;AAAA;AAAA,8BAyDoB,IAzDpB,EAyD8B;AAC1B,UAAM,MAAM,GAAG,KAAK,QAAL,CAAc,KAAd,CAAoB,IAApB,CAAf;AAEA,aAAO,KAAK,aAAL,GAAqB,GAArB,CAAyB,MAAzB,CAAP;AACD;AA7DH;AAAA;AAAA,mCA+DyB,MA/DzB,EA+D6C,QA/D7C,EA+D0D;AAAA;;AACtD,YAAM,CAAC,GAAP,CAAW,SAAX,EAAsB,IAAtB;AACA,WAAK,eAAL,CAAqB,cAArB,CAAoC,UAAC,IAAD,EAAqB;AACvD,aAAI,CAAC,eAAL,CAAqB,YAArB,CAAkC,UAAC,SAAD,EAA0B;AAC1D,eAAI,CAAC,sBAAL,CAA4B,mBAA5B,CAAgD;AAC9C,cAAE,EAAE,MAAM,CAAC,GAAP,CAAW,IAAX,CAD0C;AAE9C,kBAAM,EAAE,IAAI,CAAC,EAFiC;AAG9C,sBAAU,EAAE,IAAI,CAAC,UAH6B;AAI9C,qBAAS,EAAE,SAAS,CAAC,EAJyB;AAK9C,sBAAU,EAAE,SAAS,CAAC,YAAV,CAAuB,EALW;AAM9C,gCAAoB,EAAE,gGAAoB,CAAC,MANG;AAO9C,kBAAM,EAAE,8EAAW,CAAC,IAP0B;AAQ9C,mBAAO,EAAE,QAAQ,CAAC,GAR4B;AAS9C,2BAAe,EAAE;AACf,oCAAsB,EAAE,2GAAyB,CAAC;AADnC,aAT6B;AAY9C,iBAAK,EAAE;AAAE,kBAAI,EAAE,MAAM,CAAC,GAAP,CAAW,MAAX,CAAR;AAA4B,yBAAW,EAAE,MAAM,CAAC,GAAP,CAAW,aAAX;AAAzC;AAZuC,WAAhD,EAaG,UAAC,IAAD,EAAc;AACf,kBAAM,CAAC,GAAP,CAAW,kBAAX,EAA+B,IAAI,CAAC,gBAApC;;AACA,iBAAI,CAAC,mBAAL,CAAyB,sBAAzB,CAAgD;AAC9C,0BAAY,EAAE;AADgC,aAAhD;AAGD,WAlBD;AAmBD,SApBD;AAqBD,OAtBD;AAuBD;AAxFH;AAAA;AAAA,8BA0FsB,IA1FtB,EA0FkC,QA1FlC,EA0F+C;AAAA;;AAC3C,wFAAgB,IAAhB,EAAsB,QAAtB;;AAEA,UAAM,MAAM,GAAG,KAAK,SAAL,CAAe,IAAf,CAAf;AAEA;;;;;;AAKA,UAAI,MAAM,CAAC,GAAP,CAAW,iBAAX,CAAJ,EAAmC;AACjC,aAAK,YAAL,CAAkB,MAAlB,EAA0B,wBAA1B,EAAoD,YAAK;AACvD,gBAAI,CAAC,cAAL,CAAoB,MAApB,EAA4B,QAA5B;AACD,SAFD;AAGD,OAJD,MAIO;AACL,aAAK,cAAL,CAAoB,MAApB,EAA4B,QAA5B;AACD;AACF;AA3GH;;AAAA;AAAA,EAAwC,0GAAxC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;;IAEM,oB;;;;;;;;;;;;;wBACkB;AACpB,aAAO,8EAAW,CAAC,YAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,oCAAwC,gBADnC;AAEL,oCAAwC,gBAFnC;AAGL,+CAAwC,qBAHnC;AAIL,+CAAwC;AAJnC,OAAP;AAMD;;;wBAEqB;AACpB,aAAO,CACL,YADK,EAEL,aAFK,EAGL,YAHK,EAIL,aAJK,EAKL,aALK,CAAP;AAOD;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EA1BgC,8DAAI,CAAC,S;;AA6BjC,IAAM,sBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,mCAyBwB,WAzBxB,EAyBgD;AAAA;;AAC5C,siBACG,IADH,CACQ,gBAAiC;AAAA,YAA9B,wBAA8B,QAA9B,wBAA8B;;AACrC,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EACE,oDAAC,wBAAD,EAAyB;AAAC,qBAAW,EAAE;AAAd,SAAzB,CADF;AAGD,OALH;AAMD;AAhCH;AAAA;AAAA,mCAkCwB,WAlCxB,EAkCgD;AAAA;;AAC5C,siBACG,IADH,CACQ,iBAAiC;AAAA,YAA9B,wBAA8B,SAA9B,wBAA8B;;AACrC,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EACE,oDAAC,wBAAD,EAAyB;AAAC,qBAAW,EAAE;AAAd,SAAzB,CADF;AAGD,OALH;AAMD;AAzCH;AAAA;AAAA,0CA2C4B;AAAA;;AACxB,ugBACG,IADH,CACQ,iBAAgC;AAAA,YAA7B,uBAA6B,SAA7B,uBAA6B;AACpC,YAAM,gBAAgB,GAAG;AACvB,gBAAM,EAAE,yEAAU,CAAC,IADI;AAEvB,kBAAQ,EAAE,8EAAe,CAAC,cAFH;AAGvB,oBAAU,EAAE,yEAAU,CAAC;AAHA,SAAzB;;AAMA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EACE,oDAAC,uBAAD,EAAwB;AAAC,0BAAgB,EAAE,gBAAnB;AAAqC,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAjD,SAAxB,CADF;AAGD,OAXH;AAYD;AAxDH;AAAA;AAAA,0CA0D4B;AAAA;;AACxB,ugBACG,IADH,CACQ,iBAAgC;AAAA,YAA7B,uBAA6B,SAA7B,uBAA6B;AACpC,YAAM,gBAAgB,GAAG;AACvB,gBAAM,EAAE,yEAAU,CAAC,IADI;AAEvB,kBAAQ,EAAE,8EAAe,CAAC,cAFH;AAGvB,oBAAU,EAAE,yEAAU,CAAC;AAHA,SAAzB;;AAMA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,OAAxC,EACE,oDAAC,uBAAD,EAAwB;AAAC,0BAAgB,EAAE,gBAAnB;AAAqC,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAjD,SAAxB,CADF;AAGD,OAXH;AAYD;AAvEH;AAAA;AAAA,iCAyEmB;AAAA;;AACf,6eACG,IADH,CACQ,iBAA0B;AAAA,YAAvB,iBAAuB,SAAvB,iBAAuB;AAC9B,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,MADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,IAFI;AAGvB,uBAAa,EAAE,4EAAa,CAAC,QAHN;AAIvB,oBAAU,EAAE,kFAAmB,CAAC,MAJT;AAKvB,kBAAQ,EAAE,8EAAe,CAAC;AALH,SAAzB;;AAQA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,oDAAC,iBAAD,EAAkB;AAAC,0BAAgB,EAAE,gBAAnB;AAAqC,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAjD,SAAlB,CADF;AAGD,OAbH;AAcD;AAxFH;AAAA;AAAA,gCA0FqB,EA1FrB,EA0F+B;AAAA;;AAC3B,qeACG,IADH,CACQ,iBAAwB;AAAA,YAArB,eAAqB,SAArB,eAAqB;AAC5B,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,IADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,IAFI;AAGvB,uBAAa,EAAE,4EAAa,CAAC,QAHN;AAIvB,kBAAQ,EAAE,8EAAe,CAAC;AAJH,SAAzB;;AAOA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,oDAAC,eAAD,EAAgB;AAAC,YAAE,EAAE,EAAL;AAAS,0BAAgB,EAAE,gBAA3B;AAA6C,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAzD,SAAhB,CADF;AAGD,OAZH;AAaD;AAxGH;AAAA;AAAA,iCA0GmB;AAAA;;AACf,6eACG,IADH,CACQ,iBAA0B;AAAA,YAAvB,iBAAuB,SAAvB,iBAAuB;AAC9B,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,MADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,IAFI;AAGvB,uBAAa,EAAE,4EAAa,CAAC,QAHN;AAIvB,oBAAU,EAAE,kFAAmB,CAAC,MAJT;AAKvB,kBAAQ,EAAE,8EAAe,CAAC;AALH,SAAzB;;AAQA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,oDAAC,iBAAD,EAAkB;AAAC,0BAAgB,EAAE,gBAAnB;AAAqC,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAjD,SAAlB,CADF;AAGD,OAbH;AAcD;AAzHH;AAAA;AAAA,gCA2HqB,EA3HrB,EA2H+B;AAAA;;AAC3B,qeACG,IADH,CACQ,iBAAwB;AAAA,YAArB,eAAqB,SAArB,eAAqB;AAC5B,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,IADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,IAFI;AAGvB,uBAAa,EAAE,4EAAa,CAAC,QAHN;AAIvB,kBAAQ,EAAE,8EAAe,CAAC;AAJH,SAAzB;;AAOA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,oDAAC,eAAD,EAAgB;AAAC,YAAE,EAAE,EAAL;AAAS,0BAAgB,EAAE,gBAA3B;AAA6C,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAzD,SAAhB,CADF;AAGD,OAZH;AAaD;AAzIH;AAAA;AAAA,gCA2IqB,MA3IrB,EA2IuC;AAAA;;AAAA,4BACA,MADA,CAC3B,OAD2B;AAAA,UAC3B,OAD2B,gCACjB,EADiB;AAAA,UACb,QADa,GACA,MADA,CACb,QADa;AAGnC,ieACG,IADH,CACQ,iBAAuB;AAAA,YAApB,cAAoB,SAApB,cAAoB;AAC3B,YAAM,gBAAgB,GAAG;AACvB,oBAAU,EAAE,yEAAU,CAAC,MADA;AAEvB,gBAAM,EAAE,yEAAU,CAAC,IAFI;AAGvB,uBAAa,EAAE,4EAAa,CAAC,QAHN;AAIvB,oBAAU,EAAE,OAAO,CAAC,MAAR,KAAmB,CAAnB,GAAuB,kFAAmB,CAAC,MAA3C,GAAoD,kFAAmB,CAAC,IAJ7D;AAKvB,kBAAQ,EAAE,8EAAe,CAAC;AALH,SAAzB;;AAQA,cAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,sFAAa,CAAC,KAAxC,EACE,oDAAC,cAAD,EAAe;AACb,iBAAO,EAAE,OADI;AAEb,kBAAQ,EAAE,QAFG;AAGb,oBAAU,EAAE;AAAA,mBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA,WAHC;AAIb,0BAAgB,EAAE;AAJL,SAAf,CADF;AAQD,OAlBH;AAmBD;AAjKH;AAAA;AAAA,wBAGiB;AACb,aAAO,0BAAP;AACD;AALH;AAAA;AAAA,wBAWwB;AACpB,aAAO,8EAAW,CAAC,YAAnB;AACD;AAbH;AAAA;AAAA,wBAe6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,sFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAvBH;AAAA;AAAA,wBAO0B;AACtB,aAAO,oBAAP;AACD;AATH;;AAAA;AAAA,EAA4C,6FAA5C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;;IAEM,qB;;;;;;;;;;;;;wBACqB;AACvB,aAAO,8EAAW,CAAC,aAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,4BAAoB;AADf,OAAP;AAGD;;;wBAEiB;AAChB,aAAO,CAAE,sFAAF,EAAuB,gFAAvB,CAAP;AACD;;;;EAbiC,8DAAI,CAAC,S;;AAgBlC,IAAM,uBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,0BAyBe,MAzBf,EAyBiC;AAAA;;AAC7B,qTAAkE,IAAlE,CAAuE,gBAAyB;AAAA,YAAtB,gBAAsB,QAAtB,gBAAsB;;AAC9F,aAAI,CAAC,MAAL,CAAY,aAAZ,CAA0B,gFAAa,CAAC,OAAxC,EAAiD,2DAAC,gBAAD,EAAiB;AAAC,gBAAM,EAAE,MAAM,CAAC;AAAhB,SAAjB,CAAjD;AACD,OAFD;AAGD;AA7BH;AAAA;AAAA,wBAGiB;AACb,aAAO,2BAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,oEAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,gFAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAiBwB;AACpB,aAAO,8EAAW,CAAC,aAAnB;AACD;AAnBH;AAAA;AAAA,wBAqB0B;AACtB,aAAO,qBAAP;AACD;AAvBH;;AAAA;AAAA,EAA6C,6FAA7C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA,SAAS,gBAAT,CAA0B,MAA1B,EAAwC;AACtC,SAAO;AACL,eAAW,EAAE,8EAAW,CAAC,OADpB;AAEL,UAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB,MAFnB;AAGL,QAAI,EAAE,CAAE,MAAM,CAAC,EAAT,EAAa,kFAAU,CAAC,OAAX,CAAmB,MAAM,CAAC,IAA1B,CAAb;AAHD,GAAP;AAKD;;AAED,SAAS,eAAT,CAAyB,KAAzB,EAAqC;AACnC,SAAO;AACL,eAAW,EAAE,8EAAW,CAAC,OADpB;AAEL,UAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB,UAFnB;AAGL,QAAI,EAAE,CAAE,KAAK,CAAC,EAAR,EAAY,kFAAU,CAAC,OAAX,CAAmB,KAAK,CAAC,IAAzB,CAAZ,CAHD;AAIL,UAAM,EAAE,KAAK,CAAC,iBAAN,GAA0B;AAAE,OAAC,EAAE,IAAI,CAAC,KAAL,CAAW,KAAK,CAAC,iBAAjB;AAAL,KAA1B,GAAuE;AAJ1E,GAAP;AAMD;;AAMD,SAAS,mBAAT,CAA6B,KAA7B,EAA4D;AAAA,MAClD,KADkD,GACxC,KADwC,CAClD,KADkD;AAG1D,SACE;AAAI,aAAS,EAAC;AAAd,KACG,CAAC,CAAC,KAAK,CAAC,MAAR,IAAkB,oDAAC,6FAAD,EAAW;AAAC,aAAS,EAAC,SAAX;AAAqB,SAAK,EAAE,KAA5B;AAAmC,WAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAP;AAA5D,GAAX,CADrB,EAEE,oDAAC,oFAAD,EAAQ;AAAC,WAAO,EAAE,eAAe,CAAC,KAAD;AAAzB,GAAR,EACG,KAAK,CAAC,IADT,CAFF,CADF;AAQD;;AAEK,SAAU,cAAV,GAAwB;;;AAC5B,iGAAoB;;AADQ,sBAGU,8FAAY,CAAC,8EAAa,CAAC,eAAf,CAHtB;AAAA;AAAA,MAGpB,UAHoB;AAAA,MAGR,aAHQ;;AAK5B,WAAS,YAAT,GAAqB;AACnB,wFAAe,CAAC,aAAhB,CAA8B;AAC5B,QAAE,EAAE,UAAU,CAAC,KAAX,CAAiB;AADO,KAA9B,EAEG;AACD,cAAQ,EAAE,+EAAe,CAAC,cADzB;AAED,YAAM,EAAE,0EAAU,CAAC,KAFlB;AAGD,gBAAU,EAAE,0EAAU,CAAC,KAHtB;AAID,gBAAU,EAAE,+EAAe,CAAC;AAJ3B,KAFH,EADmB,CAUnB;;AACA,iBAAa,CAAC,OAAD,EAAU,IAAV,CAAb;AACD,GAjB2B,CAmB5B;;;AACA,WAAS,gBAAT,GAAyB;AACvB,wFAAe,CAAC,aAAhB,CAA8B;AAC5B,QAAE,EAAE,UAAU,CAAC,KAAX,CAAiB;AADO,KAA9B,EAEG;AACD,cAAQ,EAAE,+EAAe,CAAC,cADzB;AAED,YAAM,EAAE,0EAAU,CAAC,KAFlB;AAGD,gBAAU,EAAE,0EAAU,CAAC,KAHtB;AAID,gBAAU,EAAE,+EAAe,CAAC;AAJ3B,KAFH;AAQD;;AAED,MAAI,QAAC,UAAD,MAAW,IAAX,IAAW,aAAX,GAAW,MAAX,GAAW,GAAE,KAAb,CAAJ,EACE,OAAO,yGAAP;AAEF,MAAI,KAAK,GAAG,EAAZ;AACA,MAAI,SAAS,GAAG,6DAAM,CAAC,KAAvB;;AAEA,MAAI,UAAU,CAAC,gBAAf,EAAiC;AAC/B,aAAS,GAAG,6DAAM,CAAC,MAAnB;AACA,SAAK,GAAG,UAAU,CAAC,gBAAnB;AACD;AAED;;;;;AAGA,MAAI,CAAC,UAAU,CAAC,gBAAhB,EACE,SAAS,IAAI,SAAb;AAEF,SACE;AAAK,SAAK,EAAE,KAAZ;AAAmB,aAAS,YAAK,SAAL;AAA5B,KACE,oDAAC,gFAAD,EAAU;AACR,MAAE,EAAE,UAAU,CAAC,KAAX,CAAiB,EADb;AAER,iBAAa,EAAE,UAAU,CAAC,YAFlB;AAGR,aAAS,EAAE,wBAHH;AAIR,OAAG,EAAE,UAAU,CAAC,KAAX,CAAiB,EAJd;AAKR,aAAS,EAAE,UAAU,CAAC;AALd,GAAV,CADF,EASG,CAAC,UAAU,CAAC,gBAAZ,IACC;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,mBAAD,EAAoB;AAAC,SAAK,EAAE,UAAU,CAAC;AAAnB,GAApB,CADF,EAEE;AAAM,aAAS,YAAK,6DAAM,CAAC,OAAZ;AAAf,KACE;AAAM,aAAS,mCAAf;AAAoD,QAAI,EAAC,QAAzD;AAAkE,YAAQ,EAAE,CAA5E;AAA+E,WAAO,EAAE;AAAxF,KACE,oDAAC,mGAAD,EAAa;AAAC,WAAO,EAAE,6EAAY,CAAC;AAAvB,GAAb,CADF,CADF,EAIE,oDAAC,oFAAD,EAAQ;AAAC,WAAO,EAAE,eAAe,CAAC,UAAU,CAAC,KAAZ,CAAzB;AAA6C,WAAO,EAAE;AAAtD,GAAR,EACG,CAAC,UAAU,CAAC,YAAZ,IAA4B,oDAAC,mGAAD,EAAa;AACxC,WAAO,EAAE,6EAAY,CAAC,SADkB;AAExC,aAAS,YAAK,6DAAM,CAAC,WAAZ;AAF+B,GAAb,CAD/B,CAJF,CAFF,CAVJ,CADF;AA0BD,C;;;;;;;;;;;ACjID;AACA,kBAAkB,gK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA,IAAM,QAAQ,GAAoC;AAChD,UAAQ,EAAE;AACR,eAAW,EAAE,8EAAW,CAAC,QADjB;AAER,UAAM,EAAE,oEAAO,CAAC,QAAR,CAAiB;AAFjB,GADsC;AAKhD,WAAS,EAAE,IALqC;AAMhD,QAAM,EAAE;AACN,eAAW,EAAE,8EAAW,CAAC,OADnB;AAEN,UAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFlB,GANwC;AAUhD,OAAK,EAAE;AACL,eAAW,EAAE,8EAAW,CAAC,OADpB;AAEL,UAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFnB;AAVyC,CAAlD;AAuBO,IAAM,WAAW,GAAG,2CAAW,UAAS,KAAT,EAAgC;AACpE,SACE,oDAAC,8FAAwB,CAAC,QAA1B,EAAkC;AAAC,SAAK,EAAC;AAAP,GAAlC,EACG,KAAK,CAAC,IAAN,GAEG,oDAAC,wDAAD,EAAS;AAAC,aAAS,EAAC;AAAX,GAAT,EACE,oDAAC,wDAAQ,CAAC,MAAV,EAAgB;AAAC,MAAE,EAAC,KAAJ;AAAU,MAAE,EAAC,aAAb;AAA2B,aAAS,YAAK,yDAAM,CAAC,eAAZ;AAApC,GAAhB,EACE,oDAAC,gFAAD,EAAO;AACL,YAAQ,EAAE,KAAK,CAAC,IAAN,CAAW,MADhB;AAEL,eAAW,EAAE,KAAK,CAAC,WAFd;AAGL,YAAQ,EAAE,4EAAU,CAAC,WAAX,CAAuB,KAAK,CAAC,IAAN,CAAW,SAAlC,EAA6C,KAAK,CAAC,IAAN,CAAW,UAAxD;AAHL,GAAP,CADF,CADF,EAQE,oDAAC,wDAAQ,CAAC,IAAV,EAAc;AACZ,cAAU,MADE;AAEZ,aAAS,EAAE,yDAAM,CAAC,YAFN;AAGZ,MAAE,EAAC;AAHS,GAAd,EAKE,oDAAC,wDAAQ,CAAC,IAAV,EAAc;AAAC,MAAE,EAAC;AAAJ,GAAd,EACE;AAAK,aAAS,EAAC;AAAf,KAAqB,oEAAS,KAAK,CAAC,IAAN,CAAW,WAApB,CAArB,CADF,EAEE;AAAK,aAAS,EAAC;AAAf,KAAiC,KAAK,CAAC,IAAN,CAAW,YAA5C,CAFF,CALF,EAUE,oDAAC,wDAAQ,CAAC,OAAV,EAAiB,IAAjB,CAVF,EAYE,oDAAC,wDAAQ,CAAC,IAAV,EAAc;AAAC,MAAE,EAAE,oFAAL;AAAc,WAAO,EAAE,QAAQ,CAAC;AAAhC,GAAd,EACE,oDAAC,0EAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CADF,CAZF,EAgBE,oDAAC,wDAAQ,CAAC,IAAV,EAAc;AAAC,MAAE,EAAE,oFAAL;AAAc,WAAO,EAAE,QAAQ,CAAC;AAAhC,GAAd,EACE,oDAAC,0EAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CADF,CAhBF,EAoBE,oDAAC,wDAAQ,CAAC,IAAV,EAAc;AAAC,MAAE,EAAC,GAAJ;AAAQ,QAAI,EAAE,KAAK,CAAC,cAApB;AAAoC,UAAM,EAAC;AAA3C,GAAd,EACE,oDAAC,0EAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CADF,CApBF,EAwBE,oDAAC,wDAAQ,CAAC,OAAV,EAAiB,IAAjB,CAxBF,EA0BE,oDAAC,wDAAQ,CAAC,IAAV,EAAc;AAAC,MAAE,EAAE,oFAAL;AAAc,WAAO,EAAE,QAAQ,CAAC;AAAhC,GAAd,EACE,oDAAC,0EAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CADF,CA1BF,CARF,CAFH,GA0CG,oDAAC,oFAAD,EAAQ;AAAC,WAAO,EAAE,QAAQ,CAAC,KAAnB;AAA0B,aAAS,EAAC;AAApC,GAAR,EACE,oDAAC,0EAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CADF,CA3CN,CADF;AAmDD,CApD0B,EAoDxB,UAAC,SAAD,EAAY,SAAZ,EAAkC;;;AACnC,SAAO,gBAAS,CAAC,IAAV,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,EAAhB,OAAkB,MAAK,SAAS,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,EAAvC,KACF,gBAAS,CAAC,IAAV,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,MAAhB,OAAsB,MAAK,SAAS,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,MAA3C,CADE,IAEF,gBAAS,CAAC,IAAV,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,WAAhB,OAA2B,MAAK,SAAS,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,WAAhD,CAFE,IAGF,gBAAS,CAAC,IAAV,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,YAAhB,OAA4B,MAAK,SAAS,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,YAAjD,CAHL;AAID,CAzD0B,CAApB,C;;;;;;;;;;;;;;;;;;;;;;ACtCP;AACA,kBAAkB,gD;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AASM,SAAU,SAAV,CAAoB,KAApB,EAAyC;AAC7C,MAAI,GAAG,aAAM,KAAK,CAAC,aAAZ,yBAAwC,KAAK,CAAC,EAA9C,CAAP;AAEA,MAAI,KAAK,CAAC,SAAV,EACE,GAAG,iBAAU,KAAK,CAAC,SAAhB,CAAH;AAEF,SACE;AAAK,aAAS,6BAAsB,KAAK,CAAC,SAAN,GAAkB,KAAK,CAAC,SAAxB,GAAoC,EAA1D;AAAd,KACE;AACE,OAAG,EAAE,GADP;AAEE,aAAS,EAAC,uBAFZ;AAGE,mBAAe,MAHjB;AAIE,SAAK,EAAC;AAJR,IADF,CADF;AASD,C;;;;;;;;;;;;ACxBD;AAAA;AAAO,IAAM,mBAAmB,GAAG;AACjC,SAAO,EAAE,aADwB;AAEjC,SAAO,EAAE,WAFwB;AAGjC,MAAI,EAAE,SAH2B;AAIjC,MAAI,EAAE;AAJ2B,CAA5B,C;;;;;;;;;;;;ACAP;AAAA;AAAO,IAAM,SAAS,GAAG;AACvB,aAAW,EAAE;AACX,UAAM,EAAE;AADG,GADU;AAKvB,YAAU,EAAE;AACV,WAAO,EAAE;AADC;AALW,CAAlB,C;;;;;;;;;;;;ACAP;AAAA;AAAO,IAAM,OAAO,GAAG;AACrB,SAAO,EAAE;AACP,SAAK,EAA0B,OADxB;AAEP,aAAS,EAAsB,WAFxB;AAGP,aAAS,EAAsB,WAHxB;AAIP,gBAAY,EAAmB,cAJxB;AAMP,UAAM,EAAyB,QANxB;AAOP,cAAU,EAAqB,YAPxB;AAQP,oBAAgB,EAAe,kBARxB;AASP,aAAS,EAAsB,WATxB;AAUP,cAAU,EAAqB,YAVxB;AAWP,eAAW,EAAoB,aAXxB;AAYP,SAAK,EAA0B,OAZxB;AAcP,WAAO,EAAwB,SAdxB;AAeP,UAAM,EAAyB;AAfxB,GADY;AAmBrB,WAAS,EAAE;AACT,QAAI,EAA2B,OADtB;AAET,YAAQ,EAAuB,UAFtB;AAGT,gBAAY,EAAmB,cAHtB;AAIT,iBAAa,EAAkB,eAJtB;AAKT,mBAAe,EAAgB,iBALtB;AAMT,mBAAe,EAAgB,iBANtB;AAOT,8BAA0B,EAAK;AAPtB,GAnBU;AA6BrB,WAAS,EAAE;AACT,QAAI,EAA2B,OADtB;AAET,aAAS,EAAsB;AAFtB,GA7BU;AAkCrB,UAAQ,EAAE;AACR,kBAAc,EAAiB,gBADvB;AAER,eAAW,EAAoB;AAFvB,GAlCW;AAuCrB,eAAa,EAAE;AACb,QAAI,EAA2B;AADlB,GAvCM;AA2CrB,QAAM,EAAE;AACN,QAAI,EAA2B;AADzB,GA3Ca;AA+CrB,gBAAc,EAAE;AACd,mBAAe,EAAgB,iBADjB;AAEd,yBAAqB,EAAU;AAFjB,GA/CK;AAoDrB,aAAW,EAAE;AACX,YAAQ,EAAuB,iBADpB;AAEX,YAAQ,EAAuB,iBAFpB;AAGX,gBAAY,EAAmB,cAHpB;AAIX,eAAW,EAAoB,aAJpB;AAKX,gBAAY,EAAmB,cALpB;AAMX,eAAW,EAAoB,aANpB;AAOX,gBAAY,EAAmB,cAPpB;AAQX,yBAAqB,EAAU,uBARpB;AASX,yBAAqB,EAAU;AATpB,GApDQ;AAgErB,QAAM,EAAE;AACN,eAAW,EAAoB,aADzB;AAEN,iBAAa,EAAkB;AAFzB,GAhEa;AAqErB,YAAU,EAAE;AACV,QAAI,EAA2B,OADrB;AAEV,aAAS,EAAsB,WAFrB;AAGV,iBAAa,EAAkB,eAHrB;AAIV,kBAAc,EAAiB,gBAJrB;AAKV,oBAAgB,EAAe,kBALrB;AAOV,oBAAgB,EAAe,kBAPrB;AAQV,gBAAY,EAAmB,cARrB;AASV,mBAAe,EAAgB,iBATrB;AAWV,aAAS,EAAsB,WAXrB;AAYV,cAAU,EAAqB,YAZrB;AAaV,gBAAY,EAAmB;AAbrB,GArES;AAqFrB,UAAQ,EAAE;AACR,QAAI,EAA2B;AADvB,GArFW;AAyFrB,cAAY,EAAE;AACZ,QAAI,EAA2B;AADnB;AAzFO,CAAhB,C;;;;;;;;;;;;ACAP;AAAA;AAAO,IAAM,aAAa,GAAG;AAC3B,SAAO,EAAE,SADkB;AAE3B,OAAK,EAAE,OAFoB;AAG3B,OAAK,EAAE;AAHoB,CAAtB,C;;;;;;;;;;;;ACAP;AAAA;AAAO,IAAM,OAAO,GAAG;AACrB,gBAAc,EAAE,eADK;AAErB,cAAY,EAAE;AAFO,CAAhB,C;;;;;;;;;;;;ACAP;AAAA;AAAA;AAAO,IAAM,WAAW,GAAG;AACzB,SAAO,EAAW,qBADO;AAEzB,WAAS,EAAS,uBAFO;AAGzB,WAAS,EAAS,uBAHO;AAIzB,SAAO,EAAW,qBAJO;AAKzB,OAAK,EAAa,mBALO;AAMzB,eAAa,EAAK,2BANO;AAOzB,QAAM,EAAY,oBAPO;AAQzB,iBAAe,EAAG,6BARO;AASzB,cAAY,EAAM,0BATO;AAUzB,QAAM,EAAY,oBAVO;AAWzB,YAAU,EAAQ,wBAXO;AAYzB,UAAQ,EAAU,sBAZO;AAazB,eAAa,EAAK;AAbO,CAApB;AAgBA,IAAM,eAAe,GAAG;AAC7B,iBAAe,EAAE;AADY,CAAxB,C;;;;;;;;;;;;AChBP;AAAA;AAAO,IAAM,aAAa,GAAG;AAC3B,qBAAmB,EAAE,qBADM;AAE3B,iBAAe,EAAE,iBAFU;AAG3B,qBAAmB,EAAE,qBAHM;AAI3B,qBAAmB,EAAE;AAJM,CAAtB,C;;;;;;;;;;;;ACAP;AAAA;AAAA;AAAA;AAEO,IAAM,YAAY,mCACpB,2FADoB,GACF;AACrB,UAAQ,EAAE;AADW,CADE,CAAlB,C;;;;;;;;;;;;ACFP;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,QAAQ,mCAChB,wFADgB,GACF;AACjB,gBAAc,EAAE;AADC,CADE,CAAd;AAKA,IAAM,YAAY,mCACpB,4FADoB,GACF;AACrB,UAAQ,EAAE,qBADW;AAErB,YAAU,EAAE;AAFS,CADE,CAAlB,C;;;;;;;;;;;;ACPP;AAAA;AAAA;AAAA;AAAA;AAEA,IAAM,oBAAoB,GAAG;AAC3B,OAAK,EAAE,8MADoB;AAE3B,UAAQ,EAAa;AAFM,CAA7B;AAKA,IAAM,wBAAwB,GAAG;AAC/B,kBAAgB,uCADe;AAE/B,qBAAmB,EAAE;AAFU,CAAjC;AAKO,IAAM,cAAc,mCACtB,oBADsB,GAEtB,wBAFsB,CAApB;AAKA,IAAM,mBAAmB,GAAG;AACjC,6BADiC,uCACL,aADK,EACgB;AAC/C,qBAAU,8FAAoB,CAAC,cAA/B,2BAA8D,aAA9D;AACD;AAHgC,CAA5B,C;;;;;;;;;;;;ACjBP;AAAA;AAAA,IAAY,SAAZ;;AAAA,WAAY,SAAZ,EAAqB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD,CATD,EAAY,SAAS,KAAT,SAAS,MAArB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AAEA,IAAM,SAAS,GAAG,sBAAlB;AAEO,IAAM,aAAb;AAAA;;AAAA;;AACE;AAAA;;AAAA,6BACQ,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADR;AAEC;;AAHH;AAAA;AAAA,wBAKiB;AACb,aAAO,eAAP;AACD;AAPH;AAAA;AAAA,wBASoB;AAChB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,CAAP;AACD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAAP;AACD;AAfH;;AAAA;AAAA,EAAmC,8DAAI,CAAC,WAAxC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA,IAAM,SAAS,GAAG,6BAAlB;AAEO,IAAM,oBAAb;AAAA;;AAAA;;AACE;AAAA;;AAAA,6BACQ,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADR;AAEC;;AAHH;AAAA;AAAA,wBAKiB;AACb,aAAO,sBAAP;AACD;AAPH;AAAA;AAAA,wBASoB;AAChB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,CAAP;AACD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAAP;AACD;AAfH;;AAAA;AAAA,EAA0C,8DAAI,CAAC,WAA/C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA,IAAM,SAAS,GAAG,kCAAlB;AAEO,IAAM,yBAAb;AAAA;;AAAA;;AACE;AAAA;;AAAA,6BACQ,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADR;AAEC;;AAHH;AAAA;AAAA,wBAKiB;AACb,aAAO,2BAAP;AACD;AAPH;AAAA;AAAA,wBASoB;AAChB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,CAAP;AACD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAAP;AACD;AAfH;;AAAA;AAAA,EAA+C,8DAAI,CAAC,WAApD,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA,IAAM,SAAS,GAAG,yBAAlB;AAEO,IAAM,gBAAb;AAAA;;AAAA;;AACE;AAAA;;AAAA,6BACQ,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADR;AAEC;;AAHH;AAAA;AAAA,wBAKiB;AACb,aAAO,kBAAP;AACD;AAPH;AAAA;AAAA,wBASoB;AAChB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,CAAP;AACD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAAP;AACD;AAfH;;AAAA;AAAA,EAAsC,8DAAI,CAAC,WAA3C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA,IAAM,SAAS,GAAG,8BAAlB;AAEO,IAAM,qBAAb;AAAA;;AAAA;;AACE;AAAA;;AAAA,6BACQ,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADR;AAEC;;AAHH;AAAA;AAAA,wBAKiB;AACb,aAAO,uBAAP;AACD;AAPH;AAAA;AAAA,wBASoB;AAChB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,CAAP;AACD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAAP;AACD;AAfH;;AAAA;AAAA,EAA2C,8DAAI,CAAC,WAAhD,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA,IAAM,SAAS,GAAG,6BAAlB;AAEO,IAAM,oBAAb;AAAA;;AAAA;;AACE;AAAA;;AAAA,6BACQ,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADR;AAEC;;AAHH;AAAA;AAAA,wBAKiB;AACb,aAAO,sBAAP;AACD;AAPH;AAAA;AAAA,wBASoB;AAChB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,CAAP;AACD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAAP;AACD;AAfH;;AAAA;AAAA,EAA0C,8DAAI,CAAC,WAA/C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA,IAAM,SAAS,GAAG,2BAAlB;AAEO,IAAM,kBAAb;AAAA;;AAAA;;AACE;AAAA;;AAAA,6BACQ,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADR;AAEC;;AAHH;AAAA;AAAA,wBAKiB;AACb,aAAO,oBAAP;AACD;AAPH;AAAA;AAAA,wBASoB;AAChB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,CAAP;AACD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAAP;AACD;AAfH;;AAAA;AAAA,EAAwC,8DAAI,CAAC,WAA7C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA,IAAM,SAAS,GAAG,0BAAlB;AAEO,IAAM,iBAAb;AAAA;;AAAA;;AACE;AAAA;;AAAA,6BACQ,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADR;AAEC;;AAHH;AAAA;AAAA,wBAKiB;AACb,aAAO,mBAAP;AACD;AAPH;AAAA;AAAA,wBASoB;AAChB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC,CAAP;AACD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAAP;AACD;AAfH;;AAAA;AAAA,EAAuC,8DAAI,CAAC,WAA5C,E;;;;;;;;;;;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAGA,IAAM,cAAc,GAAG,CACrB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,QAAR,CAAiB;AAA7D,CADqB,EAErB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAFqB,EAGrB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAHqB,CAAvB;;AAMA,SAAS,gBAAT,CAA0B,OAA1B,EAAiD,IAAjD,EAAwF;AACtF,wBAAsB,CAAC,OAAD,EAAU,gBAAM,EAAG;AACvC,QAAI,MAAJ,EAAY;AACV;AACA,oEAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,mBAAW,EAAE,8EAAW,CAAC,OADA;AAEzB,cAAM,EAAE,oEAAO,CAAC,QAAR,CAAiB;AAFA,OAA3B;AAKA,oEAAI,CAAC,cAAL,CAAoB,YAApB;AACA;AACD;;AAED,QAAI,CAAC,OAAD,CAAJ;AACD,GAbqB,CAAtB;AAcD;;AAED,SAAS,sBAAT,CAAgC,OAAhC,EAAuD,QAAvD,EAA0F;AACxF;AACA,MAAI,cAAc,CAAC,IAAf,CAAoB,eAAK,EAAG;AAAA;;AAAC,gBAAK,CAAC,WAAN,MAAiB,MAAK,OAAL,MAAY,IAAZ,IAAY,aAAZ,GAAY,MAAZ,GAAY,GAAE,WAA/B,KAA8C,KAAK,CAAC,MAAN,MAAY,MAAK,OAAL,MAAY,IAAZ,IAAY,aAAZ,GAAY,MAAZ,GAAY,GAAE,MAA1B,CAA9C;AAA8E,GAA3G,CAAJ,EAAkH;AAChH,YAAQ,CAAC,KAAD,CAAR;AACA;AACD;;AAED,MAAM,eAAe,GAA0B,kGAAe,CAAC,WAAhB,CAA4B,sEAAY,CAAC,UAAzC,CAA/C;AACA,MAAM,mBAAmB,GAA4B,kGAAe,CAAC,WAAhB,CAA4B,sEAAY,CAAC,QAAzC,CAArD;AAEA,iBAAe,CAAC,cAAhB,CAA+B,cAAI,EAAG;AACpC,sGAAe,CAAC,eAAhB,CAAgC,sEAAY,CAAC,UAA7C,EADoC,CAGpC;AACA;;AACA,QAAI,IAAI,CAAC,IAAL,KAAc,OAAd,IAAyB,IAAI,CAAC,IAAL,KAAc,YAA3C,EAAyD;AACvD,cAAQ,CAAC,KAAD,CAAR;AACA;AACD,KARmC,CAUpC;;;AACA,QAAI,gDAAO,CAAC,GAAR,CAAY,qBAAZ,MAAuC,IAAI,CAAC,EAAL,CAAQ,QAAR,EAA3C,EAA+D;AAC7D,cAAQ,CAAC,KAAD,CAAR;AACA;AACD;;AAED,uBAAmB,CAAC,UAApB,CAA+B,IAAI,CAAC,EAApC,EAAwC,8EAAW,CAAC,sBAApD,EAA4E,iBAAO,EAAG;AACpF,wGAAe,CAAC,eAAhB,CAAgC,sEAAY,CAAC,QAA7C,EADoF,CAGpF;;AACA,UAAI,OAAO,CAAC,KAAZ,EAAmB;AACjB,wDAAO,CAAC,GAAR,CAAY,qBAAZ,EAAmC,IAAI,CAAC,EAAxC,EAA4C;AAAE,iBAAO,EAAE;AAAX,SAA5C;AAEA,gBAAQ,CAAC,KAAD,CAAR;AACA;AACD;;AAED,cAAQ,CAAC,IAAD,CAAR;AACD,KAZD;AAaD,GA7BD,EA6BG,YAAK;AACN;AACA,sGAAe,CAAC,eAAhB,CAAgC,sEAAY,CAAC,UAA7C;AACA,YAAQ,CAAC,KAAD,CAAR;AACD,GAjCD;AAkCD;;;;;;;;;;;;;;AChFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;CAGA;;AACA,IAAM,cAAc,GAAG,CACrB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CADqB,EAErB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAFqB,EAGrB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAHqB,EAIrB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAJqB,CAAvB;AAOM,SAAU,mBAAV,CAA8B,OAA9B,EAAqD,IAArD,EAA4F;AAChG,MAAI,cAAc,CAAC,IAAf,CAAoB,eAAK;AAAA,WAAI,KAAK,CAAC,WAAN,KAAsB,OAAO,CAAC,WAA9B,IAA6C,KAAK,CAAC,MAAN,KAAiB,OAAO,CAAC,MAA1E;AAAA,GAAzB,CAAJ,EAAgH;AAC9G,QAAI,CAAC,OAAD,CAAJ;AACA;AACD;;AAED,MAAM,eAAe,GAA0B,kGAAe,CAAC,WAAhB,CAA4B,sEAAY,CAAC,UAAzC,CAA/C;AAEA,iBAAe,CAAC,cAAhB,CAA+B,cAAI,EAAG;AACpC,sGAAe,CAAC,eAAhB,CAAgC,sEAAY,CAAC,UAA7C;;AAEA,QAAI,IAAI,CAAC,aAAT,EAAwB;AACtB,UAAI,CAAC,OAAD,CAAJ;AACA;AACD;;AAED,kEAAI,CAAC,cAAL,CAAoB,YAApB,GARoC,CASpC;;AACA,kEAAI,CAAC,WAAL,UAAuB,IAAI,+FAAJ,EAAvB;AACD,GAXD,EAWG,YAAK;AACN;AACA,sGAAe,CAAC,eAAhB,CAAgC,sEAAY,CAAC,UAA7C;AACA,QAAI,CAAC,OAAD,CAAJ;AACD,GAfD;AAgBD,C;;;;;;;;;;;;ACxCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAEA,IAAM,SAAS,GAAG;AAChB,OAAK,EAAE,eAAC,EAAD;AAAA,4CAA0C,EAA1C,oBAAsD,8EAAc,CAAC,KAArE;AAAA,GADS;AAGhB;AACA,WAAS,EAAE,mBAAC,EAAD,EAAa,MAAb,EAA+B;AACxC,QAAM,KAAK,sCAA+B,8EAAc,CAAC,gBAA9C,SAAiE,SAAS,CAAC,MAAD,CAA1E,CAAX;AACA,2CAAgC,EAAhC,2BAAmD,KAAnD;AACD,GAPe;AAShB,eAAa,EAAE,uBAAC,GAAD,EAAgB,UAAhB,EAAwC;AACrD,QAAM,MAAM,GAAG,GAAG,CAAC,GAAJ,CAAQ,WAAC;AAAA,0BAAU,CAAV;AAAA,KAAT,CAAf;AAEA,QAAI,UAAJ,EACE,MAAM,CAAC,IAAP,iBAAqB,8EAAc,CAAC,gBAApC;AAEF,4CAAiC,MAAM,CAAC,IAAP,CAAY,GAAZ,CAAjC;AACD;AAhBe,CAAlB;AAmBO,IAAM,aAAa,GAAG;AAC3B,OAD2B,iBACrB,EADqB,EACX;AACd,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,KAAV,CAAgB,EAAhB,CADA;AAEL,SAAG,mBAAY,EAAZ;AAFE,KAAP;AAID,GAN0B;AAQ3B,WAR2B,qBAQjB,EARiB,EAQL,MARK,EAQS;AAClC,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,SAAV,CAAoB,EAApB,EAAwB,MAAxB,CADA;AAEL,SAAG,sBAAe,EAAf,cAAqB,MAArB;AAFE,KAAP;AAID,GAb0B;AAe3B,QAf2B,kBAepB,GAfoB,EAeL,OAfK,EAe8B;AACvD,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,aAAV,CAAwB,GAAxB,CADA;AAEL,SAAG,yBAAkB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAlB,CAFE;AAGL,aAAO,EAAP;AAHK,KAAP;AAKD,GArB0B;AAuB3B,gBAvB2B,0BAwBzB,GAxByB,EAyBzB,OAzByB,EA0BzB,KA1ByB,EA2BzB,MA3ByB,EA2BN;AAEnB,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,aAAV,CAAwB,GAAxB,EAA6B,IAA7B,CADA;AAEL,SAAG,kCAA2B,GAAG,CAAC,IAAJ,CAAS,GAAT,CAA3B,CAFE;AAGL,aAAO,EAAP;AAHK,KAAP;AAKD,GAlC0B;AAoC3B,aApC2B,uBAoCf,EApCe,EAoCH,IApCG,EAoCuB,OApCvB,EAoC2C;AACpE,WAAO;AACL,SAAG,yBAAkB,EAAlB,CADE;AAEL,SAAG,mCAA4B,EAA5B,CAFE;AAGL,UAAI,EAAE,mFAAS,CAAC,GAHX;AAIL,UAAI,EAAJ,IAJK;AAKL,aAAO,EAAP;AALK,KAAP;AAOD,GA5C0B;;AA8C3B;;;;;;AAMA,cApD2B,wBAoDd,GApDc,EAoDD;AACxB,QAAM,MAAM,GAAG,GAAG,CAAC,GAAJ,CAAQ,WAAC;AAAA,0BAAU,CAAV;AAAA,KAAT,CAAf;AAEA,QAAI,CAAC,MAAM,CAAC,MAAZ,EACE;AAEF,WAAO;AACL,SAAG,gDAAyC,MAAM,CAAC,IAAP,CAAY,GAAZ,CAAzC,CADE;AAEL,SAAG,gCAAyB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAzB;AAFE,KAAP;AAID,GA9D0B;AAgE3B,iBAhE2B,2BAgEX,QAhEW,EAgEO;AAChC,QAAM,SAAS,GAAG,QAAQ,CAAC,KAAT,GAAiB,IAAjB,EAAlB;AAEA,WAAO;AACL,SAAG,EAAE,6DACgB,4EAAU,CAAC,KAD3B,SACmC,SAAS,CAAC,GAAV,CAAc,YAAE;AAAA,mCAAiB,EAAjB;AAAA,OAAhB,EAAuC,IAAvC,CAA4C,EAA5C,CADnC,CADA;AAGL,SAAG,yBAAkB,SAAS,CAAC,IAAV,CAAe,GAAf,CAAlB,CAHE;AAIL,sBAAgB,EAAE;AAChB,iBAAS,EAAE,QADK;AAEhB,mBAAW,EAAE;AAFG;AAJb,KAAP;AASD;AA5E0B,CAAtB;;AA+EP,SAAS,SAAT,CAAmB,MAAnB,EAAiC;AAC/B,SAAO,MAAM,qBAAc,MAAd,IAAyB,EAAtC;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3GD;AAEA;AACA;AAEA;AAGA;AAoCM,SAAU,oBAAV,GAA8B;;;AAClC,MAAM,MAAM,GAAG,6DAAM,CAAC,aAAP,CAA6B,8FAAc,CAAC,MAA5C,CAAf;;AADkC,sBAGN,8FAAY,CAAgB,6EAAa,CAAC,eAA9B,EAA+C;AACrF,gBAAY,EAAE,aAAM,CAAC,IAAP,MAAW,IAAX,IAAW,aAAX,GAAW,MAAX,GAAW,GAAE,YAAb,KAA6B,EAD0C;AAErF,SAAK,EAAE,IAF8E;AAGrF,oBAAgB,EAAE,IAHmE;AAIrF,gBAAY,EAAE,KAJuE;AAKrF,aAAS,EAAE;AAL0E,GAA/C,CAHN;AAAA;AAAA,MAGxB,aAHwB;;AAWlC,8CAAK,CAAC,SAAN,CAAgB,YAAK;;;AACnB,QAAI,QAAC,MAAM,CAAC,IAAR,MAAY,IAAZ,IAAY,aAAZ,GAAY,MAAZ,GAAY,GAAE,YAAd,CAAJ,EACE;AAEF,iBAAa,CAAC,cAAD,EAAiB,MAAM,CAAC,IAAP,CAAY,YAA7B,CAAb;AACD,GALD,EAKG,OAAC,MAAM,CAAC,IAAR,MAAY,IAAZ,IAAY,aAAZ,GAAY,MAAZ,GAAY,GAAE,YAAd,CALH;AAMD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DD;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,kGAAe,CAAC,gBAAhB,CAAiC,cAAjC,CAAlB;AAUO,IAAM,UAAU,GAAG,SAAb,UAAa,GAAK;AAAA,wBACD,4CAAK,CAAC,QAAN,CAAiC,EAAjC,CADC;AAAA;AAAA,MACrB,KADqB;AAAA,MACd,QADc;;AAG7B,MAAM,KAAK,GAAG,8CAAK,CAAC,OAAN,CAAc,iGAAc,CAAC,KAA7B,CAAd;AAEA,8CAAK,CAAC,SAAN,CAAgB,YAAK;AACnB,QAAI,KAAK,CAAC,IAAN,CAAW,iBAAO;AAAA,aAAI,CAAC,OAAO,CAAC,aAAb;AAAA,KAAlB,CAAJ,EACE,KAAK,CAAC,EAAN,CAAS,8DAAI,CAAC,UAAL,CAAgB,aAAzB,EAAwC,UAAxC;AAEF,QAAI,KAAK,CAAC,MAAV,EACE,MAAM,CAAC,gBAAP,CAAwB,cAAxB,EAAwC,cAAxC;AAEF,WAAO,YAAK;AACV,WAAK,CAAC,GAAN,CAAU,8DAAI,CAAC,UAAL,CAAgB,aAA1B,EAAyC,UAAzC;AACA,YAAM,CAAC,mBAAP,CAA2B,cAA3B,EAA2C,cAA3C;AACD,KAHD;AAID,GAXD,EAWG,CAAC,KAAD,CAXH,EAL6B,CAkB7B;;AACA,8CAAK,CAAC,SAAN,CAAgB,YAAK;AACnB,aAAS,uBAAT,GAAgC;AAC9B,UAAI,CAAC;AACH,UAAE,EAAE,QADD;AAEH,aAAK,EAAE,SAAS,CAAC,iBAAD,CAFb;AAGH,YAAI,EAAE,SAAS,CAAC,gBAAD,CAHZ;AAIH,qBAAa,EAAE;AAJZ,OAAD,CAAJ;AAMD;;AAED,QAAM,aAAa,GAAG,8CAAK,CAAC,OAAN,CAAc,8FAAqB,CAAC,YAApC,CAAtB;AACA,iBAAa,CAAC,EAAd,CAAiB,uGAAgB,CAAC,WAAlC,EAA+C,uBAA/C;AACA,iBAAa,CAAC,EAAd,CAAiB,uGAAgB,CAAC,UAAlC,EAA8C,MAA9C;AAEA,WAAO,YAAK;AACV,mBAAa,CAAC,GAAd,CAAkB,uGAAgB,CAAC,WAAnC,EAAgD,uBAAhD;AACA,mBAAa,CAAC,GAAd,CAAkB,uGAAgB,CAAC,UAAnC,EAA+C,MAA/C;AACD,KAHD;AAID,GAlBD,EAkBG,EAlBH;;AAoBA,WAAS,IAAT,GAA8C;AAAA,QAAhC,WAAgC,uEAAF,EAAE;AAC5C,QAAI,KAAK,CAAC,IAAN,CAAW,iBAAO;AAAA,aAAI,OAAO,CAAC,EAAR,KAAe,WAAW,CAAC,EAA/B;AAAA,KAAlB,CAAJ,EACE;AAEF,QAAI,CAAC,WAAW,CAAC,aAAjB,EACE,KAAK,CAAC,OAAN,CAAc,8DAAI,CAAC,UAAL,CAAgB,QAA9B;AAEF,YAAQ,8BAAM,KAAN,IAAa,WAAb,GAAR;AACD;;AAED,WAAS,MAAT,CAAgB,EAAhB,EAA0B;AACxB,QAAM,QAAQ,GAAG,KAAK,CAAC,MAAN,CAAa,iBAAO;AAAA,aAAI,OAAO,CAAC,EAAR,KAAe,EAAnB;AAAA,KAApB,CAAjB;AAEA,QAAI,QAAQ,CAAC,MAAT,KAAoB,CAApB,IAAyB,CAAC,QAAQ,CAAC,IAAT,CAAc,iBAAO;AAAA,aAAI,CAAC,OAAO,CAAC,aAAb;AAAA,KAArB,CAA9B,EACE,KAAK,CAAC,OAAN,CAAc,8DAAI,CAAC,UAAL,CAAgB,UAA9B;AAEF,YAAQ,CAAC,QAAD,CAAR;AACD;;AAED,WAAS,UAAT,CAAoB,OAApB,EAAyC;AACvC,QAAI,CAAC,KAAK,CAAC,MAAX,EACE;AAEF,QAAM,WAAW,GAAG,KAAK,CAAC,IAAN,CAAW,iBAAO;AAAA,aAAI,CAAC,OAAO,CAAC,aAAb;AAAA,KAAlB,CAApB;AAEA,QAAM,OAAO,GAAmB,CAC9B;AACE,gBAAU,EAAE,SAAS,CAAC,QAAD,CADvB;AAEE,eAAS,EAAE;AAFb,KAD8B,EAK9B;AACE,gBAAU,EAAE,SAAS,CAAC,SAAD,CADvB;AAEE,eAAS,EAAE,gBAFb;AAGE,aAAO,EAAE,WAAW,CAAC,eAAZ,GAA8B,WAAW,CAAC,eAA1C,GAA4D,YAAK,CAAG,CAH/E;AAIE,aAAO,EAAE;AAJX,KAL8B,CAAhC;AAaA,0EAAY,CAAC,MAAb,CAAoB,sEAAI,WAAW,CAAC,IAAhB,CAApB,EAA+C;AAC7C,WAAK,EAAE,WAAW,CAAC,KAD0B;AAE7C,aAAO,EAAP,OAF6C;AAG7C,aAAO,EAAE;AAAA,eAAM,cAAc,CAAC,OAAD,CAApB;AAAA;AAHoC,KAA/C;AAKD;;AAED,WAAS,cAAT,CAAwB,CAAxB,EAA8B;AAC5B,QAAI,WAAW,GAAG,KAAK,CAAC,IAAN,CAAW,iBAAO;AAAA,aAAI,OAAO,CAAC,aAAZ;AAAA,KAAlB,CAAlB;AACA,QAAI,CAAC,WAAL,EACE,WAAW,GAAG,oFAAW,CAAC,KAAZ,CAAkB,KAAlB,CAAd;AAEF,KAAC,CAAC,WAAF,GAAgB,WAAW,CAAC,IAA5B;AACA,WAAO,WAAW,CAAC,IAAnB;AACD;;AAED,WAAS,cAAT,CAAwB,OAAxB,EAA6C;AAC3C,SAAK,CAAC,OAAN,CAAc,8DAAI,CAAC,UAAL,CAAgB,oBAA9B;AAEA,SAAK,CAAC,OAAN,CAAc,iBAAO,EAAG;AACtB,UAAI,OAAO,CAAC,aAAZ,EACE;AAEF,YAAM,CAAC,OAAO,CAAC,EAAT,CAAN;AACD,KALD;AAOA,kEAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B,OAA3B;AACD;;AAED,SAAO;AAAE,QAAI,EAAJ,IAAF;AAAQ,UAAM,EAAN;AAAR,GAAP;AACD,CA3GM,C;;;;;;;;;;;ACtBP,iBAAiB,mBAAO,CAAC,8BAAY;AACrC,iEAAiE;AACjE;AACA,CAAC,gBAAgB,E;;;;;;;;;;;;ACHjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;;AAOA,SAAS,oBAAT,CAA8B,KAA9B,EAA8D;AAAA,MACpD,YADoD,GACnC,KADmC,CACpD,YADoD;AAG5D,SACE,0GACG,YADH,CADF;AAKD;;AAED,SAAS,uBAAT,CAAiC,KAAjC,EAAiE;AAAA,MACvD,KADuD,GAC7C,KAD6C,CACvD,KADuD;AAG/D,SACE,oDAAC,oDAAD,EAAS;AAAC,SAAK,EAAE;AAAR,GAAT,EACE,oDAAC,wGAAD,EAAyB;AAAC,gBAAY,EAAC;AAAd,GAAzB,EACE,oDAAC,oBAAD,EAAqB,kBAAK,KAAL,CAArB,CADF,CADF,CADF;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BD;AAEA;AAEA;AACA;AAEA;AACA;AAGO,IAAM,eAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;;AACY,4BAAuD,EAAvD;AADZ;AAsDC;;AAtDD;AAAA;AAAA,8BAmBgB;AACZ,aAAO;AACL,cAAM,EAAE;AACN,YAAE,EAAE,gBADE;AAEN,mBAAS,EAAE;AAFL;AADH,OAAP;AAMD;AA1BH;AAAA;AAAA,yCA4B4B;AACxB,aAAO;AACL,oBAAY,EAAE,KAAK,eAAL,CAAqB,gFAAa,CAAC,OAAnC,CADT;AAEL,aAAK,EAAE,KAAK,OAAL,CAAa;AAFf,OAAP;AAID;AAjCH;AAAA;AAAA,gCAmCwB,MAnCxB,EAmCsC;AAClC,aAAO,KAAK,eAAL,CAAqB,MAArB,CAAP;AAEA,WAAK,YAAL;AACD;AAvCH;AAAA;AAAA,iCAyCmB;AACf,WAAK,WAAL,CAAiB,gFAAa,CAAC,KAA/B;AACD;AA3CH;AAAA;AAAA,kCA6CuB,MA7CvB,EA6CuC,SA7CvC,EA6CoE;AAChE,WAAK,eAAL,CAAqB,MAArB,IAA+B,SAA/B;AAEA,WAAK,YAAL;AACD;AAjDH;AAAA;AAAA,mCAmDqB;AACjB,yFAAoB,QAApB,EAA8B,oDAAC,0EAAD,EAAqB,kBAAK,KAAK,kBAAL,EAAL,CAArB,CAA9B;AACD;AArDH;AAAA;AAAA,wBAGkB;AACd,aAAO,KAAP;AACD;AALH;AAAA;AAAA,wBAOiB;AACb,aAAO,iBAAP;AACD;AATH;AAAA;AAAA,wBAWqB;AACjB,aAAO,uDAAP;AACD;AAbH;AAAA;AAAA,kCAe2B;AACvB,aAAO,oEAAO,CAAC,YAAf;AACD;AAjBH;;AAAA;AAAA,EAAqC,2FAArC,E;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,8BAAY;AACrC,iEAAiE;AACjE;AACA,CAAC,gBAAgB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHjB;AAEA;AACA;AAEA;AACA;AAGA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;;AAQA,SAAS,kBAAT,CACE,QADF,EACqB,QADrB,EACwC,MADxC,EACyD,OADzD,EACyE;AAEvE,MAAI,CAAC,OAAL,EAAc;AACZ,WAAO;AACL,WAAK,EAAE,8EAAY,CAAC,MADf;AAEL,cAAQ,EAAE,KAFL;AAGL,kBAAY,EAAE,4DAAM,CAAC;AAHhB,KAAP;AAKD;;AAED,MAAI,QAAJ,EAAc;AACZ,WAAO;AACL,WAAK,EAAE,QAAQ,GAAG,8EAAY,CAAC,MAAhB,GAAyB,8EAAY,CAAC,IADhD;AAEL,cAAQ,EAAE,CAAC,QAFN;AAGL,kBAAY,EAAE,4DAAM,CAAC;AAHhB,KAAP;AAKD;;AAED,MAAI,MAAJ,EAAY;AACV,WAAO;AACL,WAAK,EAAE,QAAQ,GAAG,8EAAY,CAAC,SAAhB,GAA4B,8EAAY,CAAC,IADnD;AAEL,cAAQ,EAAE,CAAC,QAFN;AAGL,kBAAY,EAAE,4DAAM,CAAC;AAHhB,KAAP;AAKD;;AAED,SAAO;AACL,SAAK,EAAE,QAAQ,GAAG,8EAAY,CAAC,SAAhB,GAA4B,8EAAY,CAAC,IADnD;AAEL,YAAQ,EAAE,KAFL;AAGL,gBAAY,EAAE,QAAQ,GAAG,4DAAM,CAAC,mBAAV,GAAgC,4DAAM,CAAC;AAHxD,GAAP;AAKD;;AAcD,IAAM,sBAAsB,GAAG,SAAzB,sBAAyB,CAAC,KAAD,EAA2D;;;AAAA,MAChF,OADgF,GACC,KADD,CAChF,OADgF;AAAA,MACvE,YADuE,GACC,KADD,CACvE,YADuE;AAAA,MACzD,UADyD,GACC,KADD,CACzD,UADyD;AAAA,MAC7C,UAD6C,GACC,KADD,CAC7C,UAD6C;AAAA,MACjC,aADiC,GACC,KADD,CACjC,aADiC;AAAA,MAClB,cADkB,GACC,KADD,CAClB,cADkB;;AAAA,wBAGtD,+CAAe,KAAf,CAHsD;AAAA;AAAA,MAGhF,QAHgF;AAAA,MAGtE,WAHsE,wBAKxF;;;AACA,6EAAU;AAEV,MAAM,UAAU,GAAG,6GAAsB,EAAzC;AAEA,MAAM,QAAQ,GAAG,UAAU,KAAK,qFAAiB,CAAC,EAAlD;AACA,MAAM,MAAM,GAAG,UAAU,KAAK,qFAAiB,CAAC,EAAhD;AACA,MAAM,cAAc,GAAG,UAAU,KAAK,qFAAiB,CAAC,GAAxD;AAEA,MAAM,cAAc,GAAG,CAAC,cAAD,IAAmB,UAAU,KAAK,qFAAiB,CAAC,EAA3E;;AAdwF,sBAgBnE,8FAAY,CAAgB,8EAAa,CAAC,eAA9B,CAhBuD;AAAA;AAAA,MAgBjF,UAhBiF;;AAkBxF,MAAM,aAAa,GAAG,SAAhB,aAAgB,GAAK;AACzB,eAAW,CAAC,CAAC,QAAF,CAAX;AACD,GAFD;;AAIA,kDAAgB,YAAK;AACnB,eAAW,CAAC,CAAC,cAAF,CAAX;AACD,GAFD,EAEG,CAAC,cAAD,CAFH;AAIA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAD,EAAW,QAAX,EAAqB,MAArB,EAA6B,OAA7B,CAAnC;AAEA,MAAM,kBAAkB,GAAG,0FAAU,CAAyB,mEAAQ,CAAC,WAAlC,CAArC;AACA,MAAM,MAAM,GAAG,kDAAkB,UAAC,aAAD,EAA0B;AACzD,sBAAkB,CAAC,QAAnB,CAA4B,aAA5B,EAA2C;AACzC,YAAM,EAAE,yEAAU,CAAC,KADsB;AAEzC,gBAAU,EAAE,yEAAU,CAAC,MAFkB;AAGzC,mBAAa,EAAE,4EAAa,CAAC,KAHY;AAIzC,gBAAU,EAAE,mFAAe,CAAC,kBAAhB,CAAmC,8EAAe,CAAC,QAAnD,CAJ6B;AAKzC,cAAQ,EAAE,8EAAe,CAAC;AALe,KAA3C;AAOD,GARc,EAQZ,EARY,CAAf;;AA7BwF,qBAuClC,kEAAW,CAAC;AAChE,UAAM,EAAN,MADgE;AAEhE,WAAO,EAAE,IAFuD;AAGhE,cAAU,EAAE;AAHoD,GAAD,CAvCuB;AAAA,MAuChF,YAvCgF,gBAuChF,YAvCgF;AAAA,MAuClE,aAvCkE,gBAuClE,aAvCkE;AAAA,MAuCnD,YAvCmD,gBAuCnD,YAvCmD,EA6CxF;;;AACA,MAAI,6BAA6B,GAAG,oCAApC;AACA,MAAI,uBAAuB,GAAG,EAA9B;AAEA;;;;;;;;AAOA,YAAI,UAAJ,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,gBAAhB,EACE,uBAAuB,GAAG,4DAAM,CAAC,yBAAjC,CADF,KAGE,6BAA6B,eAAQ,4DAAM,CAAC,yBAAf,CAA7B;AAEF,SACE,6EAAS,YAAY,EAArB,GACE,oDAAC,yEAAD,EAAW;AAAC,iBAAa,EAAE,aAAhB;AAA+B,WAAO,EAAE;AAAxC,GAAX,CADF,EAEG,OAAO,IACN,oDAAC,6EAAD,EAAY;AACV,YAAQ,EAAE,QAAQ,CAAC,KADT;AAEV,iBAAa,EAAE,aAFL;AAGV,kBAAc,EAAE;AAHN,GAAZ,CAHJ,EASE;AAAK,aAAS,YAAK,4DAAM,CAAC,OAAZ,cAAuB,QAAQ,CAAC,YAAhC;AAAd,KACE;AAAK,aAAS,YAAK,cAAc,GAAG,iBAAH,GAAuB,WAA1C;AAAd,KACG,YADH,CADF,CATF,EAcG,UAdH,EAeG,QAAQ,CAAC,QAAT,IAAqB;AAAK,aAAS,gCAAyB,4DAAM,CAAC,IAAhC;AAAd,IAfxB,EAgBE;AAAK,aAAS,EAAE;AAAhB,KACG,CAAC,CAAC,UAAF,IAAgB;AAAK,aAAS,EAAE;AAAhB,KAA0C,UAA1C,CADnB,EAEE,oDAAC,gGAAD,EAAe,IAAf,CAFF,CAhBF,EAoBG,YAAY,IAAI,oDAAC,6DAAD,EAAS,IAAT,CApBnB,EAqBE,+EAAW,aAAa,EAAxB,EArBF,CADF;AAyBD,CAtFD;;AAwFA,SAAS,uBAAT,CAAiC,KAAjC,EAAmE;AACjE,SACE,oDAAC,oDAAD,EAAS;AAAC,SAAK,EAAE,KAAK,CAAC;AAAd,GAAT,EACE,oDAAC,yGAAD,EAAyB;AAAC,gBAAY,EAAC;AAAd,GAAzB,EACE,oDAAC,sBAAD,EAAuB,kBAAK,KAAL,CAAvB,CADF,CADF,CADF;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjLD;AAGA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAMO,IAAM,iBAAb;AAAA;;AAAA;;AAQE,6BAAY,OAAZ,EAA8C;AAAA;;AAAA;;AAC5C,8BAAM,OAAN;AAPQ,4BAAuD,EAAvD;AAMoC;AAE7C;;AAVH;AAAA;AAAA,iCAYmB;;;AACf,WAAK,aAAL,GAAkB,MAAG,uFAAc,CAAC,iBAAf,EAAH,MAAqC,IAArC,IAAqC,aAArC,GAAqC,MAArC,GAAqC,GAAE,OAAzD;AACA,WAAK,cAAL,GAAsB,IAAtB;AAEA,WAAK,QAAL,CAAc,iGAAc,CAAC,KAA7B,EAAoC,8DAAI,CAAC,UAAL,CAAgB,KAApD,EAA2D,KAAK,aAAhE;AACD;AAjBH;AAAA;AAAA,8BAmCgB;AACZ,aAAO;AACL,cAAM,EAAE;AACN,YAAE,EAAE,gBADE;AAEN,mBAAS,EAAE;AAFL;AADH,OAAP;AAMD;AA1CH;AAAA;AAAA,yCA4C4B;AACxB,aAAO;AACL,eAAO,EAAE,KAAK,OAAL,CAAa,OADjB;AAEL,oBAAY,EAAE,KAAK,eAAL,CAAqB,gFAAa,CAAC,OAAnC,CAFT;AAGL,kBAAU,EAAE,KAAK,eAAL,CAAqB,gFAAa,CAAC,KAAnC,CAHP;AAIL,kBAAU,EAAE,KAAK,eAAL,CAAqB,gFAAa,CAAC,KAAnC,CAJP;AAKL,aAAK,EAAE,KAAK,OAAL,CAAa,KALf;AAML,qBAAa,EAAE,KAAK,aANf;AAOL,sBAAc,EAAE,KAAK;AAPhB,OAAP;AASD;AAtDH;AAAA;AAAA,kCAwDwB,aAxDxB,EAwDqD,OAxDrD,EAwDsF;AAClF,WAAK,aAAL,GAAqB,aAArB;AACA,WAAK,cAAL,GAAsB,OAAO,CAAC,UAA9B;AACD;AA3DH;AAAA;AAAA,gCA6DwB,MA7DxB,EA6DsC;AAClC,aAAO,KAAK,eAAL,CAAqB,MAArB,CAAP;AAEA,WAAK,YAAL;AACD;AAjEH;AAAA;AAAA,iCAmEmB;AACf,WAAK,WAAL,CAAiB,gFAAa,CAAC,KAA/B;AACD;AArEH;AAAA;AAAA,kCAuEuB,MAvEvB,EAuEuC,SAvEvC,EAuEoE;AAChE,WAAK,eAAL,CAAqB,MAArB,IAA+B,SAA/B;AAEA,WAAK,YAAL;AACD;AA3EH;AAAA;AAAA,mCA6EqB;AACjB,2FAAoB,QAApB,EAA8B,oDAAC,8EAAD,EAAuB,kBAAK,KAAK,kBAAL,EAAL,CAAvB,CAA9B;AACD;AA/EH;AAAA;AAAA,wBAmBkB;AACd,aAAO,KAAP;AACD;AArBH;AAAA;AAAA,wBAuBiB;AACb,aAAO,mBAAP;AACD;AAzBH;AAAA;AAAA,wBA2BqB;AACjB,aAAO,yDAAP;AACD;AA7BH;AAAA;AAAA,gCA+B4B,OA/B5B,EA+B6D;AACzD,uBAAU,oEAAO,CAAC,cAAlB,cAAoC,OAAO,CAAC,OAA5C;AACD;AAjCH;;AAAA;AAAA,EAAuC,2FAAvC,E;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEM,SAAU,QAAV,GAAkB;AACtB,SACE,0GACE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,IADF,EAEE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,KACE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,KACE,gEAAI,oDAAC,0EAAD,EAAK;AAAC,aAAS,EAAE,iBAAZ;AAA+B,UAAM,EAAE;AAAvC,GAAL,CAAJ,CADF,CADF,CAFF,EAOE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,IAPF,CADF;AAWD,C;;;;;;;;;;;;;;;;;;;;;;ACjBD;AACA,kBAAkB,uI;;;;;;;;;;;ACDlB;AACA,kBAAkB,iR;;;;;;;;;;;;;;;;;;;;;;;;;;ACAlB;AAEA;AACA;AAEA;AACA;AAEA,IAAM,QAAQ,GAAG;AACf,cAAY,EAAE,sBAAC,OAAD,EAAmE;AAC/E,WAAO;AACL,SAAG,EAAE,8EADA;AAEL,SAAG,EAAE,WAFA;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE;AAJN,KAAP;AAMD,GARc;AAUf,WAAS,EAAE,mBAAC,EAAD,EAAa,OAAb,EAAqE;AAC9E,WAAO;AACL,SAAG,mCAA4B,EAA5B,oBAAwC,8FAAoB,CAAC,MAA7D,CADE;AAEL,SAAG,mBAAY,EAAZ,CAFE;AAGL,aAAO,EAAP;AAHK,KAAP;AAKD;AAhBc,CAAjB;AAuBO,IAAM,wBAAb;AAGE,oCAAY,OAAZ,EAAoD;AAAA;;AAClD,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,iCAesB,QAftB,EAegE;AAAA;;AAC5D,UAAM,OAAO,GAAG,QAAQ,CAAC,YAAT,CAAsB,UAAC,SAAD,EAAoC;AACxE,sDAAK,CAAC,OAAN,CAAc,KAAI,CAAC,WAAnB,EAAgC,OAAhC,CAAwC,gBAAxC,EAA0D,SAA1D;AAEA,gBAAQ,IAAI,QAAQ,CAAC,IAAI,8DAAI,CAAC,UAAT,CAAoB,SAApB,CAAD,CAApB;AACD,OAJe,CAAhB;AAMA,UAAM,cAAc,GAAG,6DAAM,CAAC,WAAP,CAAyC,KAAK,KAAL,CAAW,QAAX,EAAzC,EAAgE,OAAO,CAAC,GAAxE,CAAvB;AAEA,UAAI,cAAc,CAAC,WAAnB,EACE,6DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,OAAlC;AAEF,aAAO,cAAc,CAAC,IAAf,IAAuB,IAAI,8DAAI,CAAC,UAAT,CAAoB,cAAc,CAAC,IAAf,CAAoB,GAApB,CAAwB,aAAG;AAAA,eAAI,GAAG,CAAC,IAAR;AAAA,OAA3B,CAApB,CAA9B;AACD;AA5BH;AAAA;AAAA,8BA8BmB,EA9BnB,EA8B+B,QA9B/B,EA8BoE;AAChE,UAAM,OAAO,GAAG,QAAQ,CAAC,SAAT,CAAmB,EAAnB,EAAuB,UAAC,MAAD;AAAA,eAAoB,QAAQ,IAAI,QAAQ,CAAC,IAAI,8DAAI,CAAC,KAAT,CAAe,MAAf,CAAD,CAAxC;AAAA,OAAvB,CAAhB;AACA,UAAM,cAAc,GAAG,6DAAM,CAAC,WAAP,CAA2B,KAAK,KAAL,CAAW,QAAX,EAA3B,EAAkD,OAAO,CAAC,GAA1D,CAAvB;AAEA,UAAI,cAAc,CAAC,WAAnB,EACE,6DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,OAAlC;AAEF,aAAO,cAAc,CAAC,IAAf,IAAuB,IAAI,8DAAI,CAAC,KAAT,CAAe,cAAc,CAAC,IAA9B,CAA9B;AACD;AAtCH;AAAA;AAAA,wBAOiB;AACb,aAAO,4FAAkB,CAAC,OAA1B;AACD;AATH;AAAA;AAAA,wBAWwB;AACpB,aAAO,sBAAP;AACD;AAbH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AAEA;AACA;AACA;AAEA,IAAM,QAAQ,GAAG;AACf,QADe,kBACR,EADQ,EACI,OADJ,EACoC;AACjD,WAAO;AACL,SAAG,mCAA4B,EAA5B,oBAAwC,8FAAoB,CAAC,MAA7D,CADE;AAEL,SAAG,mBAAY,EAAZ,CAFE;AAGL,aAAO,EAAP;AAHK,KAAP;AAKD;AAPc,CAAjB;AAcO,IAAM,uBAAb;AAGE,mCAAY,OAAZ,EAAmD;AAAA;;AACjD,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,8BAemB,EAfnB,EAe+B,QAf/B,EAeoE;AAChE,UAAM,OAAO,GAAG,QAAQ,CAAC,MAAT,CAAgB,EAAhB,EAAoB,UAAC,MAAD;AAAA,eAAoB,QAAQ,IAAI,QAAQ,CAAC,IAAI,8DAAI,CAAC,KAAT,CAAe,MAAf,CAAD,CAAxC;AAAA,OAApB,CAAhB;AACA,UAAM,cAAc,GAAG,6DAAM,CAAC,WAAP,CAA2B,KAAK,KAAL,CAAW,QAAX,EAA3B,EAAkD,OAAO,CAAC,GAA1D,CAAvB;AAEA,UAAI,cAAc,CAAC,WAAnB,EACE,6DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,OAAlC;AAEF,aAAO,cAAc,CAAC,IAAf,IAAuB,IAAI,8DAAI,CAAC,KAAT,CAAe,cAAc,CAAC,IAA9B,CAA9B;AACD;AAvBH;AAAA;AAAA,wBAOiB;AACb,aAAO,4FAAkB,CAAC,MAA1B;AACD;AATH;AAAA;AAAA,wBAWwB;AACpB,aAAO,2FAAkB,CAAC,MAA1B;AACD;AAbH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AAEA;AAEA;AAMO,IAAM,qBAAb;AAGE,iCAAY,OAAZ,EAAiD;AAAA;;AAC/C,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,mCAWwB,OAXxB,EAW+D,KAX/D,EAWiF;AAC7E,mEAAM,CAAC,gBAAP,CAAwB,KAAK,KAAL,CAAW,QAAnC,EAA6C,KAAK,KAAL,CAAW,QAAX,EAA7C,EAAoE,0FAAY,CAAC,WAAb,CAAyB,OAAzB,EAAkC,KAAlC,CAApE;AACD;AAbH;AAAA;AAAA,wBAOiB;AACb,aAAO,sEAAY,CAAC,UAApB;AACD;AATH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AAGA;AACA;AAMO,IAAM,sBAAb;AAGE,kCAAY,OAAZ,EAAkD;AAAA;;AAChD,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,sCAWwB;AACpB,WAAK,KAAL,CAAW,QAAX,CAA6C;AAC3C,YAAI,EAAE,6DAAM,CAAC,OAAP,CAAe,UADsB;AAE3C,YAAI,EAAE,CAAC,OAAD,CAFqC;AAG3C,eAAO,EAAE;AAHkC,OAA7C;AAKD;AAjBH;AAAA;AAAA,8BAmBI,GAnBJ,EAoBI,QApBJ,EAoB4D;AAExD,UAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,MAAD,EAAoB;AAC1C,YAAI,CAAC,6FAAc,CAAC,UAAf,CAA0B,QAA1B,CAAL,EACE;AAEF,gBAAQ,CAAC,IAAI,8DAAI,CAAC,UAAT,CAAoB,MAApB,CAAD,CAAR;AACD,OALD;;AAMA,UAAM,OAAO,GAAG,kFAAa,CAAC,MAAd,CAAqB,GAArB,EAA0B,eAA1B,CAAhB;AACA,UAAM,QAAQ,GAAG,6DAAM,CAAC,WAAP,CAA4B,KAAK,KAAL,CAAW,QAAX,EAA5B,EAAmD,OAAO,CAAC,GAA3D,CAAjB;AAEA,UAAI,QAAQ,CAAC,WAAb,EACE,6DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,OAAlC,EADF,KAGE,eAAe,CAAC,QAAQ,CAAC,IAAV,CAAf;AACF,aAAO,IAAI,8DAAI,CAAC,UAAT,CAAoB,QAAQ,CAAC,IAA7B,CAAP;AACD;AApCH;AAAA;AAAA,wBAOiB;AACb,aAAO,sEAAY,CAAC,KAApB;AACD;AATH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AAEA;AAIA;AACA;AAEA,IAAM,SAAS,GAAG;AAChB,aAAW,EAAE,qBAAC,QAAD,EAAmB,IAAnB,EAAyC;AACpD,QAAI,QAAQ,qCAA8B,QAA9B,CAAZ;AAEA,QAAI,8EAAW,CAAC,IAAD,CAAf,EACE,QAAQ,oBAAa,IAAb,CAAR;AAEF,WAAO,QAAP;AACD,GARe;AAUhB,eAAa,EAAE,uBAAC,QAAD;AAAA,6CAAiD,QAAjD;AAAA;AAVC,CAAlB;AAaO,IAAM,mBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,+BAUI,QAVJ,EAWI,IAXJ,EAYI,QAZJ,EAY4C;AAExC,UAAM,cAAc,GAAG,6FAAc,CAAC,UAAf,CAA0B,QAA1B,IAAsC,UAAC,IAAD,EAA0B;AACrF,YAAM,OAAO,GAAG,IAAI,CAAC,IAAL,CAAU,WAAC;AAAA,iBAAI,CAAC,CAAC,IAAF,KAAW,IAAf;AAAA,SAAX,CAAhB;AAEA,YAAI,6FAAc,CAAC,UAAf,CAA0B,QAA1B,CAAJ,EACE,QAAQ,CAAC,OAAD,CAAR;AACH,OALsB,GAKnB,IALJ;AAOA,UAAM,QAAQ,GAAG,KAAK,WAAL,CAAiB,QAAjB,EAA2B,IAA3B,EAAiC,cAAjC,CAAjB;AAEA,aAAO,QAAQ,GAAG,QAAQ,CAAC,IAAT,CAAc,WAAC;AAAA,eAAI,CAAC,CAAC,IAAF,KAAW,IAAf;AAAA,OAAf,CAAH,GAAyC,IAAxD;AACD;AAxBH;AAAA;AAAA,gCA2BI,QA3BJ,EA4BI,IA5BJ,EA6BI,QA7BJ,EA6B8C;AAC1C,aAAO,KAAK,GAAL,CAA0B;AAC/B,gBAAQ,EAAR,QAD+B;AAE/B,gBAAQ,EAAE,SAAS,CAAC,WAAV,CAAsB,QAAtB,EAAgC,IAAhC,CAFqB;AAG/B,mBAAW,EAAE;AAHkB,OAA1B,CAAP;AAKD;AAnCH;AAAA;AAAA,wBACiB;AACb,aAAO,sEAAY,CAAC,QAApB;AACD;AAHH;AAAA;AAAA,wBAKwB;AACpB,aAAO,2EAAY,CAAC,QAApB;AACD;AAPH;;AAAA;AAAA,EAAyC,kGAAzC,E;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA,IAAM,SAAS,GAAG,cAAlB;;AAOA,SAAS,iBAAT,GAA0B;AACxB,SAAO,CAAE,YAAY,CAAC,iBAAb,EAAF,EAAoC,YAAY,CAAC,gBAAb,EAApC,CAAP;AACD;;AASM,IAAM,YAAY,GAAG;AAC1B,QAAM,EAAE,gBAAC,QAAD,EAA4D,OAA5D,EAAsF;AAC5F,QAAM,YAAY,GAAG,QAAQ,CAAC,cAAT,CAAwB,eAAxB,CAArB;;AAEA,aAAS,SAAT,GAAkB;AAChB,mGAAc,CAAC,UAAf,CAA0B,OAAO,CAAC,OAAlC,KAA8C,OAAO,CAAC,OAAR,EAA9C;AACA,8EAAsB,CAAC,YAAD,CAAtB;AACD;;AAED,aAAS,QAAT,GAAiB;AACf,mGAAc,CAAC,UAAf,CAA0B,OAAO,CAAC,MAAlC,KAA6C,OAAO,CAAC,MAAR,EAA7C;AACA,8EAAsB,CAAC,YAAD,CAAtB;AACD;;AAED,QAAM,OAAO,GAAG,OAAO,CAAC,OAAR,IAAmB,iBAAiB,EAApD;AAEA,QAAM,YAAY,GAAkB,OAAO,CAAC,GAAR,CAAY,gBAAM,EAAG;AACvD,UAAM,eAAe,GAAG,MAAM,CAAC,OAA/B;;AAEA,eAAS,OAAT,GAAgB;AACd,YAAI,eAAJ,EACE,SAAS;AAEX,gBAAQ;AACR,qGAAc,CAAC,UAAf,CAA0B,MAAM,CAAC,OAAjC,KAA6C,MAAM,CAAC,OAAP,EAA7C;AACD;;AAED,aAAO,MAAM,CAAC,OAAd;AAEA,6CACK,MADL,GACW;AACT,eAAO,EAAP;AADS,OADX;AAID,KAjBmC,CAApC;;AAmBA,4DAAM,CACJ,2DAAC,6EAAD,EAAM;AAAC,WAAK,EAAE,OAAO,CAAC,KAAhB;AAAuB,gBAAU,EAAE;AAAnC,KAAN,EACG,QADH,EAEE,2DAAC,2FAAD,EAAa;AAAC,aAAO,EAAE;AAAV,KAAb,CAFF,CADI,EAKH,YALG,CAAN;AAMD,GAzCyB;AA2C1B,kBA3C0B,8BA2CV;AACd,WAAO;AACL,aAAO,EAAE,OADJ;AAEL,gBAAU,EAAE,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,QAArC;AAFP,KAAP;AAID,GAhDyB;AAkD1B,mBAlD0B,+BAkDT;AACf,WAAO;AACL,aAAO,EAAE,MADJ;AAEL,aAAO,EAAE,IAFJ;AAGL,gBAAU,EAAE,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,SAArC;AAHP,KAAP;AAKD;AAxDyB,CAArB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBP;AACA;AAEO,IAAM,aAAa,GAAG;AAC3B,qBAD2B,iCACR;AACjB,QAAM,WAAW,GAAG,8EAAW,CAAC,SAAhC;AAEA,WAAO,MAAM,CAAC,IAAP,CAAY,oEAAO,CAAC,SAApB,EAA+B,GAA/B,CAAmC,UAAC,MAAD;AAAA,aAA6C;AACrF,mBAAW,EAAX,WADqF;AAErF,cAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB,MAAlB;AAF6E,OAA7C;AAAA,KAAnC,CAAP;AAID,GAR0B;AAU3B,qBAV2B,iCAUR;AACjB,QAAM,WAAW,GAAG,8EAAW,CAAC,SAAhC;AAEA,WAAO,MAAM,CAAC,IAAP,CAAY,oEAAO,CAAC,SAApB,EAA+B,GAA/B,CAAmC,UAAC,MAAD;AAAA,aAA6C;AACrF,mBAAW,EAAX,WADqF;AAErF,cAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB,MAAlB;AAF6E,OAA7C;AAAA,KAAnC,CAAP;AAID,GAjB0B;AAmB3B,qBAnB2B,iCAmBR;AACjB,QAAM,SAAS,GAAG,8EAAW,CAAC,MAA9B;AACA,QAAM,QAAQ,GAAG,MAAM,CAAC,IAAP,CAAY,oEAAO,CAAC,MAApB,EAA4B,GAA5B,CAAgC,UAAC,MAAD;AAAA,aAA0C;AACzF,mBAAW,EAAE,SAD4E;AAEzF,cAAM,EAAE,oEAAO,CAAC,MAAR,CAAe,MAAf;AAFiF,OAA1C;AAAA,KAAhC,CAAjB;AAKA,YAAQ,CAAC,IAAT,CAAc;AAAE,iBAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,YAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,KAAd;AAEA,WAAO,QAAP;AACD,GA7B0B;AA+B3B,6BA/B2B,yCA+BA;AACzB,WAAO,CAAC;AAAE,iBAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,YAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,KAAD,CAAP;AACD,GAjC0B;AAmC3B,yBAnC2B,qCAmCJ;AACrB,QAAM,WAAW,GAAG,8EAAW,CAAC,aAAhC;AAEA,WAAO,MAAM,CAAC,IAAP,CAAY,oEAAO,CAAC,YAApB,EAAkC,GAAlC,CAAsC,UAAC,MAAD;AAAA,aAAgD;AAC3F,mBAAW,EAAX,WAD2F;AAE3F,cAAM,EAAE,oEAAO,CAAC,YAAR,CAAqB,MAArB;AAFmF,OAAhD;AAAA,KAAtC,CAAP;AAID,GA1C0B;AA4C3B,uBA5C2B,mCA4CN;AACnB,WAAO,CAAC;AACN,iBAAW,EAAE,8EAAW,CAAC,UADnB;AAEN,YAAM,EAAE,oEAAO,CAAC,UAAR,CAAmB;AAFrB,KAAD,CAAP;AAID,GAjD0B;AAmD3B,sBAnD2B,kCAmDP;AAClB,QAAM,WAAW,GAAG,8EAAW,CAAC,UAAhC;AAEA,WAAO,MAAM,CAAC,IAAP,CAAY,oEAAO,CAAC,UAApB,EACJ,MADI,CACG,WAAC;AAAA,aAAI,CAAC,KAAK,oEAAO,CAAC,UAAR,CAAmB,IAA7B;AAAA,KADJ,EAEJ,GAFI,CAEA,UAAC,MAAD;AAAA,aAA8C;AACjD,mBAAW,EAAX,WADiD;AAEjD,cAAM,EAAE,oEAAO,CAAC,UAAR,CAAmB,MAAnB;AAFyC,OAA9C;AAAA,KAFA,CAAP;AAMD,GA5D0B;AA8D3B,qBA9D2B,iCA8DR;AACjB,QAAM,WAAW,GAAG,MAAM,CAAC,IAAP,CAAY,oEAAO,CAAC,QAApB,EAA8B,GAA9B,CAAkC,UAAC,MAAD;AAAA,aAA0C;AAC9F,mBAAW,EAAE,8EAAW,CAAC,QADqE;AAE9F,cAAM,EAAE,oEAAO,CAAC,QAAR,CAAiB,MAAjB;AAFsF,OAA1C;AAAA,KAAlC,CAApB;AAKA,wCACK,WADL,IAEE;AACE,iBAAW,EAAE,8EAAW,CAAC,OAD3B;AAEE,YAAM,EAAE,oEAAO,CAAC,QAAR,CAAiB;AAF3B,KAFF;AAOD;AA3E0B,CAAtB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJP;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAOM,SAAU,UAAV,CAAqB,KAArB,EAA2C;;;AAC/C,MAAM,WAAW,GAAG,6DAAM,CAAC,aAAP,CAAkC,0FAAY,CAAC,WAAb,EAAlC,EAA8D;AAAE,YAAQ,EAAE;AAAZ,GAA9D,CAApB;AACA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAzB;AAEA,MAAM,MAAM,GAAG,6DAAM,CAAC,aAAP,CAA6B,+FAAc,CAAC,MAA5C,EAAoD;AAAE,YAAQ,EAAE;AAAZ,GAApD,CAAf;AACA,MAAM,YAAY,GAAG,6DAAM,CAAC,aAAP,CAAmC,+GAAsB,CAAC,YAAvB,EAAnC,CAArB;;AAL+C,sBAO5B,8FAAY,CAAU,8EAAa,CAAC,mBAAxB,EAA6C,IAA7C,CAPgB;AAAA;AAAA,MAO1C,UAP0C;;AAS/C,MAAI,CAAC,KAAK,CAAC,OAAX,EACE,UAAU,GAAG,KAAb;AAEF,SACE;AAAK,aAAS,8CAAuC,oDAAM,CAAC,GAA9C;AAAd,KAEE;AAAK,aAAS,EAAC;AAAf,KACG,KAAK,CAAC,OAAN,IACC,oDAAC,mGAAD,EAAa;AACX,WAAO,EAAE,6EAAY,CAAC,MADX;AAEX,aAAS,YAAK,oDAAM,CAAC,SAAZ,eAFE;AAGX,WAAO,EAAE,KAAK,CAAC;AAHJ,GAAb,CAFJ,EASG,KAAK,CAAC,OAAN,GAEG;AAAG,aAAS,6CAAsC,oDAAM,CAAC,aAA7C,qBAAZ;AAA0F,QAAI,EAAC;AAA/F,KACE,oDAAC,4GAAD,EAAc,IAAd,CADF,CAFH,GAMG;AAAM,aAAS,6CAAsC,oDAAM,CAAC,aAA7C;AAAf,KACE,oDAAC,4GAAD,EAAc,IAAd,CADF,CAfN,CAFF,EAwBG,UAAU,IACT;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,yGAAD,EAAoB;AAClB,aAAS,sBAAe,oDAAM,CAAC,qBAAtB,CADS;AAElB,QAAI,EAAE,yGAFY;AAGlB,WAAO,EAAE;AACP,WAAK,EAAE,oGAAgB,CAAC,GAAjB,CAA4B,QAA5B,EAAsC;AAAE,YAAI,EAAE,gFAAK;AAAb,OAAtC,CADA;AAEP,iBAAW,EAAE,IAFN;AAGP,oBAAc,QAAE,YAAY,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE;AAH5B;AAHS,GAApB,CADF,CAzBJ,EAsCE;AAAK,aAAS,+DAAwD,oDAAM,CAAC,aAA/D;AAAd,KACI,KAAK,CAAC,OAAN,IAAiB,IAAlB,IACC,0GACE,oDAAC,4GAAD,EAAiB;AAAC,kBAAc,EAAE;AAAjB,GAAjB,CADF,EAEE,oDAAC,yGAAD,EAAoB;AAAC,QAAI,EAAE,8HAAP;AAA+B,aAAS,EAAC;AAAzC,GAApB,CAFF,CAFJ,EAQG,CAAC,CAAC,MAAM,CAAC,IAAT,IACC,oDAAC,uFAAD,EAAY;AACV,QAAI,EAAE,IADI;AAEV,eAAW,EAAE,MAAM,CAAC,IAAP,CAAY,WAFf;AAGV,kBAAc,EAAE,MAAM,CAAC,IAAP,CAAY,cAHlB;AAIV,mBAAe,EAAE,CAAC,KAAK,CAAC;AAJd,GAAZ,CATJ,CAtCF,CADF;AA0DD,C;;;;;;;;;;;AClGD;AACA,kBAAkB,+O;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AACA;AAGA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA,IAAM,SAAS,GAAG,gBAAlB;AACA,IAAM,SAAS,GAAG,kGAAe,CAAC,gBAAhB,CAAiC,SAAjC,CAAlB,C,CAEA;;AACA,IAAM,YAAY,uDACf,gEAAS,CAAC,QADK,EACc;AAAE,aAAW,EAAE,8EAAW,CAAC,SAA3B;AAAsC,QAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAAhE,CADd,kCAEf,gEAAS,CAAC,SAFK,EAEc;AAAE,aAAW,EAAE,8EAAW,CAAC,SAA3B;AAAsC,QAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAAhE,CAFd,kCAGf,gEAAS,CAAC,QAHK,EAGc;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAHd,kCAIf,gEAAS,CAAC,gBAJK,EAIc;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAJd,kCAKf,gEAAS,CAAC,YALK,EAKc;AAAE,aAAW,EAAE,8EAAW,CAAC,aAA3B;AAA0C,QAAM,EAAE,oEAAO,CAAC,YAAR,CAAqB;AAAvE,CALd,iBAAlB;AAYM,SAAU,oBAAV,OAAwE;AAAA,MAAvC,UAAuC,QAAvC,UAAuC;AAC5E,SACE;AAAK,aAAS,YAAK,qDAAM,CAAC,OAAZ,cAAuB,qDAAM,CAAC,gBAA9B;AAAd,KACE,2DAAC,kEAAD,EAAW;AAAC,UAAM,EAAC;AAAR,GAAX,EACE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,QADL;AAEV,QAAI,EAAE,SAAS,CAAC,UAAD,CAFL;AAGV,WAAO,EAAE,YAAY,CAAC,gEAAS,CAAC,QAAX,CAHX;AAIV,aAAS,EAAE,qDAAM,CAAC,QAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,OALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC,QANvB;AAOV,aAAS;AAPC,GAAZ,CADF,EAUE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,SADL;AAEV,QAAI,EAAE,SAAS,CAAC,WAAD,CAFL;AAGV,WAAO,EAAE,YAAY,CAAC,gEAAS,CAAC,SAAX,CAHX;AAIV,aAAS,EAAE,qDAAM,CAAC,SAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,QALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC,SANvB;AAOV,aAAS;AAPC,GAAZ,CAVF,EAmBE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,QADL;AAEV,QAAI,EAAE,SAAS,CAAC,UAAD,CAFL;AAGV,WAAO,EAAE,YAAY,CAAC,gEAAS,CAAC,QAAX,CAHX;AAIV,aAAS,EAAE,qDAAM,CAAC,QAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,KALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC,QANvB;AAOV,aAAS;AAPC,GAAZ,CAnBF,EA4BE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,gBADL;AAEV,QAAI,EAAE,SAAS,CAAC,kBAAD,CAFL;AAGV,WAAO,EAAE,YAAY,CAAC,gEAAS,CAAC,gBAAX,CAHX;AAIV,aAAS,EAAE,qDAAM,CAAC,gBAJR;AAKV,WAAO,EAAE,UAAU,KAAK,gEAAS,CAAC,gBAAzB,GACL,6EAAY,CAAC,KADR,GAEL,6EAAY,CAAC,YAPP;AASV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC,gBATvB;AAUV,aAAS;AAVC,GAAZ,CA5BF,EAwCE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,YADL;AAEV,QAAI,EAAE,SAAS,CAAC,cAAD,CAFL;AAGV,WAAO,EAAE,YAAY,CAAC,gEAAS,CAAC,YAAX,CAHX;AAIV,aAAS,EAAE,qDAAM,CAAC,YAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,OALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC,YANvB;AAOV,aAAS;AAPC,GAAZ,CAxCF,CADF,CADF;AAsDD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtFD;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,gBAAlB;AACA,IAAM,SAAS,GAAG,kGAAe,CAAC,gBAAhB,CAAiC,SAAjC,CAAlB;;AAEA,SAAS,YAAT,GAAqB;AACnB,SACE;AAAK,WAAO,EAAC;AAAb,KACE;AAAG,QAAI,EAAC,MAAR;AAAe,YAAQ,EAAC;AAAxB,KACE;AAAG,aAAS,EAAC;AAAb,KACE;AAAM,MAAE,EAAC,KAAT;AAAe,cAAU,EAAC,0BAA1B;AAAqD,YAAQ,EAAC,KAA9D;AAAoE,cAAU,EAAC,KAA/E;AAAqF,QAAI,EAAC;AAA1F,KACE;AAAO,KAAC,EAAC,KAAT;AAAe,KAAC,EAAC;AAAjB,KAAuB,KAAvB,CADF,CADF,EAIE;AAAM,MAAE,EAAC,WAAT;AAAqB,UAAM,EAAC,SAA5B;AAAsC,eAAW,EAAC,KAAlD;AAAwD,KAAC,EAAC,GAA1D;AAA8D,KAAC,EAAC,KAAhE;AAAsE,SAAK,EAAC,IAA5E;AAAiF,UAAM,EAAC,MAAxF;AAA+F,MAAE,EAAC;AAAlG,IAJF,EAKE;AAAM,MAAE,EAAC,KAAT;AAAe,MAAE,EAAC,IAAlB;AAAuB,MAAE,EAAC,MAA1B;AAAiC,MAAE,EAAC,IAApC;AAAyC,MAAE,EAAC,QAA5C;AAAqD,UAAM,EAAC,SAA5D;AAAsE,eAAW,EAAC,KAAlF;AAAwF,iBAAa,EAAC;AAAtG,IALF,EAME;AAAQ,MAAE,EAAC,MAAX;AAAkB,UAAM,EAAC,SAAzB;AAAmC,eAAW,EAAC,KAA/C;AAAqD,QAAI,EAAC,SAA1D;AAAoE,MAAE,EAAC,IAAvE;AAA4E,MAAE,EAAC,KAA/E;AAAqF,KAAC,EAAC;AAAvF,IANF,EAOE;AAAM,MAAE,EAAC,MAAT;AAAgB,MAAE,EAAC,IAAnB;AAAwB,MAAE,EAAC,KAA3B;AAAiC,MAAE,EAAC,MAApC;AAA2C,MAAE,EAAC,QAA9C;AAAuD,UAAM,EAAC,SAA9D;AAAwE,eAAW,EAAC,KAApF;AAA0F,iBAAa,EAAC;AAAxG,IAPF,EAQE;AAAM,MAAE,EAAC,MAAT;AAAgB,MAAE,EAAC,IAAnB;AAAwB,MAAE,EAAC,MAA3B;AAAkC,MAAE,EAAC,MAArC;AAA4C,MAAE,EAAC,QAA/C;AAAwD,UAAM,EAAC,SAA/D;AAAyE,eAAW,EAAC,KAArF;AAA2F,iBAAa,EAAC,OAAzG;AAAiH,aAAS,EAAC;AAA3H,IARF,CADF,CADF,CADF;AAgBD;;AAED,IAAM,QAAQ,+CACX,gEAAS,CAAC,QADC,EACkB;AAAE,aAAW,EAAE,8EAAW,CAAC,SAA3B;AAAsC,QAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAAhE,CADlB,8BAEX,gEAAS,CAAC,SAFC,EAEkB;AAAE,aAAW,EAAE,8EAAW,CAAC,SAA3B;AAAsC,QAAM,EAAE,oEAAO,CAAC,SAAR,CAAkB;AAAhE,CAFlB,8BAGX,gEAAS,CAAC,QAHC,EAGkB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAHlB,8BAIX,gEAAS,CAAC,gBAJC,EAIkB;AAAE,aAAW,EAAE,8EAAW,CAAC,OAA3B;AAAoC,QAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAA5D,CAJlB,8BAKX,gEAAS,CAAC,UALC,EAKkB;AAAE,aAAW,EAAE,8EAAW,CAAC,UAA3B;AAAuC,QAAM,EAAE,oEAAO,CAAC,UAAR,CAAmB;AAAlE,CALlB,8BAMX,gEAAS,CAAC,SANC,EAMkB;AAAE,aAAW,EAAE,8EAAW,CAAC,UAA3B;AAAuC,QAAM,EAAE,oEAAO,CAAC,UAAR,CAAmB;AAAlE,CANlB,8BAOX,gEAAS,CAAC,YAPC,EAOkB;AAAE,aAAW,EAAE,8EAAW,CAAC,aAA3B;AAA0C,QAAM,EAAE,oEAAO,CAAC,YAAR,CAAqB;AAAvE,CAPlB,8BAQX,gEAAS,CAAC,QARC,EAQkB;AAAE,aAAW,EAAE,8EAAW,CAAC,QAA3B;AAAqC,QAAM,EAAE,oEAAO,CAAC,QAAR,CAAiB;AAA9D,CARlB,aAAd;AAqBM,SAAU,mBAAV,OAAuF;AAAA,MAAvD,UAAuD,QAAvD,UAAuD;AAAA,MAA3C,eAA2C,QAA3C,eAA2C;AAC3F,MAAM,iBAAiB,GAAG,6DAAM,CAAC,aAAP,CAAsC,mGAAiB,CAAC,oBAAlB,EAAtC,CAA1B;AAEA,SACE;AAAK,aAAS,YAAK,sDAAM,CAAC,OAAZ,cAAuB,sDAAM,CAAC,eAA9B;AAAd,KACE,2DAAC,kEAAD,EAAW;AAAC,UAAM,EAAC;AAAR,GAAX,EACE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,QADL;AAEV,QAAI,EAAE,SAAS,CAAC,UAAD,CAFL;AAGV,WAAO,EAAE,QAAQ,CAAC,gEAAS,CAAC,QAAX,CAHP;AAIV,aAAS,EAAE,sDAAM,CAAC,QAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,OALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC;AANvB,GAAZ,CADF,EASE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,SADL;AAEV,QAAI,EAAE,SAAS,CAAC,WAAD,CAFL;AAGV,WAAO,EAAE,QAAQ,CAAC,gEAAS,CAAC,SAAX,CAHP;AAIV,aAAS,EAAE,sDAAM,CAAC,SAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,QALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC;AANvB,GAAZ,CATF,EAiBE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,QADL;AAEV,QAAI,EAAE,SAAS,CAAC,UAAD,CAFL;AAGV,WAAO,EAAE,QAAQ,CAAC,gEAAS,CAAC,QAAX,CAHP;AAIV,aAAS,EAAE,sDAAM,CAAC,QAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,KALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC;AANvB,GAAZ,CAjBF,EAyBE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,gBADL;AAEV,QAAI,EAAE,SAAS,CAAC,kBAAD,CAFL;AAGV,WAAO,EAAE,QAAQ,CAAC,gEAAS,CAAC,gBAAX,CAHP;AAIV,aAAS,EAAE,sDAAM,CAAC,gBAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,KALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC;AANvB,GAAZ,CAzBF,EAkCE,sEAlCF,EAoCE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,UADL;AAEV,QAAI,EAAE,SAAS,CAAC,YAAD,CAFL;AAGV,WAAO,EAAE,QAAQ,CAAC,gEAAS,CAAC,UAAX,CAHP;AAIV,aAAS,EAAE,sDAAM,CAAC,UAJR;AAKV,QAAI,EAAE,YALI;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC;AANvB,GAAZ,CApCF,EA4CG,iBAAiB,CAAC,IAAlB,GACG,iBAAiB,CAAC,IAAlB,CAAuB,GAAvB,CAA2B,mBAAS;AAAA,WAClC,2DAAC,wDAAD,EAAY;AACV,SAAG,EAAE,SAAS,CAAC,EADL;AAEV,UAAI,EAAE,SAAS,CAAC,IAFN;AAGV,aAAO,kCAAO,QAAQ,CAAC,gEAAS,CAAC,SAAX,CAAf,GAAoC;AAAE,YAAI,EAAE,CAAC,SAAS,CAAC,EAAX;AAAR,OAApC,CAHG;AAIV,eAAS,EAAE,sDAAM,CAAC,SAJR;AAKV,aAAO,EAAE,6EAAY,CAAC,IALZ;AAMV,YAAM,EAAE,UAAU,KAAK,gEAAS,CAAC,SAAzB,IAAsC,SAAS,CAAC,EAAV,KAAiB;AANrD,KAAZ,CADkC;AAAA,GAApC,CADH,GAWG,2DAAC,uFAAD,EAAmB,IAAnB,CAvDN,EA0DE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,KACE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,YADL;AAEV,QAAI,EAAE,SAAS,CAAC,cAAD,CAFL;AAGV,WAAO,EAAE,QAAQ,CAAC,gEAAS,CAAC,YAAX,CAHP;AAIV,aAAS,EAAE,sDAAM,CAAC,YAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,OALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC;AANvB,GAAZ,CADF,EASE,2DAAC,wDAAD,EAAY;AACV,OAAG,EAAE,gEAAS,CAAC,QADL;AAEV,QAAI,EAAE,SAAS,CAAC,UAAD,CAFL;AAGV,WAAO,EAAE,QAAQ,CAAC,gEAAS,CAAC,QAAX,CAHP;AAIV,aAAS,EAAE,sDAAM,CAAC,QAJR;AAKV,WAAO,EAAE,6EAAY,CAAC,GALZ;AAMV,UAAM,EAAE,UAAU,KAAK,gEAAS,CAAC;AANvB,GAAZ,CATF,CA1DF,CADF,CADF;AAiFD,C;;;;;;;;;;;;AClJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAEA;AAYM,SAAU,WAAV,CAAsB,KAAtB,EAA6C;AACjD,MAAM,YAAY,GAAG,KAAK,CAAC,SAAN,IAAmB,KAAK,CAAC,MAA9C;AADiD,MAGnC,OAHmC,GAGvB,KAHuB,CAGzC,IAHyC;AAKjD,MAAI,kBAAkB,aAAM,qDAAM,CAAC,aAAb,cAA8B,KAAK,CAAC,SAApC,WAAtB;AACA,oBAAkB,IAAK,CAAC,KAAK,CAAC,SAAP,IAAoB,KAAK,CAAC,MAA3B,GAAqC,qDAAM,CAAC,MAA5C,GAAqD,qDAAM,CAAC,QAAlF;AAEA,MAAI,CAAC,KAAK,CAAC,SAAP,IAAoB,KAAK,CAAC,MAA9B,EACE,kBAAkB,IAAI,MAAM,qDAAM,CAAC,MAAnC;AAEF,SACE,2DAAC,oFAAD,EAAQ;AACN,aAAS,EAAE,kBADL;AAEN,WAAO,EAAE,KAAK,CAAC;AAFT,GAAR,EAIE;AAAM,aAAS,YAAK,qDAAM,CAAC,WAAZ;AAAf,KACG,KAAK,CAAC,IAAN,GACG,2DAAC,qGAAD,EAAc;AAAC,QAAI,EAAE,uGAAgB,CAAC;AAAxB,GAAd,EACE,2DAAC,OAAD,EAAQ,IAAR,CADF,CADH,GAIG,2DAAC,mGAAD,EAAa;AAAC,WAAO,EAAE,KAAK,CAAC,OAAhB;AAAyB,QAAI,EAAE,uGAAgB,CAAC;AAAhD,GAAb,CALN,CAJF,EAYE;AAAM,aAAS,YAAK,qDAAM,CAAC,WAAZ,cAA2B,YAAY,GAAG,qDAAM,CAAC,aAAV,GAA0B,EAAjE;AAAf,KAAuF,KAAK,CAAC,IAA7F,CAZF,CADF;AAgBD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9CD;AAIA;AACA;AAEA;AACA;AAGA,IAAY,YAAZ;;AAAA,WAAY,YAAZ,EAAwB;AACtB;AACA;AACA;AACD,CAJD,EAAY,YAAY,KAAZ,YAAY,MAAxB,E,CAMA;;;AACA,IAAM,aAAa,yDAChB,gEAAS,CAAC,QADM,EACa,wEAAa,CAAC,mBAAd,EADb,mCAEhB,gEAAS,CAAC,SAFM,EAEa,wEAAa,CAAC,mBAAd,EAFb,mCAGhB,gEAAS,CAAC,QAHM,EAGa,wEAAa,CAAC,mBAAd,EAHb,mCAIhB,gEAAS,CAAC,gBAJM,EAIa,wEAAa,CAAC,2BAAd,EAJb,mCAKhB,gEAAS,CAAC,YALM,EAKa,wEAAa,CAAC,uBAAd,EALb,mCAMhB,gEAAS,CAAC,UANM,EAMa,wEAAa,CAAC,qBAAd,EANb,mCAOhB,gEAAS,CAAC,SAPM,EAOa,wEAAa,CAAC,oBAAd,EAPb,mCAQhB,gEAAS,CAAC,QARM,EAQa,wEAAa,CAAC,mBAAd,EARb,kBAAnB;AAiBM,SAAU,WAAV,CAAsB,KAAtB,EAA6C;;;AAAA,wBACX,4CAAK,CAAC,QAAN,CAA0B,IAA1B,CADW;AAAA;AAAA,MACzC,UADyC;AAAA,MAC7B,aAD6B;;AAGjD,8CAAK,CAAC,SAAN,CAAgB,YAAK;AACnB;;;;AAIA,QAAI,CAAC,KAAK,CAAC,cAAX,EACE;AAEF,QAAI,cAAc,GAAc,IAAhC;AAEA,UAAM,CAAC,IAAP,CAAY,aAAZ,EAA2B,IAA3B,CAAgC,UAAC,GAAD,EAAgC;AAC9D,UAAI,cAAJ,EACE;AAEF,UAAM,QAAQ,GAAG,aAAa,CAAC,GAAD,CAA9B;;AAEA,UAAI,QAAQ,CAAC,IAAT,CAAc,iBAAO;AAAA,eACvB,OAAO,CAAC,WAAR,KAAwB,KAAK,CAAC,aAAN,CAAoB,WAA5C,IACG,OAAO,CAAC,MAAR,KAAmB,KAAK,CAAC,aAAN,CAAoB,MAFnB;AAAA,OAArB,CAAJ,EAGI;AACF,sBAAc,GAAG,gEAAS,CAAC,GAAD,CAA1B;AACA;AACD;AACF,KAbD;AAeA,iBAAa,CAAC,cAAD,CAAb;AACD,GA1BD,EA0BG,CAAC,KAAK,CAAC,aAAP,CA1BH;AA4BA,MAAI,KAAK,CAAC,QAAN,KAAmB,YAAY,CAAC,MAApC,EACE,OAAO,uHAAP;AAEF,MAAM,QAAQ,GAAG,YAAK,CAAC,aAAN,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,IAArB,KAA6B,KAAK,CAAC,aAAN,CAAoB,IAApB,CAAyB,CAAzB,CAA9C;AAEA,SAAO,KAAK,CAAC,QAAN,KAAmB,YAAY,CAAC,SAAhC,GACH,2DAAC,sEAAD,EAAqB;AAAC,cAAU,EAAE;AAAb,GAArB,CADG,GAEH,2DAAC,oEAAD,EAAoB;AAAC,cAAU,EAAE,UAAb;AAAyB,mBAAe,EAAE;AAA1C,GAApB,CAFJ;AAGD,C;;;;;;;;;;;;;;;;;;;;;;AC1ED;AACA,kBAAkB,uwB;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEM,SAAU,kBAAV,GAA4B;AAChC,SACE;AAAK,aAAS,YAAK,qDAAM,CAAC,aAAZ;AAAd,KACE;AAAM,aAAS,YAAK,qDAAM,CAAC,QAAZ;AAAf,IADF,EAEE;AACE,aAAS,YAAK,qDAAM,CAAC,WAAZ,cAA2B,qDAAM,CAAC,kBAAlC;AADX,IAFF,CADF;AAQD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXD;AAAA;AAAM,SAAU,sBAAV,CAAiC,KAAjC,EAAoD,IAApD,EAA6D;AACjE;;;AAIA,MAAI,CAAC,KAAD,CAAJ;AACD,C;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAGA;;AAEA,SAAS,iBAAT,CAA2B,KAA3B,EAA8C,IAA9C,EAA4D;AAC1D,MAAI,MAAJ;AACA,MAAI,IAAJ;AACA,MAAI,OAAJ;AAEA,MAAM,iBAAiB,GAAsB,kGAAe,CAAC,WAAhB,CAA4B,6FAAkB,CAAC,MAA/C,CAA7C;AACA,MAAM,eAAe,GAAoB,kGAAe,CAAC,WAAhB,CAA4B,6FAAkB,CAAC,IAA/C,CAAzC;;AAEA,WAAS,OAAT,GAAgB;AACd,WAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAoB;AACrC,UAAM,OAAO,GAAG,SAAV,OAAU,CAAC,WAAD,EAAsB;AACpC,eAAO,CAAC,WAAD,CAAP;AACD,OAFD;;AAIA,UAAM,KAAK,GAAG,SAAR,KAAQ,GAAK;AACjB,cAAM;AACP,OAFD;;AAIA,qBAAe,CAAC,cAAhB,CAA+B,OAA/B,EAAwC,KAAxC;AACD,KAVM,CAAP;AAWD;AAED;;;;;;;AAKA,MAAM,YAAY,GAAG,IAAI,mGAAJ,CAAsB,CAAtB,CAArB,CA3B0D,CA6B1D;;AACA,MAAM,iBAAiB,GAAG,SAApB,iBAAoB,GAAK;AAC7B,gBAAY,CAAC,SAAb,GAD6B,CAG7B;;AACA,QAAI,YAAY,CAAC,QAAb,KAA0B,CAA9B,EACE;AAEF;;;;AAGA,QAAM,gBAAgB,GAAG,IAAI,qFAAJ,CAAqB;AAAE,UAAI,EAAJ,IAAF;AAAQ,YAAM,EAAN;AAAR,KAArB,CAAzB;AACA,sGAAe,CAAC,iBAAhB,CAAkC,gBAAlC;AAEA,oBAAgB,CAAC,iBAAjB,CAAmC,2FAAnC;AAEA,oBAAgB,CAAC,cAAjB,CAAgC,yFAAhC,EAf6B,CAiB7B;AACA;;AACA,QAAM,WAAW,GAAG,+EAAW,CAAC,EAAhC;AAEA,oBAAgB,CAAC,cAAjB,CAAgC,mGAAhC,EAAqD;AACnD,iBAAW,EAAE,UADsC;AAEnD,oBAAc,EAAE,OAFmC;AAGnD,gBAAU,EAAE,uGAAoB,CAAC,WAAD,CAHmB;AAInD,uBAAiB,EAAE,MAAM,CAAC,iBAJyB;AAKnD,2BAAqB,EAAE,MAAM,CAAC,qBALqB;AAMnD,aAAO,EAAP,OANmD;AAOnD,eAAS,EAAE,6GAAyB,CAAC,SAPc;AAQnD,gBAAU,EAAE,6GAAyB,CAAC;AARa,KAArD;AAWA,oBAAgB,CAAC,gBAAjB,CAAkC,qGAAlC,EAAuD;AACrD,iBAAW,EAAE,mBADwC;AAErD,oBAAc,EAAE;AAFqC,KAAvD;AAKA,oBAAgB,CAAC,gBAAjB,CAAkC,+FAAlC;AAEA,sGAAe,CAAC,eAAhB,CAAgC,6FAAkB,CAAC,MAAnD;AACA,sGAAe,CAAC,eAAhB,CAAgC,6FAAkB,CAAC,IAAnD;AAEA,QAAI,CAAC,KAAD,CAAJ;AACD,GA3CD;AA6CA;;;;;AAGA,mBAAiB,CAAC,UAAlB,CAA6B,UAAC,cAAD,EAA2B;AACtD,WAAO,GAAG,cAAV;AACA,qBAAiB;AAClB,GAHD;AAKA,mBAAiB,CAAC,SAAlB,CAA4B,UAAC,SAAD,EAAsB;AAChD,UAAM,GAAG,SAAT;AACA,qBAAiB;AAClB,GAHD;AAKA,iBAAe,CAAC,cAAhB,CAA+B,UAAC,WAAD,EAAsB;AACnD,QAAI,GAAG,WAAP;AACA,qBAAiB;AAClB,GAHD;AAID;;;;;;;;;;;;;;AChHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEM,SAAU,kBAAV,CAA6B,KAA7B,EAAgD,IAAhD,EAA8D;AAClE,oGAAe,CAAC,iBAAhB,CAAkC,IAAI,6FAAJ,CAAsB;AACtD,cAAU,EAAE,8EAAc,CAAC,KAD2B;AAEtD,gBAAY,EAAE,gFAAY,CAAC;AAF2B,GAAtB,CAAlC;AAKA,MAAI,CAAC,KAAD,CAAJ;AACD,C;;;;;;;;;;;;ACbD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;;AAEA,SAAS,4BAAT,CAAsC,KAAtC,EAAyD,IAAzD,EAAuE;AACrE,oGAAe,CACZ,gBADH,CACoB,2FADpB,EAEG,gBAFH,CAEoB,gHAFpB;AAIA,gGAAsB,CAAC,IAAD,EAAO,gBAAM,EAAG;AACpC,sGAAe,CAAC,gBAAhB,CAAiC,iGAAjC,EAAuD;AAAE,4BAAsB,EAAE,CAAC;AAA3B,KAAvD;AACA,QAAI,CAAC,KAAD,CAAJ;AACD,GAHqB,CAAtB;AAID;;;;;;;;;;;;;;AChBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEM,SAAU,oBAAV,CAA+B,KAA/B,EAAkD,IAAlD,EAAgE;AACpE,OAAK,CACF,mBADH,CACuB,sFADvB,EAEG,mBAFH,CAEuB,4FAFvB,EAGG,mBAHH,CAGuB,4FAHvB,EAIG,mBAJH,CAIuB,uFAJvB,EAKG,mBALH,CAKuB,gFALvB,EAMG,mBANH,CAMuB,wGANvB,EAOG,mBAPH,CAOuB,mFAPvB,EAQG,mBARH,CAQuB,4GARvB,EASG,mBATH,CASuB,oGATvB,EAUG,mBAVH,CAUuB,mFAVvB,EAWG,mBAXH,CAWuB,+FAXvB,EAYG,mBAZH,CAYuB,0FAZvB,EAaG,mBAbH,CAauB,uGAbvB;AAeA,MAAI,CAAC,KAAD,CAAJ;AACD,C;;;;;;;;;;;;AChCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEM,SAAU,cAAV,CAAyB,KAAzB,EAA4C,IAA5C,EAA0D;AAC9D,oGAAe,CAAC,gBAAhB,CAAiC,yGAAjC,EAAkD;AAAE,QAAI,EAAE;AAAR,GAAlD;AAEA,MAAI,CAAC,KAAD,CAAJ;AACD,C;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAA;AAAA;AACA;AAEM,SAAU,qBAAV,CAAgC,KAAhC,EAAmD,IAAnD,EAAiE;AACrE;;;AAIA,oGAAe,CAAC,gBAAhB,CAAiC,mHAAjC,EAAmD;AACjD;AACA;AACA,mCAA+B,EAAE;AAAE,UAAI,EAAE;AAAR,KAHgB;AAIjD,0BAAsB,EAAE;AAJyB,GAAnD;AAOA,MAAI,CAAC,KAAD,CAAJ;AACD,C;;;;;;;;;;;;AChBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEM,SAAU,oBAAV,CAA+B,KAA/B,EAAkD,IAAlD,EAAgE;AACpE;;;AAGA,MAAM,kBAAkB,GAAG;AACzB,aAAS,EAAE,CADc;AAEzB,uBAAmB,EAAE;AAAE,aAAO,EAAE,yFAAmB,CAAC,OAA/B;AAAwC,UAAI,EAAE,6FAAS,CAAC;AAAxD,KAFI;AAGzB,qBAAiB,EAAE;AAAE,aAAO,EAAE,yFAAmB,CAAC,IAA/B;AAAqC,UAAI,EAAE,6FAAS,CAAC;AAArD,KAHM;AAIzB,iBAAa,EAAE,sFAAS;AAJC,GAA3B;AAOA;;;;AAGA,oGAAe,CACZ,iBADH,CACqB,IAAI,oGAAJ,CAAqB,kBAArB,CADrB;AAGA,MAAM,YAAY,GAAG,kGAAe,CAAC,WAAhB,CAA8C,iGAAc,CAAC,KAA7D,CAArB;AAEA,MAAM,sBAAsB,GAAG;AAC7B,SAAK,EAAE,iFAAM,CAAC,IADe;AAE7B,gBAAY,EAAE,+FAAa,CAAC,IAFC;AAG7B,iBAAa,EAAG,MAAc,CAAC,aAHF;AAI7B,uBAAmB,EAAE,YAAY,CAAC,KAAb,CAAmB;AAAE,YAAM,EAAE;AAAV,KAAnB,CAJQ;AAK7B,gBAAY,EAAZ;AAL6B,GAA/B;AAQA,oGAAe,CACZ,mBADH,CACuB,6FADvB,EAC0C,sBAD1C,EAEG,mBAFH,CAEuB,yFAFvB,EAEwC,sBAFxC,EAGG,mBAHH,CAGuB,iGAHvB,EAG4C,sBAH5C,EAIG,mBAJH,CAIuB,4HAJvB,EAIgD,sBAJhD,EAKG,mBALH,CAKuB,wFALvB,EAK4C,sBAL5C;AAOA,MAAM,uBAAuB,GAAG;AAC9B,SAAK,EAAE,KAAK,CAAC;AADiB,GAAhC;AAIA,oGAAe,CACZ,gBADH,CACoB,kGADpB,EAC8C,uBAD9C,EAEG,gBAFH,CAEoB,gGAFpB,EAE6C,uBAF7C,EAGG,gBAHH,CAGoB,4FAHpB,EAG2C,uBAH3C;AAKA,MAAM,mBAAmB,GAAG;AAC1B,SAAK,EAAE,iFAAM,CAAC,IADY;AAE1B,gBAAY,EAAE,+FAAa,CAAC,aAFF;AAG1B,gBAAY,EAAZ;AAH0B,GAA5B;AAMA,oGAAe,CAAC,mBAAhB,CAAoC,gIAApC,EAA+D,mBAA/D;AAEA,MAAI,CAAC,KAAD,CAAJ;AAEA;;;;;AAIA,SAAQ,MAAc,CAAC,aAAvB;AACD,C;;;;;;;;;;;;AC9ED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;AAEA,SAAS,iBAAT,CAA2B,KAA3B,EAA4C;AAC1C,MAAM,YAAY,GAAG,kGAAe,CAAC,WAAhB,CAA8C,iGAAc,CAAC,KAA7D,CAArB;AAEA,cAAY,CAAC,WAAb,CAAyB;AAAE,WAAO,EAAE,wFAAmB,CAAC,IAA/B;AAAqC,QAAI,EAAE,6FAAS,CAAC,IAArD;AAA2D,WAAO,EAAE,KAAK,CAAC;AAA1E,GAAzB;AACD;;AAED,SAAS,eAAT,CAAyB,KAAzB,EAAwC;AACtC,MAAM,OAAO,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,CAAhB;AACA,SAAO,CAAC,SAAR,CAAkB,eAAlB,EAAmC;AAAA,WAAM,KAAN;AAAA,GAAnC;AAEA,gEAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,eAAW,EAAE,8EAAW,CAAC,OADA;AAEzB,UAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFC,GAA3B;AAID;;AAED,SAAS,oBAAT,CAA8B,KAA9B,EAAkD;AAChD,MAAM,OAAO,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,CAAhB;AACA,SAAO,CAAC,SAAR,CAAkB,eAAlB,EAAmC;AAAA,WAAM,KAAN;AAAA,GAAnC;AAEA,gEAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,eAAW,EAAE,8EAAW,CAAC,OADA;AAEzB,UAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFC,GAA3B;AAID;;AAED,SAAS,oBAAT,CAA8B,KAA9B,EAAmD;AACjD,MAAM,OAAO,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,CAAhB;AACA,SAAO,CAAC,SAAR,CAAkB,eAAlB,EAAmC;AAAA,WAAM,KAAN;AAAA,GAAnC;AAEA,gEAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,eAAW,EAAE,8EAAW,CAAC,OADA;AAEzB,UAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFC,GAA3B;AAID;;AAED,SAAS,iBAAT,CAA2B,KAA3B,EAA6C;AAC3C,MAAM,OAAO,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,CAAhB;AACA,SAAO,CAAC,SAAR,CAAkB,eAAlB,EAAmC;AAAA,WAAM,KAAN;AAAA,GAAnC;AAEA,gEAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,eAAW,EAAE,8EAAW,CAAC,OADA;AAEzB,UAAM,EAAE,oEAAO,CAAC,OAAR,CAAgB;AAFC,GAA3B;AAID;;AAEK,SAAU,qBAAV,CAAgC,KAAhC,EAAmD,IAAnD,EAAiE;AACrE,OAAK,CACF,oBADH,CACwB,iGADxB,EACwC,oBADxC,EAEG,oBAFH,CAEwB,2FAFxB,EAEqC,iBAFrC,EAGG,oBAHH,CAGwB,yFAHxB,EAGoC,iBAHpC,EAIG,oBAJH,CAIwB,gGAJxB,EAIuC,oBAJvC,EAKG,oBALH,CAKwB,0GALxB,EAK0C,oBAL1C,EAMG,oBANH,CAMwB,iHANxB,EAM8C,oBAN9C,EAOG,oBAPH,CAOwB,iIAPxB,EAOmD,oBAPnD,EAQG,oBARH,CAQwB,+GARxB,EAQ4C,oBAR5C,EASG,oBATH,CASwB,uGATxB,EAS2C,oBAT3C,EAUG,oBAVH,CAUwB,2HAVxB,EAU+C,oBAV/C,EAWG,oBAXH,CAWwB,mHAXxB,EAW8C,oBAX9C;;AAaA,MAAI,IAAJ,EAAuC;AACrC,SAAK,CACF,oBADH,CACwB,8DAAI,CAAC,KAD7B,EACoC,eADpC,EAEG,oBAFH,CAEwB,kFAFxB,EAEkC,eAFlC,EAGG,oBAHH,CAGwB,wGAHxB,EAG6C,eAH7C;AAID;;AAED,MAAI;AACL,C;;;;;;;;;;;;AC7FD;AAAA;AAAA;AAAA;;AAEA,SAAS,yBAAT,CAAmC,KAAnC,EAAsD,IAAtD,EAAoE;AAClE,qFAAU,CAAC,QAAX;AAEA,MAAI,CAAC,KAAD,CAAJ;AACD;;;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEM,SAAU,eAAV,CAA0B,KAA1B,EAA6C,IAA7C,EAA2D;AAC/D,OAAK,CACF,cADH,CACkB,oEAAO,CAAC,cAD1B,EAC0C,iGAD1C,EAEG,cAFH,CAEkB,oEAAO,CAAC,YAF1B,EAEwC,2FAFxC;AAIA,MAAI,CAAC,KAAD,CAAJ;AACD,C;;;;;;;;;;;;ACXD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAGM,SAAU,0BAAV,CAAqC,KAArC,EAAwD,OAAxD,EAAsE,IAAtE,EAA+E;AACnF,MAAM,iBAAiB,GAAsB,kGAAe,CAAC,WAAhB,CAA4B,4FAAkB,CAAC,MAA/C,CAA7C;AACA,mBAAiB,CAAC,SAAlB,CAA4B,UAAC,MAAD,EAAmB;AAC7C,gHAAoB,CAAC,cAArB,CAAoC;AAClC,mBAAa,EAAE,aAAe,KAAK;AADD,KAApC;AAIA,QAAI,CAAC,KAAD,EAAQ,OAAR,CAAJ;AAEA;;;;;AAIA,sGAAe,CAAC,eAAhB,CAAgC,4FAAkB,CAAC,MAAnD;AACD,GAZD;AAaD,C;;;;;;;;;;;;ACtBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEM,SAAU,gBAAV,CAA2B,KAA3B,EAA8C,IAA9C,EAA4D;AAChE,MAAM,uBAAuB,GAAG,IAAI,qHAAJ,EAAhC;AACA,MAAM,aAAa,GAAG,IAAI,8FAAJ,EAAtB;AAEA,oGAAe,CACZ,gBADH,CACoB,0FADpB,EACqC;AAAE,aAAS,EAAE,qEAAS;AAAtB,GADrC,EAEG,gBAFH,CAEoB,2FAFpB,EAGG,gBAHH,CAGoB,6FAHpB,EAG4C;AAAE,SAAK,EAAE,KAAK,CAAC;AAAf,GAH5C,EAIG,gBAJH,CAIoB,+GAJpB,EAIkD;AAAE,SAAK,EAAE,KAAK,CAAC;AAAf,GAJlD,EAKG,gBALH,CAKoB,qHALpB,EAMG,gBANH,CAMoB,iGANpB,EAOG,gBAPH,CAOoB,oHAPpB,EAQG,iBARH,CAQqB,uBARrB,EASG,iBATH,CASqB,aATrB;AAWA,MAAM,YAAY,GAAG,IAAI,mGAAJ,CAAsB,CAAtB,CAArB;;AACA,MAAM,iBAAiB,GAAG,SAApB,iBAAoB,GAAK;AAC7B,gBAAY,CAAC,SAAb;AAEA,QAAI,YAAY,CAAC,QAAb,KAA0B,CAA9B,EACE;AAEF,sGAAe,CAAC,eAAhB,CAAgC,4FAAkB,CAAC,QAAnD;AACA,sGAAe,CAAC,eAAhB,CAAgC,4FAAkB,CAAC,MAAnD;AAEA,QAAI,CAAC,KAAD,CAAJ;AACD,GAVD;;AAYA,MAAM,mBAAmB,GAAG,kGAAe,CAAC,WAAhB,CAAiD,4FAAkB,CAAC,QAApE,CAA5B;AACA,qBAAmB,CAAC,iBAApB,CAAsC,UAAC,MAAD,EAAgB;AACpD,sGAAe,CAAC,SAAhB,CAA0B,MAA1B;AAEA,qBAAiB;AAClB,GAJD;AAMA,MAAM,iBAAiB,GAAG,kGAAe,CAAC,WAAhB,CAA+C,4FAAkB,CAAC,MAAlE,CAA1B;AACA,mBAAiB,CAAC,SAAlB,CAA4B,UAAC,MAAD,EAAmB;AAC7C,sGAAe,CAAC,gBAAhB,CAAiC,2JAAjC,EAAkE;AAChE,cAAQ,EAAE,MAAM,CAAC,sBAD+C;AAEhE,kBAAY,EAAE,8BAFkD;AAGhE,aAAO,EAAE,cAHuD;AAIhE,aAAO,EAAE;AAJuD,KAAlE;AAOA,qBAAiB;AAClB,GATD;AAUD,C;;;;;;;;;;;;ACpED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAEM,SAAU,aAAV,CAAwB,KAAxB,EAA2C,IAA3C,EAAyD;AAC7D,MAAM,OAAO,GAAG,6DAAe,CAAmB;AAChD,cAAU,EAAE,6DAAM,CAAC,aAD6B;AAEhD,mBAAe,EAAE,6GAF+B;AAGhD,iBAAa,EAAE,iGAAgB;AAHiB,GAAnB,CAA/B;AAMA,MAAM,gBAAgB,GAAG,6DAAM,CAAC,gBAAP,CAAwB;AAC/C,aAAS,EAAE,6DAAM,CAAC,WAD6B;AAE/C,oBAAgB,EAAG,MAAc,CAAC,aAAf,IAAgC,EAFJ;AAG/C,qBAAiB,EAAE,wFAAc,CAAC;AAHa,GAAxB,CAAzB;AAMA,MAAM,qBAAqB,GAAG,2HAA2B,CAAC;AACxD,mBAAe,EAAE,IAAI,kFAAJ,CAAa,4BAAb,CADuC;AAExD,uBAAmB,EAAE,IAAI,kFAAJ,CAAa,sBAAb,CAFmC,CAEE;;AAFF,GAAD,CAAzD;;AAKA,WAAS,aAAT,CAAuB,KAAvB,EAAmC;AACjC,SAAK,CAAC,aAAN,CAAoB,KAApB;AACA,QAAI;AAEJ;;;;;AAIA,WAAQ,MAAc,CAAC,aAAvB;AACD,GA3B4D,CA6B7D;;;AACA,MAAI,IAAJ,EAAuC;AACrC,mLAAmC,IAAnC,CAAwC,gBAA4B;AAAA,UAAzB,mBAAyB,QAAzB,mBAAyB;AAClE,UAAM,QAAQ,GAAG,yDAAW,CAC1B,OAD0B,EAE1B,mBAAmB,CACjB,6DAAe,CAAC,gBAAD,EAAmB,qBAAnB,CADE,CAFO,CAA5B;AAOA,mBAAa,CAAC,QAAD,CAAb;AACD,KATD;AAWA;AACD,GA3C4D,CA6C7D;;;AACA,MAAM,SAAS,GAAG,yDAAW,CAAC,OAAD,EAAU,6DAAe,CAAC,gBAAD,EAAmB,qBAAnB,CAAzB,CAA7B;AACA,eAAa,CAAC,SAAD,CAAb;AACD,C;;;;;;;;;;;;AC3DD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;AAYA,SAAS,0BAAT,CAAoC,KAApC,EAAuD,IAAvD,EAAqE;AACnE,MAAM,0BAA0B,GAAG,SAA7B,0BAA6B,CAAC,QAAD,EAAkB;AACnD,WAAO;AACL,uBAAiB,EAAE,kDAAS,QAAT,EAAmB,MAAnB;AADd,KAAP;AAGD,GAJD;;AAMA,gEAAI,CAAC,IAAL,CAAU,oBAAV,CAA+B,0BAA/B;AAEA,MAAI,CAAC,KAAD,CAAJ;AACD;;;;;;;;;;;;;;ACzBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACbA;AAAA;AAAA;;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,sE;;;;;;;;;;;ACAA,6E;;;;;;;;;;;ACAA,sD;;;;;;;;;;;ACAA,iE;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,uD;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,oD;;;;;;;;;;;ACAA,oD;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,mD;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,6D;;;;;;;;;;;ACAA,qE;;;;;;;;;;;ACAA,uD;;;;;;;;;;;ACAA,4D;;;;;;;;;;;ACAA,yE;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,oE;;;;;;;;;;;ACAA,mD;;;;;;;;;;;ACAA,wD","file":"scripts/bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"moment\"), require(\"ReactBootstrap\"), require(\"ReactTransitionGroup\"), require(\"Handlebars\"), require(\"reactDropzone\"), require(\"FontAwesome\"), require(\"Backbone\"), require(\"Marionette\"), require(\"Bloodhound\"), require(\"DOMPurify\"), require(\"Polyglot\"), require(\"React\"), require(\"ReactDOM\"), require(\"ReactRedux\"), require(\"_\"), require(\"ReactCustomScrollbars\"), require(\"ImmersiveReader\"), require(\"marked\"), require(\"Autosuggest\"), require(\"ReactIntersectionObserver\"), require(\"SortableHOC\"), require(\"Redux\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"moment\", \"ReactBootstrap\", \"ReactTransitionGroup\", \"Handlebars\", \"reactDropzone\", \"FontAwesome\", \"Backbone\", \"Marionette\", \"Bloodhound\", \"DOMPurify\", \"Polyglot\", \"React\", \"ReactDOM\", \"ReactRedux\", \"_\", \"ReactCustomScrollbars\", \"ImmersiveReader\", \"marked\", \"Autosuggest\", \"ReactIntersectionObserver\", \"SortableHOC\", \"Redux\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@clickview/lite\"] = factory(require(\"moment\"), require(\"ReactBootstrap\"), require(\"ReactTransitionGroup\"), require(\"Handlebars\"), require(\"reactDropzone\"), require(\"FontAwesome\"), require(\"Backbone\"), require(\"Marionette\"), require(\"Bloodhound\"), require(\"DOMPurify\"), require(\"Polyglot\"), require(\"React\"), require(\"ReactDOM\"), require(\"ReactRedux\"), require(\"_\"), require(\"ReactCustomScrollbars\"), require(\"ImmersiveReader\"), require(\"marked\"), require(\"Autosuggest\"), require(\"ReactIntersectionObserver\"), require(\"SortableHOC\"), require(\"Redux\"));\n\telse\n\t\troot[\"@clickview/lite\"] = factory(root[\"moment\"], root[\"ReactBootstrap\"], root[\"ReactTransitionGroup\"], root[\"Handlebars\"], root[\"reactDropzone\"], root[\"FontAwesome\"], root[\"Backbone\"], root[\"Marionette\"], root[\"Bloodhound\"], root[\"DOMPurify\"], root[\"Polyglot\"], root[\"React\"], root[\"ReactDOM\"], root[\"ReactRedux\"], root[\"_\"], root[\"ReactCustomScrollbars\"], root[\"ImmersiveReader\"], root[\"marked\"], root[\"Autosuggest\"], root[\"ReactIntersectionObserver\"], root[\"SortableHOC\"], root[\"Redux\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_moment__, __WEBPACK_EXTERNAL_MODULE_react_bootstrap__, __WEBPACK_EXTERNAL_MODULE_react_transition_group__, __WEBPACK_EXTERNAL_MODULE_handlebars__, __WEBPACK_EXTERNAL_MODULE_react_dropzone__, __WEBPACK_EXTERNAL_MODULE__fortawesome_fontawesome__, __WEBPACK_EXTERNAL_MODULE_backbone__, __WEBPACK_EXTERNAL_MODULE_backbone_marionette__, __WEBPACK_EXTERNAL_MODULE_bloodhound__, __WEBPACK_EXTERNAL_MODULE_dompurify__, __WEBPACK_EXTERNAL_MODULE_node_polyglot__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dom__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__, __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__, __WEBPACK_EXTERNAL_MODULE_marked__, __WEBPACK_EXTERNAL_MODULE_react_autosuggest__, __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__, __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__, __WEBPACK_EXTERNAL_MODULE_redux__) {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"bundle\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"bundle\": 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"scripts/\" + chunkId + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"0\":1,\"1\":1,\"3\":1,\"5\":1,\"6\":1,\"7\":1,\"11\":1,\"12\":1,\"13\":1,\"14\":1,\"15\":1,\"16\":1,\"17\":1,\"18\":1,\"20\":1,\"21\":1,\"22\":1,\"23\":1,\"24\":1,\"25\":1,\"26\":1,\"27\":1,\"28\":1,\"29\":1,\"30\":1,\"31\":1,\"32\":1,\"33\":1,\"34\":1,\"35\":1,\"36\":1,\"37\":1,\"39\":1,\"40\":1,\"41\":1,\"42\":1,\"43\":1,\"50\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"58\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + chunkId + \".chunk.css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp_clickview_lite\"] = window[\"webpackJsonp_clickview_lite\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/app.ts\");\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nvar AbortController = /** @class */ (function () {\r\n function AbortController() {\r\n this.isAborted = false;\r\n this.onabort = null;\r\n }\r\n AbortController.prototype.abort = function () {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AbortController.prototype, \"signal\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbortController.prototype, \"aborted\", {\r\n get: function () {\r\n return this.isAborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbortController;\r\n}());\r\nexport { AbortController };\r\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { AbortError } from \"./Errors\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { NodeHttpClient } from \"./NodeHttpClient\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nvar DefaultHttpClient = /** @class */ (function (_super) {\r\n __extends(DefaultHttpClient, _super);\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n function DefaultHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof XMLHttpRequest !== \"undefined\") {\r\n _this.httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n _this.httpClient = new NodeHttpClient(logger);\r\n }\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n DefaultHttpClient.prototype.send = function (request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this.httpClient.send(request);\r\n };\r\n DefaultHttpClient.prototype.getCookieString = function (url) {\r\n return this.httpClient.getCookieString(url);\r\n };\r\n return DefaultHttpClient;\r\n}(HttpClient));\r\nexport { DefaultHttpClient };\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nvar DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nvar DefaultReconnectPolicy = /** @class */ (function () {\r\n function DefaultReconnectPolicy(retryDelays) {\r\n this.retryDelays = retryDelays !== undefined ? retryDelays.concat([null]) : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n DefaultReconnectPolicy.prototype.nextRetryDelayInMilliseconds = function (retryContext) {\r\n return this.retryDelays[retryContext.previousRetryCount];\r\n };\r\n return DefaultReconnectPolicy;\r\n}());\r\nexport { DefaultReconnectPolicy };\r\n//# sourceMappingURL=DefaultReconnectPolicy.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\n/** Error thrown when an HTTP request fails. */\r\nvar HttpError = /** @class */ (function (_super) {\r\n __extends(HttpError, _super);\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n function HttpError(errorMessage, statusCode) {\r\n var _newTarget = this.constructor;\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n _this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return HttpError;\r\n}(Error));\r\nexport { HttpError };\r\n/** Error thrown when a timeout elapses. */\r\nvar TimeoutError = /** @class */ (function (_super) {\r\n __extends(TimeoutError, _super);\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function TimeoutError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"A timeout occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return TimeoutError;\r\n}(Error));\r\nexport { TimeoutError };\r\n/** Error thrown when an action is aborted. */\r\nvar AbortError = /** @class */ (function (_super) {\r\n __extends(AbortError, _super);\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function AbortError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"An abort occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return AbortError;\r\n}(Error));\r\nexport { AbortError };\r\n//# sourceMappingURL=Errors.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nvar HandshakeProtocol = /** @class */ (function () {\r\n function HandshakeProtocol() {\r\n }\r\n // Handshake request is always JSON\r\n HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n };\r\n HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {\r\n var responseMessage;\r\n var messageData;\r\n var remainingData;\r\n if (isArrayBuffer(data) || (typeof Buffer !== \"undefined\" && data instanceof Buffer)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n var binaryData = new Uint8Array(data);\r\n var separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n var textData = data;\r\n var separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n var messages = TextMessageFormat.parse(messageData);\r\n var response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n };\r\n return HandshakeProtocol;\r\n}());\r\nexport { HandshakeProtocol };\r\n//# sourceMappingURL=HandshakeProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\n/** Represents an HTTP response. */\r\nvar HttpResponse = /** @class */ (function () {\r\n function HttpResponse(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n return HttpResponse;\r\n}());\r\nexport { HttpResponse };\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n }\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"GET\", url: url }));\r\n };\r\n HttpClient.prototype.post = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"POST\", url: url }));\r\n };\r\n HttpClient.prototype.delete = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"DELETE\", url: url }));\r\n };\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n HttpClient.prototype.getCookieString = function (url) {\r\n return \"\";\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n//# sourceMappingURL=HttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nvar MAX_REDIRECTS = 100;\r\nvar WebSocketModule = null;\r\nvar EventSourceModule = null;\r\nif (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n WebSocketModule = requireFunc(\"ws\");\r\n EventSourceModule = requireFunc(\"eventsource\");\r\n}\r\n/** @private */\r\nvar HttpConnection = /** @class */ (function () {\r\n function HttpConnection(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.features = {};\r\n this.negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this.logger = createLogger(options.logger);\r\n this.baseUrl = this.resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent || false;\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (WebSocketModule) {\r\n options.WebSocket = WebSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof EventSourceModule !== \"undefined\") {\r\n options.EventSource = EventSourceModule;\r\n }\r\n }\r\n this.httpClient = options.httpClient || new DefaultHttpClient(this.logger);\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n this.connectionStarted = false;\r\n this.options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n HttpConnection.prototype.start = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var message, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Debug, \"Starting connection with transfer format '\" + TransferFormat[transferFormat] + \"'.\");\r\n if (this.connectionState !== \"Disconnected\" /* Disconnected */) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"))];\r\n }\r\n this.connectionState = \"Connecting \" /* Connecting */;\r\n this.startInternalPromise = this.startInternal(transferFormat);\r\n return [4 /*yield*/, this.startInternalPromise];\r\n case 1:\r\n _a.sent();\r\n if (!(this.connectionState === \"Disconnecting\" /* Disconnecting */)) return [3 /*break*/, 3];\r\n message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this.logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n return [4 /*yield*/, this.stopPromise];\r\n case 2:\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n _a.sent();\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n case 3:\r\n if (this.connectionState !== \"Connected\" /* Connected */) {\r\n message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this.logger.log(LogLevel.Error, message);\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n }\r\n _a.label = 4;\r\n case 4:\r\n this.connectionStarted = true;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.send = function (data) {\r\n if (this.connectionState !== \"Connected\" /* Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this.sendQueue) {\r\n this.sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this.sendQueue.send(data);\r\n };\r\n HttpConnection.prototype.stop = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.connectionState === \"Disconnected\" /* Disconnected */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnected state.\");\r\n return [2 /*return*/, Promise.resolve()];\r\n }\r\n if (this.connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnecting state.\");\r\n return [2 /*return*/, this.stopPromise];\r\n }\r\n this.connectionState = \"Disconnecting\" /* Disconnecting */;\r\n this.stopPromise = new Promise(function (resolve) {\r\n // Don't complete stop() until stopConnection() completes.\r\n _this.stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n return [4 /*yield*/, this.stopInternal(error)];\r\n case 1:\r\n // stopInternal should never throw so just observe it.\r\n _a.sent();\r\n return [4 /*yield*/, this.stopPromise];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.stopInternal = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this.stopError = error;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startInternalPromise];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!this.transport) return [3 /*break*/, 9];\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.transport.stop()];\r\n case 6:\r\n _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"HttpConnection.transport.stop() threw error '\" + e_2 + \"'.\");\r\n this.stopConnection();\r\n return [3 /*break*/, 8];\r\n case 8:\r\n this.transport = undefined;\r\n return [3 /*break*/, 10];\r\n case 9:\r\n this.logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n this.stopConnection();\r\n _a.label = 10;\r\n case 10: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.startInternal = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, negotiateResponse, redirects, _loop_1, this_1, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = this.baseUrl;\r\n this.accessTokenFactory = this.options.accessTokenFactory;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 12, , 13]);\r\n if (!this.options.skipNegotiation) return [3 /*break*/, 5];\r\n if (!(this.options.transport === HttpTransportType.WebSockets)) return [3 /*break*/, 3];\r\n // No need to add a connection ID in this case\r\n this.transport = this.constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n return [4 /*yield*/, this.startTransport(url, transferFormat)];\r\n case 2:\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3: throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n case 4: return [3 /*break*/, 11];\r\n case 5:\r\n negotiateResponse = null;\r\n redirects = 0;\r\n _loop_1 = function () {\r\n var accessToken_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this_1.getNegotiationResponse(url)];\r\n case 1:\r\n negotiateResponse = _a.sent();\r\n // the user tries to stop the connection when it is being started\r\n if (this_1.connectionState === \"Disconnecting\" /* Disconnecting */ || this_1.connectionState === \"Disconnected\" /* Disconnected */) {\r\n throw new Error(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n accessToken_1 = negotiateResponse.accessToken;\r\n this_1.accessTokenFactory = function () { return accessToken_1; };\r\n }\r\n redirects++;\r\n return [2 /*return*/];\r\n }\r\n });\r\n };\r\n this_1 = this;\r\n _a.label = 6;\r\n case 6: return [5 /*yield**/, _loop_1()];\r\n case 7:\r\n _a.sent();\r\n _a.label = 8;\r\n case 8:\r\n if (negotiateResponse.url && redirects < MAX_REDIRECTS) return [3 /*break*/, 6];\r\n _a.label = 9;\r\n case 9:\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n return [4 /*yield*/, this.createTransport(url, this.options.transport, negotiateResponse, transferFormat)];\r\n case 10:\r\n _a.sent();\r\n _a.label = 11;\r\n case 11:\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this.connectionState === \"Connecting \" /* Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this.logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this.connectionState = \"Connected\" /* Connected */;\r\n }\r\n return [3 /*break*/, 13];\r\n case 12:\r\n e_3 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the connection: \" + e_3);\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n this.transport = undefined;\r\n return [2 /*return*/, Promise.reject(e_3)];\r\n case 13: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.getNegotiationResponse = function (url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, negotiateUrl, response, negotiateResponse, e_4;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(LogLevel.Debug, \"Sending negotiation request: \" + negotiateUrl + \".\");\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: headers,\r\n })];\r\n case 4:\r\n response = _b.sent();\r\n if (response.statusCode !== 200) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Unexpected status code returned from negotiate \" + response.statusCode))];\r\n }\r\n negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return [2 /*return*/, negotiateResponse];\r\n case 5:\r\n e_4 = _b.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to complete negotiation with the server: \" + e_4);\r\n return [2 /*return*/, Promise.reject(e_4)];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.createConnectUrl = function (url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + (\"id=\" + connectionToken);\r\n };\r\n HttpConnection.prototype.createTransport = function (url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectUrl, transportExceptions, transports, negotiate, _i, transports_1, endpoint, transportOrError, ex_1, ex_2, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (!this.isITransport(requestedTransport)) return [3 /*break*/, 2];\r\n this.logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];\r\n case 1:\r\n _a.sent();\r\n this.connectionId = negotiateResponse.connectionId;\r\n return [2 /*return*/];\r\n case 2:\r\n transportExceptions = [];\r\n transports = negotiateResponse.availableTransports || [];\r\n negotiate = negotiateResponse;\r\n _i = 0, transports_1 = transports;\r\n _a.label = 3;\r\n case 3:\r\n if (!(_i < transports_1.length)) return [3 /*break*/, 13];\r\n endpoint = transports_1[_i];\r\n transportOrError = this.resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (!(transportOrError instanceof Error)) return [3 /*break*/, 4];\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(endpoint.transport + \" failed: \" + transportOrError);\r\n return [3 /*break*/, 12];\r\n case 4:\r\n if (!this.isITransport(transportOrError)) return [3 /*break*/, 12];\r\n this.transport = transportOrError;\r\n if (!!negotiate) return [3 /*break*/, 9];\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.getNegotiationResponse(url)];\r\n case 6:\r\n negotiate = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n ex_1 = _a.sent();\r\n return [2 /*return*/, Promise.reject(ex_1)];\r\n case 8:\r\n connectUrl = this.createConnectUrl(url, negotiate.connectionToken);\r\n _a.label = 9;\r\n case 9:\r\n _a.trys.push([9, 11, , 12]);\r\n return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];\r\n case 10:\r\n _a.sent();\r\n this.connectionId = negotiate.connectionId;\r\n return [2 /*return*/];\r\n case 11:\r\n ex_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the transport '\" + endpoint.transport + \"': \" + ex_2);\r\n negotiate = undefined;\r\n transportExceptions.push(endpoint.transport + \" failed: \" + ex_2);\r\n if (this.connectionState !== \"Connecting \" /* Connecting */) {\r\n message = \"Failed to select transport before stop() was called.\";\r\n this.logger.log(LogLevel.Debug, message);\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n }\r\n return [3 /*break*/, 12];\r\n case 12:\r\n _i++;\r\n return [3 /*break*/, 3];\r\n case 13:\r\n if (transportExceptions.length > 0) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Unable to connect to the server with any of the available transports. \" + transportExceptions.join(\" \")))];\r\n }\r\n return [2 /*return*/, Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"))];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.constructTransport = function (transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this.options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket);\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this.options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false);\r\n default:\r\n throw new Error(\"Unknown transport: \" + transport + \".\");\r\n }\r\n };\r\n HttpConnection.prototype.startTransport = function (url, transferFormat) {\r\n var _this = this;\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = function (e) { return _this.stopConnection(e); };\r\n return this.transport.connect(url, transferFormat);\r\n };\r\n HttpConnection.prototype.resolveTransportOrError = function (endpoint, requestedTransport, requestedTransferFormat) {\r\n var transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n return new Error(\"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n var transferFormats = endpoint.transferFormats.map(function (s) { return TransferFormat[s]; });\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this.options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this.options.EventSource)) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it is not supported in your environment.'\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' is not supported in your environment.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Selecting transport '\" + HttpTransportType[transport] + \"'.\");\r\n try {\r\n return this.constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it does not support the requested transfer format '\" + TransferFormat[requestedTransferFormat] + \"'.\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' does not support \" + TransferFormat[requestedTransferFormat] + \".\");\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it was disabled by the client.\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' is disabled by the client.\");\r\n }\r\n }\r\n };\r\n HttpConnection.prototype.isITransport = function (transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n };\r\n HttpConnection.prototype.stopConnection = function (error) {\r\n var _this = this;\r\n this.logger.log(LogLevel.Debug, \"HttpConnection.stopConnection(\" + error + \") called while in state \" + this.connectionState + \".\");\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\r\n this.stopError = undefined;\r\n if (this.connectionState === \"Disconnected\" /* Disconnected */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stopConnection(\" + error + \") was ignored because the connection is already in the disconnected state.\");\r\n return;\r\n }\r\n if (this.connectionState === \"Connecting \" /* Connecting */) {\r\n this.logger.log(LogLevel.Warning, \"Call to HttpConnection.stopConnection(\" + error + \") was ignored because the connection hasn't yet left the in the connecting state.\");\r\n return;\r\n }\r\n if (this.connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this.stopPromiseResolver();\r\n }\r\n if (error) {\r\n this.logger.log(LogLevel.Error, \"Connection disconnected with error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this.sendQueue) {\r\n this.sendQueue.stop().catch(function (e) {\r\n _this.logger.log(LogLevel.Error, \"TransportSendQueue.stop() threw error '\" + e + \"'.\");\r\n });\r\n this.sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n if (this.connectionStarted) {\r\n this.connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"HttpConnection.onclose(\" + error + \") threw error '\" + e + \"'.\");\r\n }\r\n }\r\n };\r\n HttpConnection.prototype.resolveUrl = function (url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser || !window.document) {\r\n throw new Error(\"Cannot resolve '\" + url + \"'.\");\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n var aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this.logger.log(LogLevel.Information, \"Normalizing '\" + url + \"' to '\" + aTag.href + \"'.\");\r\n return aTag.href;\r\n };\r\n HttpConnection.prototype.resolveNegotiateUrl = function (url) {\r\n var index = url.indexOf(\"?\");\r\n var negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this.negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n };\r\n return HttpConnection;\r\n}());\r\nexport { HttpConnection };\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nvar TransportSendQueue = /** @class */ (function () {\r\n function TransportSendQueue(transport) {\r\n this.transport = transport;\r\n this.buffer = [];\r\n this.executing = true;\r\n this.sendBufferedData = new PromiseSource();\r\n this.transportResult = new PromiseSource();\r\n this.sendLoopPromise = this.sendLoop();\r\n }\r\n TransportSendQueue.prototype.send = function (data) {\r\n this.bufferData(data);\r\n if (!this.transportResult) {\r\n this.transportResult = new PromiseSource();\r\n }\r\n return this.transportResult.promise;\r\n };\r\n TransportSendQueue.prototype.stop = function () {\r\n this.executing = false;\r\n this.sendBufferedData.resolve();\r\n return this.sendLoopPromise;\r\n };\r\n TransportSendQueue.prototype.bufferData = function (data) {\r\n if (this.buffer.length && typeof (this.buffer[0]) !== typeof (data)) {\r\n throw new Error(\"Expected data to be of type \" + typeof (this.buffer) + \" but was of type \" + typeof (data));\r\n }\r\n this.buffer.push(data);\r\n this.sendBufferedData.resolve();\r\n };\r\n TransportSendQueue.prototype.sendLoop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var transportResult, data, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!true) return [3 /*break*/, 6];\r\n return [4 /*yield*/, this.sendBufferedData.promise];\r\n case 1:\r\n _a.sent();\r\n if (!this.executing) {\r\n if (this.transportResult) {\r\n this.transportResult.reject(\"Connection stopped.\");\r\n }\r\n return [3 /*break*/, 6];\r\n }\r\n this.sendBufferedData = new PromiseSource();\r\n transportResult = this.transportResult;\r\n this.transportResult = undefined;\r\n data = typeof (this.buffer[0]) === \"string\" ?\r\n this.buffer.join(\"\") :\r\n TransportSendQueue.concatBuffers(this.buffer);\r\n this.buffer.length = 0;\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.transport.send(data)];\r\n case 3:\r\n _a.sent();\r\n transportResult.resolve();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n transportResult.reject(error_1);\r\n return [3 /*break*/, 5];\r\n case 5: return [3 /*break*/, 0];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n TransportSendQueue.concatBuffers = function (arrayBuffers) {\r\n var totalLength = arrayBuffers.map(function (b) { return b.byteLength; }).reduce(function (a, b) { return a + b; });\r\n var result = new Uint8Array(totalLength);\r\n var offset = 0;\r\n for (var _i = 0, arrayBuffers_1 = arrayBuffers; _i < arrayBuffers_1.length; _i++) {\r\n var item = arrayBuffers_1[_i];\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result;\r\n };\r\n return TransportSendQueue;\r\n}());\r\nexport { TransportSendQueue };\r\nvar PromiseSource = /** @class */ (function () {\r\n function PromiseSource() {\r\n var _this = this;\r\n this.promise = new Promise(function (resolve, reject) {\r\n var _a;\r\n return _a = [resolve, reject], _this.resolver = _a[0], _this.rejecter = _a[1], _a;\r\n });\r\n }\r\n PromiseSource.prototype.resolve = function () {\r\n this.resolver();\r\n };\r\n PromiseSource.prototype.reject = function (reason) {\r\n this.rejecter(reason);\r\n };\r\n return PromiseSource;\r\n}());\r\n//# sourceMappingURL=HttpConnection.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg } from \"./Utils\";\r\nvar DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nvar DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nvar HubConnection = /** @class */ (function () {\r\n function HubConnection(connection, logger, protocol, reconnectPolicy) {\r\n var _this = this;\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\r\n this.reconnectPolicy = reconnectPolicy;\r\n this.handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = function (data) { return _this.processIncomingData(data); };\r\n this.connection.onclose = function (error) { return _this.connectionClosed(error); };\r\n this.callbacks = {};\r\n this.methods = {};\r\n this.closedCallbacks = [];\r\n this.reconnectingCallbacks = [];\r\n this.reconnectedCallbacks = [];\r\n this.invocationId = 0;\r\n this.receivedHandshakeResponse = false;\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n this.cachedPingMessage = this.protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n HubConnection.create = function (connection, logger, protocol, reconnectPolicy) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n };\r\n Object.defineProperty(HubConnection.prototype, \"state\", {\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get: function () {\r\n return this.connectionState;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HubConnection.prototype, \"connectionId\", {\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get: function () {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HubConnection.prototype, \"baseUrl\", {\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get: function () {\r\n return this.connection.baseUrl || \"\";\r\n },\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set: function (url) {\r\n if (this.connectionState !== HubConnectionState.Disconnected && this.connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise<void>} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n HubConnection.prototype.start = function () {\r\n this.startPromise = this.startWithStateTransitions();\r\n return this.startPromise;\r\n };\r\n HubConnection.prototype.startWithStateTransitions = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.connectionState !== HubConnectionState.Disconnected) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"))];\r\n }\r\n this.connectionState = HubConnectionState.Connecting;\r\n this.logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startInternal()];\r\n case 2:\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\r\n this.connectionStarted = true;\r\n this.logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.logger.log(LogLevel.Debug, \"HubConnection failed to start successfully because of error '\" + e_1 + \"'.\");\r\n return [2 /*return*/, Promise.reject(e_1)];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.startInternal = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var handshakePromise, handshakeRequest, e_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.stopDuringStartError = undefined;\r\n this.receivedHandshakeResponse = false;\r\n handshakePromise = new Promise(function (resolve, reject) {\r\n _this.handshakeResolver = resolve;\r\n _this.handshakeRejecter = reject;\r\n });\r\n return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 7]);\r\n handshakeRequest = {\r\n protocol: this.protocol.name,\r\n version: this.protocol.version,\r\n };\r\n this.logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n return [4 /*yield*/, this.sendMessage(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest))];\r\n case 3:\r\n _a.sent();\r\n this.logger.log(LogLevel.Information, \"Using HubProtocol '\" + this.protocol.name + \"'.\");\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this.cleanupTimeout();\r\n this.resetTimeoutPeriod();\r\n this.resetKeepAliveInterval();\r\n return [4 /*yield*/, handshakePromise];\r\n case 4:\r\n _a.sent();\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this.stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n throw this.stopDuringStartError;\r\n }\r\n return [3 /*break*/, 7];\r\n case 5:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Debug, \"Hub handshake failed with error '\" + e_2 + \"' during start(). Stopping HubConnection.\");\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n return [4 /*yield*/, this.connection.stop(e_2)];\r\n case 6:\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n _a.sent();\r\n throw e_2;\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise<void>} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n HubConnection.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var startPromise, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n startPromise = this.startPromise;\r\n this.stopPromise = this.stopInternal();\r\n return [4 /*yield*/, this.stopPromise];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n // Awaiting undefined continues immediately\r\n return [4 /*yield*/, startPromise];\r\n case 3:\r\n // Awaiting undefined continues immediately\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_3 = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.stopInternal = function (error) {\r\n if (this.connectionState === HubConnectionState.Disconnected) {\r\n this.logger.log(LogLevel.Debug, \"Call to HubConnection.stop(\" + error + \") ignored because it is already in the disconnected state.\");\r\n return Promise.resolve();\r\n }\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnecting state.\");\r\n return this.stopPromise;\r\n }\r\n this.connectionState = HubConnectionState.Disconnecting;\r\n this.logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this.reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this.logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this.reconnectDelayHandle);\r\n this.reconnectDelayHandle = undefined;\r\n this.completeClose();\r\n return Promise.resolve();\r\n }\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n this.stopDuringStartError = error || new Error(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n };\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult<T>} An object that yields results from the server as they are received.\r\n */\r\n HubConnection.prototype.stream = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var invocationDescriptor = this.createStreamInvocation(methodName, args, streamIds);\r\n var promiseQueue;\r\n var subject = new Subject();\r\n subject.cancelCallback = function () {\r\n var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(function () {\r\n return _this.sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this.sendWithProtocol(invocationDescriptor)\r\n .catch(function (e) {\r\n subject.error(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n this.launchStreams(streams, promiseQueue);\r\n return subject;\r\n };\r\n HubConnection.prototype.sendMessage = function (message) {\r\n this.resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n };\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n HubConnection.prototype.sendWithProtocol = function (message) {\r\n return this.sendMessage(this.protocol.writeMessage(message));\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise<void>} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n HubConnection.prototype.send = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var sendPromise = this.sendWithProtocol(this.createInvocation(methodName, args, true, streamIds));\r\n this.launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise<T>} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n HubConnection.prototype.invoke = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var invocationDescriptor = this.createInvocation(methodName, args, false, streamIds);\r\n var p = new Promise(function (resolve, reject) {\r\n // invocationId will always have a value for a non-blocking invocation\r\n _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(\"Unexpected message type: \" + invocationEvent.type));\r\n }\r\n }\r\n };\r\n var promiseQueue = _this.sendWithProtocol(invocationDescriptor)\r\n .catch(function (e) {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n _this.launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n };\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n HubConnection.prototype.on = function (methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this.methods[methodName]) {\r\n this.methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this.methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this.methods[methodName].push(newMethod);\r\n };\r\n HubConnection.prototype.off = function (methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n var handlers = this.methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n var removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this.methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this.methods[methodName];\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n HubConnection.prototype.onclose = function (callback) {\r\n if (callback) {\r\n this.closedCallbacks.push(callback);\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n HubConnection.prototype.onreconnecting = function (callback) {\r\n if (callback) {\r\n this.reconnectingCallbacks.push(callback);\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n HubConnection.prototype.onreconnected = function (callback) {\r\n if (callback) {\r\n this.reconnectedCallbacks.push(callback);\r\n }\r\n };\r\n HubConnection.prototype.processIncomingData = function (data) {\r\n this.cleanupTimeout();\r\n if (!this.receivedHandshakeResponse) {\r\n data = this.processHandshakeResponse(data);\r\n this.receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n var messages = this.protocol.parseMessages(data, this.logger);\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this.invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n var callback = this.callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this.callbacks[message.invocationId];\r\n }\r\n callback(message);\r\n }\r\n break;\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close:\r\n this.logger.log(LogLevel.Information, \"Close message received from server.\");\r\n var error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this.stopPromise = this.stopInternal(error);\r\n }\r\n break;\r\n default:\r\n this.logger.log(LogLevel.Warning, \"Invalid message type: \" + message.type + \".\");\r\n break;\r\n }\r\n }\r\n }\r\n this.resetTimeoutPeriod();\r\n };\r\n HubConnection.prototype.processHandshakeResponse = function (data) {\r\n var _a;\r\n var responseMessage;\r\n var remainingData;\r\n try {\r\n _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];\r\n }\r\n catch (e) {\r\n var message = \"Error parsing handshake response: \" + e;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n var message = \"Server returned handshake error: \" + responseMessage.error;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this.handshakeResolver();\r\n return remainingData;\r\n };\r\n HubConnection.prototype.resetKeepAliveInterval = function () {\r\n var _this = this;\r\n this.cleanupPingTimer();\r\n this.pingServerHandle = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(this.connectionState === HubConnectionState.Connected)) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.sendMessage(this.cachedPingMessage)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = _b.sent();\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this.cleanupPingTimer();\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }, this.keepAliveIntervalInMilliseconds);\r\n };\r\n HubConnection.prototype.resetTimeoutPeriod = function () {\r\n var _this = this;\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);\r\n }\r\n };\r\n HubConnection.prototype.serverTimeout = function () {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n };\r\n HubConnection.prototype.invokeClientMethod = function (invocationMessage) {\r\n var _this = this;\r\n var methods = this.methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n try {\r\n methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"A callback for the method \" + invocationMessage.target.toLowerCase() + \" threw error '\" + e + \"'.\");\r\n }\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n var message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this.logger.log(LogLevel.Error, message);\r\n // We don't want to wait on the stop itself.\r\n this.stopPromise = this.stopInternal(new Error(message));\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Warning, \"No client method with the name '\" + invocationMessage.target + \"' found.\");\r\n }\r\n };\r\n HubConnection.prototype.connectionClosed = function (error) {\r\n this.logger.log(LogLevel.Debug, \"HubConnection.connectionClosed(\" + error + \") called while in state \" + this.connectionState + \".\");\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this.stopDuringStartError = this.stopDuringStartError || error || new Error(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this.handshakeResolver) {\r\n this.handshakeResolver();\r\n }\r\n this.cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.completeClose(error);\r\n }\r\n else if (this.connectionState === HubConnectionState.Connected && this.reconnectPolicy) {\r\n // tslint:disable-next-line:no-floating-promises\r\n this.reconnect(error);\r\n }\r\n else if (this.connectionState === HubConnectionState.Connected) {\r\n this.completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n };\r\n HubConnection.prototype.completeClose = function (error) {\r\n var _this = this;\r\n if (this.connectionStarted) {\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n try {\r\n this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onclose callback called with error '\" + error + \"' threw error '\" + e + \"'.\");\r\n }\r\n }\r\n };\r\n HubConnection.prototype.reconnect = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectStartTime, previousReconnectAttempts, retryError, nextRetryDelay, e_4;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n reconnectStartTime = Date.now();\r\n previousReconnectAttempts = 0;\r\n retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this.logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this.completeClose(error);\r\n return [2 /*return*/];\r\n }\r\n this.connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this.logger.log(LogLevel.Information, \"Connection reconnecting because of error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this.onreconnecting) {\r\n try {\r\n this.reconnectingCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onreconnecting callback called with error '\" + error + \"' threw error '\" + e + \"'.\");\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return [2 /*return*/];\r\n }\r\n }\r\n _a.label = 1;\r\n case 1:\r\n if (!(nextRetryDelay !== null)) return [3 /*break*/, 7];\r\n this.logger.log(LogLevel.Information, \"Reconnect attempt number \" + previousReconnectAttempts + \" will start in \" + nextRetryDelay + \" ms.\");\r\n return [4 /*yield*/, new Promise(function (resolve) {\r\n _this.reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n })];\r\n case 2:\r\n _a.sent();\r\n this.reconnectDelayHandle = undefined;\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return [2 /*return*/];\r\n }\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.startInternal()];\r\n case 4:\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\r\n this.logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this.onreconnected) {\r\n try {\r\n this.reconnectedCallbacks.forEach(function (c) { return c.apply(_this, [_this.connection.connectionId]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onreconnected callback called with connectionId '\" + this.connection.connectionId + \"; threw error '\" + e + \"'.\");\r\n }\r\n }\r\n return [2 /*return*/];\r\n case 5:\r\n e_4 = _a.sent();\r\n this.logger.log(LogLevel.Information, \"Reconnect attempt failed because of error '\" + e_4 + \"'.\");\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect attempt. Done reconnecting.\");\r\n return [2 /*return*/];\r\n }\r\n retryError = e_4 instanceof Error ? e_4 : new Error(e_4.toString());\r\n nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7:\r\n this.logger.log(LogLevel.Information, \"Reconnect retries have been exhausted after \" + (Date.now() - reconnectStartTime) + \" ms and \" + previousReconnectAttempts + \" failed attempts. Connection disconnecting.\");\r\n this.completeClose();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.getNextRetryDelay = function (previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this.reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds: elapsedMilliseconds,\r\n previousRetryCount: previousRetryCount,\r\n retryReason: retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"IRetryPolicy.nextRetryDelayInMilliseconds(\" + previousRetryCount + \", \" + elapsedMilliseconds + \") threw error '\" + e + \"'.\");\r\n return null;\r\n }\r\n };\r\n HubConnection.prototype.cancelCallbacksWithError = function (error) {\r\n var callbacks = this.callbacks;\r\n this.callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach(function (key) {\r\n var callback = callbacks[key];\r\n callback(null, error);\r\n });\r\n };\r\n HubConnection.prototype.cleanupPingTimer = function () {\r\n if (this.pingServerHandle) {\r\n clearTimeout(this.pingServerHandle);\r\n }\r\n };\r\n HubConnection.prototype.cleanupTimeout = function () {\r\n if (this.timeoutHandle) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n };\r\n HubConnection.prototype.createInvocation = function (methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n return {\r\n arguments: args,\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n var invocationId = this.invocationId;\r\n this.invocationId++;\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n };\r\n HubConnection.prototype.launchStreams = function (streams, promiseQueue) {\r\n var _this = this;\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n var _loop_1 = function (streamId) {\r\n streams[streamId].subscribe({\r\n complete: function () {\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId)); });\r\n },\r\n error: function (err) {\r\n var message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId, message)); });\r\n },\r\n next: function (item) {\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createStreamItemMessage(streamId, item)); });\r\n },\r\n });\r\n };\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // tslint:disable-next-line:forin\r\n for (var streamId in streams) {\r\n _loop_1(streamId);\r\n }\r\n };\r\n HubConnection.prototype.replaceStreamingParams = function (args) {\r\n var streams = [];\r\n var streamIds = [];\r\n for (var i = 0; i < args.length; i++) {\r\n var argument = args[i];\r\n if (this.isObservable(argument)) {\r\n var streamId = this.invocationId;\r\n this.invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n };\r\n HubConnection.prototype.isObservable = function (arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n };\r\n HubConnection.prototype.createStreamInvocation = function (methodName, args, streamIds) {\r\n var invocationId = this.invocationId;\r\n this.invocationId++;\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createCancelInvocation = function (id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createStreamItemMessage = function (id, item) {\r\n return {\r\n invocationId: id,\r\n item: item,\r\n type: MessageType.StreamItem,\r\n };\r\n };\r\n HubConnection.prototype.createCompletionMessage = function (id, error, result) {\r\n if (error) {\r\n return {\r\n error: error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result: result,\r\n type: MessageType.Completion,\r\n };\r\n };\r\n return HubConnection;\r\n}());\r\nexport { HubConnection };\r\n//# sourceMappingURL=HubConnection.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n// tslint:disable:object-literal-sort-keys\r\nvar LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n var mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(\"Unknown log level: \" + name);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nvar HubConnectionBuilder = /** @class */ (function () {\r\n function HubConnectionBuilder() {\r\n }\r\n HubConnectionBuilder.prototype.configureLogging = function (logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n var logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, transportTypeOrOptions);\r\n }\r\n else {\r\n this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, { transport: transportTypeOrOptions });\r\n }\r\n return this;\r\n };\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n HubConnectionBuilder.prototype.withHubProtocol = function (protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withAutomaticReconnect = function (retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n };\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n HubConnectionBuilder.prototype.build = function () {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n var httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n var connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\r\n };\r\n return HubConnectionBuilder;\r\n}());\r\nexport { HubConnectionBuilder };\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n//# sourceMappingURL=HubConnectionBuilder.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n//# sourceMappingURL=IHubProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n//# sourceMappingURL=ITransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nvar JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nvar JsonHubProtocol = /** @class */ (function () {\r\n function JsonHubProtocol() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n JsonHubProtocol.prototype.parseMessages = function (input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n var messages = TextMessageFormat.parse(input);\r\n var hubMessages = [];\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n var parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this.isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this.isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this.isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n };\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n JsonHubProtocol.prototype.writeMessage = function (message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n };\r\n JsonHubProtocol.prototype.isInvocationMessage = function (message) {\r\n this.assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isStreamItemMessage = function (message) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isCompletionMessage = function (message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this.assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n };\r\n JsonHubProtocol.prototype.assertNotEmptyString = function (value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n };\r\n return JsonHubProtocol;\r\n}());\r\nexport { JsonHubProtocol };\r\n//# sourceMappingURL=JsonHubProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nvar NullLogger = /** @class */ (function () {\r\n function NullLogger() {\r\n }\r\n /** @inheritDoc */\r\n // tslint:disable-next-line\r\n NullLogger.prototype.log = function (_logLevel, _message) {\r\n };\r\n /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\n NullLogger.instance = new NullLogger();\r\n return NullLogger;\r\n}());\r\nexport { NullLogger };\r\n//# sourceMappingURL=Loggers.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nvar LongPollingTransport = /** @class */ (function () {\r\n function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.pollAbort = new AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n Object.defineProperty(LongPollingTransport.prototype, \"pollAborted\", {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get: function () {\r\n return this.pollAbort.aborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LongPollingTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pollOptions, token, pollUrl, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.url = url;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: {},\r\n timeout: 100000,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 2:\r\n response = _a.sent();\r\n if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n this.running = true;\r\n }\r\n this.receiving = this.poll(this.url, pollOptions);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.getAccessToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.updateHeaderToken = function (request, token) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n // tslint:disable-next-line:no-string-literal\r\n request.headers[\"Authorization\"] = \"Bearer \" + token;\r\n return;\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if (request.headers[\"Authorization\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n delete request.headers[\"Authorization\"];\r\n }\r\n };\r\n LongPollingTransport.prototype.poll = function (url, pollOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, pollUrl, response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 8, 9]);\r\n _a.label = 1;\r\n case 1:\r\n if (!this.running) return [3 /*break*/, 7];\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 2:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 4:\r\n response = _a.sent();\r\n if (response.statusCode === 204) {\r\n this.logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this.running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Unexpected status code\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) data received. \" + getDataDetail(response.content, this.logMessageContent) + \".\");\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (!this.running) {\r\n // Log but disregard errors that occur after stopping\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll errored after shutdown: \" + e_1.message);\r\n }\r\n else {\r\n if (e_1 instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this.closeError = e_1;\r\n this.running = false;\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this.raiseOnClose();\r\n }\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.running) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deleteOptions, token;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this.running = false;\r\n this.pollAbort.abort();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 6]);\r\n return [4 /*yield*/, this.receiving];\r\n case 2:\r\n _a.sent();\r\n // Send DELETE to clean up long polling on the server\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) sending DELETE request to \" + this.url + \".\");\r\n deleteOptions = {\r\n headers: {},\r\n };\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 3:\r\n token = _a.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 4:\r\n _a.sent();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n return [3 /*break*/, 6];\r\n case 5:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this.raiseOnClose();\r\n return [7 /*endfinally*/];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.raiseOnClose = function () {\r\n if (this.onclose) {\r\n var logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this.closeError) {\r\n logMessage += \" Error: \" + this.closeError;\r\n }\r\n this.logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this.closeError);\r\n }\r\n };\r\n return LongPollingTransport;\r\n}());\r\nexport { LongPollingTransport };\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nvar requestModule;\r\nif (typeof XMLHttpRequest === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n requestModule = requireFunc(\"request\");\r\n}\r\n/** @private */\r\nvar NodeHttpClient = /** @class */ (function (_super) {\r\n __extends(NodeHttpClient, _super);\r\n function NodeHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof requestModule === \"undefined\") {\r\n throw new Error(\"The 'request' module could not be loaded.\");\r\n }\r\n _this.logger = logger;\r\n _this.cookieJar = requestModule.jar();\r\n _this.request = requestModule.defaults({ jar: _this.cookieJar });\r\n return _this;\r\n }\r\n NodeHttpClient.prototype.send = function (httpRequest) {\r\n var _this = this;\r\n // Check that abort was not signaled before calling send\r\n if (httpRequest.abortSignal) {\r\n if (httpRequest.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n }\r\n return new Promise(function (resolve, reject) {\r\n var requestBody;\r\n if (isArrayBuffer(httpRequest.content)) {\r\n requestBody = Buffer.from(httpRequest.content);\r\n }\r\n else {\r\n requestBody = httpRequest.content || \"\";\r\n }\r\n var currentRequest = _this.request(httpRequest.url, {\r\n body: requestBody,\r\n // If binary is expected 'null' should be used, otherwise for text 'utf8'\r\n encoding: httpRequest.responseType === \"arraybuffer\" ? null : \"utf8\",\r\n headers: __assign({ \r\n // Tell auth middleware to 401 instead of redirecting\r\n \"X-Requested-With\": \"XMLHttpRequest\" }, httpRequest.headers),\r\n method: httpRequest.method,\r\n timeout: httpRequest.timeout,\r\n }, function (error, response, body) {\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = null;\r\n }\r\n if (error) {\r\n if (error.code === \"ETIMEDOUT\") {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n }\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + error);\r\n reject(error);\r\n return;\r\n }\r\n if (response.statusCode >= 200 && response.statusCode < 300) {\r\n resolve(new HttpResponse(response.statusCode, response.statusMessage || \"\", body));\r\n }\r\n else {\r\n reject(new HttpError(response.statusMessage || \"\", response.statusCode || 0));\r\n }\r\n });\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = function () {\r\n currentRequest.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n });\r\n };\r\n NodeHttpClient.prototype.getCookieString = function (url) {\r\n return this.cookieJar.getCookieString(url);\r\n };\r\n return NodeHttpClient;\r\n}(HttpClient));\r\nexport { NodeHttpClient };\r\n//# sourceMappingURL=NodeHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n this.eventSourceConstructor = eventSourceConstructor;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this.url = url;\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n var eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n var cookies = _this.httpClient.getCookieString(url);\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true, headers: { Cookie: cookies } });\r\n }\r\n try {\r\n eventSource.onmessage = function (e) {\r\n if (_this.onreceive) {\r\n try {\r\n _this.logger.log(LogLevel.Trace, \"(SSE transport) data received. \" + getDataDetail(e.data, _this.logMessageContent) + \".\");\r\n _this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n _this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n eventSource.onerror = function (e) {\r\n var error = new Error(e.data || \"Error occurred\");\r\n if (opened) {\r\n _this.close(error);\r\n }\r\n else {\r\n reject(error);\r\n }\r\n };\r\n eventSource.onopen = function () {\r\n _this.logger.log(LogLevel.Information, \"SSE connected to \" + _this.url);\r\n _this.eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.eventSource) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"SSE\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.stop = function () {\r\n this.close();\r\n return Promise.resolve();\r\n };\r\n ServerSentEventsTransport.prototype.close = function (e) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n };\r\n return ServerSentEventsTransport;\r\n}());\r\nexport { ServerSentEventsTransport };\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nvar Subject = /** @class */ (function () {\r\n function Subject() {\r\n this.observers = [];\r\n }\r\n Subject.prototype.next = function (item) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n observer.next(item);\r\n }\r\n };\r\n Subject.prototype.error = function (err) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n };\r\n Subject.prototype.complete = function () {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n };\r\n Subject.prototype.subscribe = function (observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n };\r\n return Subject;\r\n}());\r\nexport { Subject };\r\n//# sourceMappingURL=Subject.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Not exported from index\r\n/** @private */\r\nvar TextMessageFormat = /** @class */ (function () {\r\n function TextMessageFormat() {\r\n }\r\n TextMessageFormat.write = function (output) {\r\n return \"\" + output + TextMessageFormat.RecordSeparator;\r\n };\r\n TextMessageFormat.parse = function (input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n var messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n };\r\n TextMessageFormat.RecordSeparatorCode = 0x1e;\r\n TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n return TextMessageFormat;\r\n}());\r\nexport { TextMessageFormat };\r\n//# sourceMappingURL=TextMessageFormat.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n/** @private */\r\nvar Arg = /** @class */ (function () {\r\n function Arg() {\r\n }\r\n Arg.isRequired = function (val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(\"The '\" + name + \"' argument is required.\");\r\n }\r\n };\r\n Arg.isIn = function (val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(\"Unknown \" + name + \" value: \" + val + \".\");\r\n }\r\n };\r\n return Arg;\r\n}());\r\nexport { Arg };\r\n/** @private */\r\nvar Platform = /** @class */ (function () {\r\n function Platform() {\r\n }\r\n Object.defineProperty(Platform, \"isBrowser\", {\r\n get: function () {\r\n return typeof window === \"object\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Platform, \"isWebWorker\", {\r\n get: function () {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Platform, \"isNode\", {\r\n get: function () {\r\n return !this.isBrowser && !this.isWebWorker;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Platform;\r\n}());\r\nexport { Platform };\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n var detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = \"Binary data of length \" + data.byteLength;\r\n if (includeContent) {\r\n detail += \". Content: '\" + formatArrayBuffer(data) + \"'\";\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = \"String data of length \" + data.length;\r\n if (includeContent) {\r\n detail += \". Content: '\" + data + \"'\";\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n var view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n var str = \"\";\r\n view.forEach(function (num) {\r\n var pad = num < 16 ? \"0\" : \"\";\r\n str += \"0x\" + pad + num.toString(16) + \" \";\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, responseType, response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) sending data. \" + getDataDetail(content, logMessageContent) + \".\");\r\n responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n return [4 /*yield*/, httpClient.post(url, {\r\n content: content,\r\n headers: headers,\r\n responseType: responseType,\r\n })];\r\n case 3:\r\n response = _b.sent();\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) request complete. Response status: \" + response.statusCode + \".\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nvar SubjectSubscription = /** @class */ (function () {\r\n function SubjectSubscription(subject, observer) {\r\n this.subject = subject;\r\n this.observer = observer;\r\n }\r\n SubjectSubscription.prototype.dispose = function () {\r\n var index = this.subject.observers.indexOf(this.observer);\r\n if (index > -1) {\r\n this.subject.observers.splice(index, 1);\r\n }\r\n if (this.subject.observers.length === 0 && this.subject.cancelCallback) {\r\n this.subject.cancelCallback().catch(function (_) { });\r\n }\r\n };\r\n return SubjectSubscription;\r\n}());\r\nexport { SubjectSubscription };\r\n/** @private */\r\nvar ConsoleLogger = /** @class */ (function () {\r\n function ConsoleLogger(minimumLogLevel) {\r\n this.minimumLogLevel = minimumLogLevel;\r\n this.outputConsole = console;\r\n }\r\n ConsoleLogger.prototype.log = function (logLevel, message) {\r\n if (logLevel >= this.minimumLogLevel) {\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.outputConsole.error(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Warning:\r\n this.outputConsole.warn(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Information:\r\n this.outputConsole.info(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.outputConsole.log(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n }\r\n }\r\n };\r\n return ConsoleLogger;\r\n}());\r\nexport { ConsoleLogger };\r\n//# sourceMappingURL=Utils.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, Platform } from \"./Utils\";\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logMessageContent = logMessageContent;\r\n this.webSocketConstructor = webSocketConstructor;\r\n this.httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n WebSocketTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n url = url.replace(/^http/, \"ws\");\r\n var webSocket;\r\n var cookies = _this.httpClient.getCookieString(url);\r\n var opened = false;\r\n if (Platform.isNode && cookies) {\r\n // Only pass cookies when in non-browser environments\r\n webSocket = new _this.webSocketConstructor(url, undefined, {\r\n headers: {\r\n Cookie: \"\" + cookies,\r\n },\r\n });\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new _this.webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n // tslint:disable-next-line:variable-name\r\n webSocket.onopen = function (_event) {\r\n _this.logger.log(LogLevel.Information, \"WebSocket connected to \" + url + \".\");\r\n _this.webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = function (event) {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = new Error(\"There was an error with the transport.\");\r\n }\r\n reject(error);\r\n };\r\n webSocket.onmessage = function (message) {\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) data received. \" + getDataDetail(message.data, _this.logMessageContent) + \".\");\r\n if (_this.onreceive) {\r\n _this.onreceive(message.data);\r\n }\r\n };\r\n webSocket.onclose = function (event) {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n _this.close(event);\r\n }\r\n else {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = new Error(\"There was an error with the transport.\");\r\n }\r\n reject(error);\r\n }\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n WebSocketTransport.prototype.send = function (data) {\r\n if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) sending data. \" + getDataDetail(data, this.logMessageContent) + \".\");\r\n this.webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n };\r\n WebSocketTransport.prototype.stop = function () {\r\n if (this.webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this.close(undefined);\r\n }\r\n return Promise.resolve();\r\n };\r\n WebSocketTransport.prototype.close = function (event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this.webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this.webSocket.onclose = function () { };\r\n this.webSocket.onmessage = function () { };\r\n this.webSocket.onerror = function () { };\r\n this.webSocket.close();\r\n this.webSocket = undefined;\r\n }\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (event && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(\"WebSocket closed with status code: \" + event.code + \" (\" + event.reason + \").\"));\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n };\r\n return WebSocketTransport;\r\n}());\r\nexport { WebSocketTransport };\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nvar XhrHttpClient = /** @class */ (function (_super) {\r\n __extends(XhrHttpClient, _super);\r\n function XhrHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n XhrHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = true;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n var headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach(function (header) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = function () {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText + \".\");\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = function () {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n };\r\n return XhrHttpClient;\r\n}(HttpClient));\r\nexport { XhrHttpClient };\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport var VERSION = \"3.1.8\";\r\nexport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nexport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nexport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nexport { HubConnection, HubConnectionState } from \"./HubConnection\";\r\nexport { HubConnectionBuilder } from \"./HubConnectionBuilder\";\r\nexport { MessageType } from \"./IHubProtocol\";\r\nexport { LogLevel } from \"./ILogger\";\r\nexport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nexport { NullLogger } from \"./Loggers\";\r\nexport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nexport { Subject } from \"./Subject\";\r\n//# sourceMappingURL=index.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nvar Emitter = function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n }\n\n _createClass(Emitter, [{\n key: \"on\",\n\n // Add an event listener for given event\n value: function on(event, fn) {\n this._callbacks = this._callbacks || {};\n // Create namespace for this event\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n this._callbacks[event].push(fn);\n return this;\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n this._callbacks = this._callbacks || {};\n var callbacks = this._callbacks[event];\n\n if (callbacks) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n for (var _iterator = callbacks, _isArray = true, _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var callback = _ref;\n\n callback.apply(this, args);\n }\n }\n\n return this;\n }\n\n // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n\n }, {\n key: \"off\",\n value: function off(event, fn) {\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) {\n return this;\n }\n\n // remove all handlers\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n }]);\n\n return Emitter;\n}();\n\nvar Dropzone = function (_Emitter) {\n _inherits(Dropzone, _Emitter);\n\n _createClass(Dropzone, null, [{\n key: \"initClass\",\n value: function initClass() {\n\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = Emitter;\n\n /*\n This is a list of all available events you can register on a dropzone object.\n You can register an event handler like this:\n dropzone.on(\"dragEnter\", function() { });\n */\n this.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n\n this.prototype.defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form\n * doesn't have an `action` attribute). You can also\n * provide a function that will be called with `files` and\n * must return the url (since `v3.12.0`)\n */\n url: null,\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */\n method: \"post\",\n\n /**\n * Will be set on the XHRequest.\n */\n withCredentials: false,\n\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n */\n timeout: 30000,\n\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads* documentation section for more info)\n */\n parallelUploads: 2,\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */\n uploadMultiple: false,\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */\n chunking: false,\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n forceChunking: false,\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n chunkSize: 2000000,\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n parallelChunkUploads: false,\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n retryChunks: false,\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n retryChunksLimit: 3,\n\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual feedback.\n */\n maxFilesize: 256,\n\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */\n paramName: \"file\",\n\n /**\n * Whether thumbnails for images should be generated\n */\n createImageThumbnails: true,\n\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */\n maxThumbnailFilesize: 10,\n\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */\n thumbnailWidth: 120,\n\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */\n thumbnailHeight: 120,\n\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n thumbnailMethod: 'crop',\n\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */\n resizeWidth: null,\n\n /**\n * See `resizeWidth`.\n */\n resizeHeight: null,\n\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */\n resizeMimeType: null,\n\n /**\n * The quality of the resized images. See `resizeWidth`.\n */\n resizeQuality: 0.8,\n\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n resizeMethod: 'contain',\n\n /**\n * The base that is used to calculate the filesize. You can change this to\n * 1024 if you would rather display kibibytes, mebibytes, etc...\n * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`.\n * You can change this to `1024` if you don't care about validity.\n */\n filesizeBase: 1000,\n\n /**\n * Can be used to limit the maximum number of files that will be handled by this Dropzone\n */\n maxFiles: null,\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */\n headers: null,\n\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */\n clickable: true,\n\n /**\n * Whether hidden files in directories should be ignored.\n */\n ignoreHiddenFiles: true,\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n acceptedFiles: null,\n\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */\n acceptedMimeTypes: null,\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */\n autoProcessQueue: true,\n\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */\n autoQueue: true,\n\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */\n addRemoveLinks: false,\n\n /**\n * Defines where to display the file previews – if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */\n previewsContainer: null,\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */\n hiddenInputContainer: \"body\",\n\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */\n capture: null,\n\n /**\n * **Deprecated**. Use `renameFile` instead.\n */\n renameFilename: null,\n\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */\n renameFile: null,\n\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */\n forceFallback: false,\n\n /**\n * The text used before any files are dropped.\n */\n dictDefaultMessage: \"Drop files here to upload\",\n\n /**\n * The text that replaces the default message text it the browser is not supported.\n */\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n /**\n * If the file doesn't match the file type.\n */\n dictInvalidFileType: \"You can't upload files of this type.\",\n\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */\n dictCancelUpload: \"Cancel upload\",\n\n /**\n * The text that is displayed if an upload was manually canceled\n */\n dictUploadCanceled: \"Upload canceled.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */\n dictRemoveFile: \"Remove file\",\n\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */\n dictRemoveFileConfirmation: null,\n\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */\n dictFileSizeUnits: { tb: \"TB\", gb: \"GB\", mb: \"MB\", kb: \"KB\", b: \"b\" },\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */\n init: function init() {},\n\n\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */\n params: function params(files, xhr, chunk) {\n if (chunk) {\n return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize\n };\n }\n },\n\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n accept: function accept(file, done) {\n return done();\n },\n\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n chunksUploaded: function chunksUploaded(file, done) {\n done();\n },\n\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */\n fallback: function fallback() {\n // This code should pass in IE7... :(\n var messageElement = void 0;\n this.element.className = this.element.className + \" dz-browser-not-supported\";\n\n for (var _iterator2 = this.element.getElementsByTagName(\"div\"), _isArray2 = true, _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var child = _ref2;\n\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n break;\n }\n }\n if (!messageElement) {\n messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n this.element.appendChild(messageElement);\n }\n\n var span = messageElement.getElementsByTagName(\"span\")[0];\n if (span) {\n if (span.textContent != null) {\n span.textContent = this.options.dictFallbackMessage;\n } else if (span.innerText != null) {\n span.innerText = this.options.dictFallbackMessage;\n }\n }\n\n return this.element.appendChild(this.getFallbackForm());\n },\n\n\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */\n resize: function resize(file, width, height, resizeMethod) {\n var info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n\n var srcRatio = file.width / file.height;\n\n // Automatically calculate dimensions if not specified\n if (width == null && height == null) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if (width == null) {\n width = height * srcRatio;\n } else if (height == null) {\n height = width / srcRatio;\n }\n\n // Make sure images aren't upscaled\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n\n var trgRatio = width / height;\n\n if (info.srcWidth > width || info.srcHeight > height) {\n // Image is bigger and needs rescaling\n if (resizeMethod === 'crop') {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === 'contain') {\n // Method 'contain'\n if (srcRatio > trgRatio) {\n height = width / srcRatio;\n } else {\n width = height * srcRatio;\n }\n } else {\n throw new Error(\"Unknown resizeMethod '\" + resizeMethod + \"'\");\n }\n }\n\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n\n info.trgWidth = width;\n info.trgHeight = height;\n\n return info;\n },\n\n\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */\n transformFile: function transformFile(file, done) {\n if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n } else {\n return done(file);\n }\n },\n\n\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */\n previewTemplate: \"<div class=\\\"dz-preview dz-file-preview\\\">\\n <div class=\\\"dz-image\\\"><img data-dz-thumbnail /></div>\\n <div class=\\\"dz-details\\\">\\n <div class=\\\"dz-size\\\"><span data-dz-size></span></div>\\n <div class=\\\"dz-filename\\\"><span data-dz-name></span></div>\\n </div>\\n <div class=\\\"dz-progress\\\"><span class=\\\"dz-upload\\\" data-dz-uploadprogress></span></div>\\n <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div>\\n <div class=\\\"dz-success-mark\\\">\\n <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n <title>Check</title>\\n <defs></defs>\\n <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n </g>\\n </svg>\\n </div>\\n <div class=\\\"dz-error-mark\\\">\\n <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n <title>Error</title>\\n <defs></defs>\\n <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n <g id=\\\"Check-+-Oval-2\\\" sketch:type=\\\"MSLayerGroup\\\" stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\">\\n <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n </g>\\n </g>\\n </svg>\\n </div>\\n</div>\",\n\n // END OPTIONS\n // (Required by the dropzone documentation parser)\n\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n\n // Those are self explanatory and simply concern the DragnDrop.\n drop: function drop(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart: function dragstart(e) {},\n dragend: function dragend(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter: function dragenter(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover: function dragover(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave: function dragleave(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n paste: function paste(e) {},\n\n\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset: function reset() {\n return this.element.classList.remove(\"dz-started\");\n },\n\n\n // Called when a file is added to the queue\n // Receives `file`\n addedfile: function addedfile(file) {\n var _this2 = this;\n\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n if (this.previewsContainer) {\n file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement; // Backwards compatibility\n\n this.previewsContainer.appendChild(file.previewElement);\n for (var _iterator3 = file.previewElement.querySelectorAll(\"[data-dz-name]\"), _isArray3 = true, _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var node = _ref3;\n\n node.textContent = file.name;\n }\n for (var _iterator4 = file.previewElement.querySelectorAll(\"[data-dz-size]\"), _isArray4 = true, _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n node = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n node = _i4.value;\n }\n\n node.innerHTML = this.filesize(file.size);\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\" + this.options.dictRemoveFile + \"</a>\");\n file.previewElement.appendChild(file._removeLink);\n }\n\n var removeFileEvent = function removeFileEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n if (file.status === Dropzone.UPLOADING) {\n return Dropzone.confirm(_this2.options.dictCancelUploadConfirmation, function () {\n return _this2.removeFile(file);\n });\n } else {\n if (_this2.options.dictRemoveFileConfirmation) {\n return Dropzone.confirm(_this2.options.dictRemoveFileConfirmation, function () {\n return _this2.removeFile(file);\n });\n } else {\n return _this2.removeFile(file);\n }\n }\n };\n\n for (var _iterator5 = file.previewElement.querySelectorAll(\"[data-dz-remove]\"), _isArray5 = true, _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray5) {\n if (_i5 >= _iterator5.length) break;\n _ref4 = _iterator5[_i5++];\n } else {\n _i5 = _iterator5.next();\n if (_i5.done) break;\n _ref4 = _i5.value;\n }\n\n var removeLink = _ref4;\n\n removeLink.addEventListener(\"click\", removeFileEvent);\n }\n }\n },\n\n\n // Called whenever a file is removed.\n removedfile: function removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n return this._updateMaxFilesReachedClass();\n },\n\n\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail: function thumbnail(file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n for (var _iterator6 = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\"), _isArray6 = true, _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n _ref5 = _iterator6[_i6++];\n } else {\n _i6 = _iterator6.next();\n if (_i6.done) break;\n _ref5 = _i6.value;\n }\n\n var thumbnailElement = _ref5;\n\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n\n return setTimeout(function () {\n return file.previewElement.classList.add(\"dz-image-preview\");\n }, 1);\n }\n },\n\n\n // Called whenever an error occurs\n // Receives `file` and `message`\n error: function error(file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n if (typeof message !== \"String\" && message.error) {\n message = message.error;\n }\n for (var _iterator7 = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\"), _isArray7 = true, _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length) break;\n _ref6 = _iterator7[_i7++];\n } else {\n _i7 = _iterator7.next();\n if (_i7.done) break;\n _ref6 = _i7.value;\n }\n\n var node = _ref6;\n\n node.textContent = message;\n }\n }\n },\n errormultiple: function errormultiple() {},\n\n\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing: function processing(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n if (file._removeLink) {\n return file._removeLink.innerHTML = this.options.dictCancelUpload;\n }\n }\n },\n processingmultiple: function processingmultiple() {},\n\n\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress: function uploadprogress(file, progress, bytesSent) {\n if (file.previewElement) {\n for (var _iterator8 = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"), _isArray8 = true, _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray8) {\n if (_i8 >= _iterator8.length) break;\n _ref7 = _iterator8[_i8++];\n } else {\n _i8 = _iterator8.next();\n if (_i8.done) break;\n _ref7 = _i8.value;\n }\n\n var node = _ref7;\n\n node.nodeName === 'PROGRESS' ? node.value = progress : node.style.width = progress + \"%\";\n }\n }\n },\n\n\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress: function totaluploadprogress() {},\n\n\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending: function sending() {},\n sendingmultiple: function sendingmultiple() {},\n\n\n // When the complete upload is finished and successful\n // Receives `file`\n success: function success(file) {\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-success\");\n }\n },\n successmultiple: function successmultiple() {},\n\n\n // When the upload is canceled.\n canceled: function canceled(file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n canceledmultiple: function canceledmultiple() {},\n\n\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete: function complete(file) {\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n completemultiple: function completemultiple() {},\n maxfilesexceeded: function maxfilesexceeded() {},\n maxfilesreached: function maxfilesreached() {},\n queuecomplete: function queuecomplete() {},\n addedfiles: function addedfiles() {}\n };\n\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n }\n\n // global utility\n\n }, {\n key: \"extend\",\n value: function extend(target) {\n for (var _len2 = arguments.length, objects = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n objects[_key2 - 1] = arguments[_key2];\n }\n\n for (var _iterator9 = objects, _isArray9 = true, _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray9) {\n if (_i9 >= _iterator9.length) break;\n _ref8 = _iterator9[_i9++];\n } else {\n _i9 = _iterator9.next();\n if (_i9.done) break;\n _ref8 = _i9.value;\n }\n\n var object = _ref8;\n\n for (var key in object) {\n var val = object[key];\n target[key] = val;\n }\n }\n return target;\n }\n }]);\n\n function Dropzone(el, options) {\n _classCallCheck(this, Dropzone);\n\n var _this = _possibleConstructorReturn(this, (Dropzone.__proto__ || Object.getPrototypeOf(Dropzone)).call(this));\n\n var fallback = void 0,\n left = void 0;\n _this.element = el;\n // For backwards compatibility since the version was in the prototype previously\n _this.version = Dropzone.version;\n\n _this.defaultOptions.previewTemplate = _this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n\n _this.clickableElements = [];\n _this.listeners = [];\n _this.files = []; // All files\n\n if (typeof _this.element === \"string\") {\n _this.element = document.querySelector(_this.element);\n }\n\n // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n if (!_this.element || _this.element.nodeType == null) {\n throw new Error(\"Invalid dropzone element.\");\n }\n\n if (_this.element.dropzone) {\n throw new Error(\"Dropzone already attached.\");\n }\n\n // Now add this dropzone to the instances.\n Dropzone.instances.push(_this);\n\n // Put the dropzone inside the element itself.\n _this.element.dropzone = _this;\n\n var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};\n\n _this.options = Dropzone.extend({}, _this.defaultOptions, elementOptions, options != null ? options : {});\n\n // If the browser failed, just call the fallback and leave\n if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n var _ret;\n\n return _ret = _this.options.fallback.call(_this), _possibleConstructorReturn(_this, _ret);\n }\n\n // @options.url = @element.getAttribute \"action\" unless @options.url?\n if (_this.options.url == null) {\n _this.options.url = _this.element.getAttribute(\"action\");\n }\n\n if (!_this.options.url) {\n throw new Error(\"No URL provided.\");\n }\n\n if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {\n throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n }\n\n if (_this.options.uploadMultiple && _this.options.chunking) {\n throw new Error('You cannot set both: uploadMultiple and chunking.');\n }\n\n // Backwards compatibility\n if (_this.options.acceptedMimeTypes) {\n _this.options.acceptedFiles = _this.options.acceptedMimeTypes;\n delete _this.options.acceptedMimeTypes;\n }\n\n // Backwards compatibility\n if (_this.options.renameFilename != null) {\n _this.options.renameFile = function (file) {\n return _this.options.renameFilename.call(_this, file.name, file);\n };\n }\n\n _this.options.method = _this.options.method.toUpperCase();\n\n if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {\n // Remove the fallback\n fallback.parentNode.removeChild(fallback);\n }\n\n // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n if (_this.options.previewsContainer !== false) {\n if (_this.options.previewsContainer) {\n _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, \"previewsContainer\");\n } else {\n _this.previewsContainer = _this.element;\n }\n }\n\n if (_this.options.clickable) {\n if (_this.options.clickable === true) {\n _this.clickableElements = [_this.element];\n } else {\n _this.clickableElements = Dropzone.getElements(_this.options.clickable, \"clickable\");\n }\n }\n\n _this.init();\n return _this;\n }\n\n // Returns all files that have been accepted\n\n\n _createClass(Dropzone, [{\n key: \"getAcceptedFiles\",\n value: function getAcceptedFiles() {\n return this.files.filter(function (file) {\n return file.accepted;\n }).map(function (file) {\n return file;\n });\n }\n\n // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n\n }, {\n key: \"getRejectedFiles\",\n value: function getRejectedFiles() {\n return this.files.filter(function (file) {\n return !file.accepted;\n }).map(function (file) {\n return file;\n });\n }\n }, {\n key: \"getFilesWithStatus\",\n value: function getFilesWithStatus(status) {\n return this.files.filter(function (file) {\n return file.status === status;\n }).map(function (file) {\n return file;\n });\n }\n\n // Returns all files that are in the queue\n\n }, {\n key: \"getQueuedFiles\",\n value: function getQueuedFiles() {\n return this.getFilesWithStatus(Dropzone.QUEUED);\n }\n }, {\n key: \"getUploadingFiles\",\n value: function getUploadingFiles() {\n return this.getFilesWithStatus(Dropzone.UPLOADING);\n }\n }, {\n key: \"getAddedFiles\",\n value: function getAddedFiles() {\n return this.getFilesWithStatus(Dropzone.ADDED);\n }\n\n // Files that are either queued or uploading\n\n }, {\n key: \"getActiveFiles\",\n value: function getActiveFiles() {\n return this.files.filter(function (file) {\n return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;\n }).map(function (file) {\n return file;\n });\n }\n\n // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n\n }, {\n key: \"init\",\n value: function init() {\n var _this3 = this;\n\n // In case it isn't set already\n if (this.element.tagName === \"form\") {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n }\n\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n }\n\n if (this.clickableElements.length) {\n var setupHiddenFileInput = function setupHiddenFileInput() {\n if (_this3.hiddenFileInput) {\n _this3.hiddenFileInput.parentNode.removeChild(_this3.hiddenFileInput);\n }\n _this3.hiddenFileInput = document.createElement(\"input\");\n _this3.hiddenFileInput.setAttribute(\"type\", \"file\");\n if (_this3.options.maxFiles === null || _this3.options.maxFiles > 1) {\n _this3.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n }\n _this3.hiddenFileInput.className = \"dz-hidden-input\";\n\n if (_this3.options.acceptedFiles !== null) {\n _this3.hiddenFileInput.setAttribute(\"accept\", _this3.options.acceptedFiles);\n }\n if (_this3.options.capture !== null) {\n _this3.hiddenFileInput.setAttribute(\"capture\", _this3.options.capture);\n }\n\n // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n _this3.hiddenFileInput.style.visibility = \"hidden\";\n _this3.hiddenFileInput.style.position = \"absolute\";\n _this3.hiddenFileInput.style.top = \"0\";\n _this3.hiddenFileInput.style.left = \"0\";\n _this3.hiddenFileInput.style.height = \"0\";\n _this3.hiddenFileInput.style.width = \"0\";\n Dropzone.getElement(_this3.options.hiddenInputContainer, 'hiddenInputContainer').appendChild(_this3.hiddenFileInput);\n return _this3.hiddenFileInput.addEventListener(\"change\", function () {\n var files = _this3.hiddenFileInput.files;\n\n if (files.length) {\n for (var _iterator10 = files, _isArray10 = true, _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray10) {\n if (_i10 >= _iterator10.length) break;\n _ref9 = _iterator10[_i10++];\n } else {\n _i10 = _iterator10.next();\n if (_i10.done) break;\n _ref9 = _i10.value;\n }\n\n var file = _ref9;\n\n _this3.addFile(file);\n }\n }\n _this3.emit(\"addedfiles\", files);\n return setupHiddenFileInput();\n });\n };\n setupHiddenFileInput();\n }\n\n this.URL = window.URL !== null ? window.URL : window.webkitURL;\n\n // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n for (var _iterator11 = this.events, _isArray11 = true, _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {\n var _ref10;\n\n if (_isArray11) {\n if (_i11 >= _iterator11.length) break;\n _ref10 = _iterator11[_i11++];\n } else {\n _i11 = _iterator11.next();\n if (_i11.done) break;\n _ref10 = _i11.value;\n }\n\n var eventName = _ref10;\n\n this.on(eventName, this.options[eventName]);\n }\n\n this.on(\"uploadprogress\", function () {\n return _this3.updateTotalUploadProgress();\n });\n\n this.on(\"removedfile\", function () {\n return _this3.updateTotalUploadProgress();\n });\n\n this.on(\"canceled\", function (file) {\n return _this3.emit(\"complete\", file);\n });\n\n // Emit a `queuecomplete` event if all files finished uploading.\n this.on(\"complete\", function (file) {\n if (_this3.getAddedFiles().length === 0 && _this3.getUploadingFiles().length === 0 && _this3.getQueuedFiles().length === 0) {\n // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout(function () {\n return _this3.emit(\"queuecomplete\");\n }, 0);\n }\n });\n\n var noPropagation = function noPropagation(e) {\n e.stopPropagation();\n if (e.preventDefault) {\n return e.preventDefault();\n } else {\n return e.returnValue = false;\n }\n };\n\n // Create the listeners\n this.listeners = [{\n element: this.element,\n events: {\n \"dragstart\": function dragstart(e) {\n return _this3.emit(\"dragstart\", e);\n },\n \"dragenter\": function dragenter(e) {\n noPropagation(e);\n return _this3.emit(\"dragenter\", e);\n },\n \"dragover\": function dragover(e) {\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n var efct = void 0;\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {}\n e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\n\n noPropagation(e);\n return _this3.emit(\"dragover\", e);\n },\n \"dragleave\": function dragleave(e) {\n return _this3.emit(\"dragleave\", e);\n },\n \"drop\": function drop(e) {\n noPropagation(e);\n return _this3.drop(e);\n },\n \"dragend\": function dragend(e) {\n return _this3.emit(\"dragend\", e);\n }\n\n // This is disabled right now, because the browsers don't implement it properly.\n // \"paste\": (e) =>\n // noPropagation e\n // @paste e\n } }];\n\n this.clickableElements.forEach(function (clickableElement) {\n return _this3.listeners.push({\n element: clickableElement,\n events: {\n \"click\": function click(evt) {\n // Only the actual dropzone or the message element should trigger file selection\n if (clickableElement !== _this3.element || evt.target === _this3.element || Dropzone.elementInside(evt.target, _this3.element.querySelector(\".dz-message\"))) {\n _this3.hiddenFileInput.click(); // Forward the click\n }\n return true;\n }\n }\n });\n });\n\n this.enable();\n\n return this.options.init.call(this);\n }\n\n // Not fully tested yet\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.disable();\n this.removeAllFiles(true);\n if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n delete this.element.dropzone;\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n }\n }, {\n key: \"updateTotalUploadProgress\",\n value: function updateTotalUploadProgress() {\n var totalUploadProgress = void 0;\n var totalBytesSent = 0;\n var totalBytes = 0;\n\n var activeFiles = this.getActiveFiles();\n\n if (activeFiles.length) {\n for (var _iterator12 = this.getActiveFiles(), _isArray12 = true, _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {\n var _ref11;\n\n if (_isArray12) {\n if (_i12 >= _iterator12.length) break;\n _ref11 = _iterator12[_i12++];\n } else {\n _i12 = _iterator12.next();\n if (_i12.done) break;\n _ref11 = _i12.value;\n }\n\n var file = _ref11;\n\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\n } else {\n totalUploadProgress = 100;\n }\n\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n }\n\n // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n\n }, {\n key: \"_getParamName\",\n value: function _getParamName(n) {\n if (typeof this.options.paramName === \"function\") {\n return this.options.paramName(n);\n } else {\n return \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\n }\n }\n\n // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n\n }, {\n key: \"_renameFile\",\n value: function _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") {\n return file.name;\n }\n return this.options.renameFile(file);\n }\n\n // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getFallbackForm\",\n value: function getFallbackForm() {\n var existingFallback = void 0,\n form = void 0;\n if (existingFallback = this.getExistingFallback()) {\n return existingFallback;\n }\n\n var fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n if (this.options.dictFallbackText) {\n fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n }\n fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + this._getParamName(0) + \"\\\" \" + (this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined) + \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\";\n\n var fields = Dropzone.createElement(fieldsString);\n if (this.element.tagName !== \"FORM\") {\n form = Dropzone.createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n return form != null ? form : fields;\n }\n\n // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getExistingFallback\",\n value: function getExistingFallback() {\n var getFallback = function getFallback(elements) {\n for (var _iterator13 = elements, _isArray13 = true, _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {\n var _ref12;\n\n if (_isArray13) {\n if (_i13 >= _iterator13.length) break;\n _ref12 = _iterator13[_i13++];\n } else {\n _i13 = _iterator13.next();\n if (_i13.done) break;\n _ref12 = _i13.value;\n }\n\n var el = _ref12;\n\n if (/(^| )fallback($| )/.test(el.className)) {\n return el;\n }\n }\n };\n\n var _arr = [\"div\", \"form\"];\n for (var _i14 = 0; _i14 < _arr.length; _i14++) {\n var tagName = _arr[_i14];\n var fallback;\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n return fallback;\n }\n }\n }\n\n // Activates all listeners stored in @listeners\n\n }, {\n key: \"setupEventListeners\",\n value: function setupEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.addEventListener(event, listener, false));\n }\n return result;\n }();\n });\n }\n\n // Deactivates all listeners stored in @listeners\n\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n return result;\n }();\n });\n }\n\n // Removes all event listeners and cancels all files in the queue or being processed.\n\n }, {\n key: \"disable\",\n value: function disable() {\n var _this4 = this;\n\n this.clickableElements.forEach(function (element) {\n return element.classList.remove(\"dz-clickable\");\n });\n this.removeEventListeners();\n this.disabled = true;\n\n return this.files.map(function (file) {\n return _this4.cancelUpload(file);\n });\n }\n }, {\n key: \"enable\",\n value: function enable() {\n delete this.disabled;\n this.clickableElements.forEach(function (element) {\n return element.classList.add(\"dz-clickable\");\n });\n return this.setupEventListeners();\n }\n\n // Returns a nicely formatted filesize\n\n }, {\n key: \"filesize\",\n value: function filesize(size) {\n var selectedSize = 0;\n var selectedUnit = \"b\";\n\n if (size > 0) {\n var units = ['tb', 'gb', 'mb', 'kb', 'b'];\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n\n return \"<strong>\" + selectedSize + \"</strong> \" + this.options.dictFileSizeUnits[selectedUnit];\n }\n\n // Adds or removes the `dz-max-files-reached` class from the form.\n\n }, {\n key: \"_updateMaxFilesReachedClass\",\n value: function _updateMaxFilesReachedClass() {\n if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\n this.emit('maxfilesreached', this.files);\n }\n return this.element.classList.add(\"dz-max-files-reached\");\n } else {\n return this.element.classList.remove(\"dz-max-files-reached\");\n }\n }\n }, {\n key: \"drop\",\n value: function drop(e) {\n if (!e.dataTransfer) {\n return;\n }\n this.emit(\"drop\", e);\n\n // Convert the FileList to an Array\n // This is necessary for IE11\n var files = [];\n for (var i = 0; i < e.dataTransfer.files.length; i++) {\n files[i] = e.dataTransfer.files[i];\n }\n\n this.emit(\"addedfiles\", files);\n\n // Even if it's a folder, files.length will contain the folders.\n if (files.length) {\n var items = e.dataTransfer.items;\n\n if (items && items.length && items[0].webkitGetAsEntry != null) {\n // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);\n } else {\n this.handleFiles(files);\n }\n }\n }\n }, {\n key: \"paste\",\n value: function paste(e) {\n if (__guard__(e != null ? e.clipboardData : undefined, function (x) {\n return x.items;\n }) == null) {\n return;\n }\n\n this.emit(\"paste\", e);\n var items = e.clipboardData.items;\n\n\n if (items.length) {\n return this._addFilesFromItems(items);\n }\n }\n }, {\n key: \"handleFiles\",\n value: function handleFiles(files) {\n for (var _iterator14 = files, _isArray14 = true, _i15 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {\n var _ref13;\n\n if (_isArray14) {\n if (_i15 >= _iterator14.length) break;\n _ref13 = _iterator14[_i15++];\n } else {\n _i15 = _iterator14.next();\n if (_i15.done) break;\n _ref13 = _i15.value;\n }\n\n var file = _ref13;\n\n this.addFile(file);\n }\n }\n\n // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n\n }, {\n key: \"_addFilesFromItems\",\n value: function _addFilesFromItems(items) {\n var _this5 = this;\n\n return function () {\n var result = [];\n for (var _iterator15 = items, _isArray15 = true, _i16 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {\n var _ref14;\n\n if (_isArray15) {\n if (_i16 >= _iterator15.length) break;\n _ref14 = _iterator15[_i16++];\n } else {\n _i16 = _iterator15.next();\n if (_i16.done) break;\n _ref14 = _i16.value;\n }\n\n var item = _ref14;\n\n var entry;\n if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) {\n result.push(_this5.addFile(item.getAsFile()));\n } else if (entry.isDirectory) {\n // Append all files from that directory to files\n result.push(_this5._addFilesFromDirectory(entry, entry.name));\n } else {\n result.push(undefined);\n }\n } else if (item.getAsFile != null) {\n if (item.kind == null || item.kind === \"file\") {\n result.push(_this5.addFile(item.getAsFile()));\n } else {\n result.push(undefined);\n }\n } else {\n result.push(undefined);\n }\n }\n return result;\n }();\n }\n\n // Goes through the directory, and adds each file it finds recursively\n\n }, {\n key: \"_addFilesFromDirectory\",\n value: function _addFilesFromDirectory(directory, path) {\n var _this6 = this;\n\n var dirReader = directory.createReader();\n\n var errorHandler = function errorHandler(error) {\n return __guardMethod__(console, 'log', function (o) {\n return o.log(error);\n });\n };\n\n var readEntries = function readEntries() {\n return dirReader.readEntries(function (entries) {\n if (entries.length > 0) {\n for (var _iterator16 = entries, _isArray16 = true, _i17 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {\n var _ref15;\n\n if (_isArray16) {\n if (_i17 >= _iterator16.length) break;\n _ref15 = _iterator16[_i17++];\n } else {\n _i17 = _iterator16.next();\n if (_i17.done) break;\n _ref15 = _i17.value;\n }\n\n var entry = _ref15;\n\n if (entry.isFile) {\n entry.file(function (file) {\n if (_this6.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\n return;\n }\n file.fullPath = path + \"/\" + file.name;\n return _this6.addFile(file);\n });\n } else if (entry.isDirectory) {\n _this6._addFilesFromDirectory(entry, path + \"/\" + entry.name);\n }\n }\n\n // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n readEntries();\n }\n return null;\n }, errorHandler);\n };\n\n return readEntries();\n }\n\n // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n\n }, {\n key: \"accept\",\n value: function accept(file, done) {\n if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {\n return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n return done(this.options.dictInvalidFileType);\n } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n return this.emit(\"maxfilesexceeded\", file);\n } else {\n return this.options.accept.call(this, file, done);\n }\n }\n }, {\n key: \"addFile\",\n value: function addFile(file) {\n var _this7 = this;\n\n file.upload = {\n uuid: Dropzone.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file),\n chunked: this.options.chunking && (this.options.forceChunking || file.size > this.options.chunkSize),\n totalChunkCount: Math.ceil(file.size / this.options.chunkSize)\n };\n this.files.push(file);\n\n file.status = Dropzone.ADDED;\n\n this.emit(\"addedfile\", file);\n\n this._enqueueThumbnail(file);\n\n return this.accept(file, function (error) {\n if (error) {\n file.accepted = false;\n _this7._errorProcessing([file], error); // Will set the file.status\n } else {\n file.accepted = true;\n if (_this7.options.autoQueue) {\n _this7.enqueueFile(file);\n } // Will set .accepted = true\n }\n return _this7._updateMaxFilesReachedClass();\n });\n }\n\n // Wrapper for enqueueFile\n\n }, {\n key: \"enqueueFiles\",\n value: function enqueueFiles(files) {\n for (var _iterator17 = files, _isArray17 = true, _i18 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) {\n var _ref16;\n\n if (_isArray17) {\n if (_i18 >= _iterator17.length) break;\n _ref16 = _iterator17[_i18++];\n } else {\n _i18 = _iterator17.next();\n if (_i18.done) break;\n _ref16 = _i18.value;\n }\n\n var file = _ref16;\n\n this.enqueueFile(file);\n }\n return null;\n }\n }, {\n key: \"enqueueFile\",\n value: function enqueueFile(file) {\n var _this8 = this;\n\n if (file.status === Dropzone.ADDED && file.accepted === true) {\n file.status = Dropzone.QUEUED;\n if (this.options.autoProcessQueue) {\n return setTimeout(function () {\n return _this8.processQueue();\n }, 0); // Deferring the call\n }\n } else {\n throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n }\n }, {\n key: \"_enqueueThumbnail\",\n value: function _enqueueThumbnail(file) {\n var _this9 = this;\n\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n this._thumbnailQueue.push(file);\n return setTimeout(function () {\n return _this9._processThumbnailQueue();\n }, 0); // Deferring the call\n }\n }\n }, {\n key: \"_processThumbnailQueue\",\n value: function _processThumbnailQueue() {\n var _this10 = this;\n\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n return;\n }\n\n this._processingThumbnail = true;\n var file = this._thumbnailQueue.shift();\n return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {\n _this10.emit(\"thumbnail\", file, dataUrl);\n _this10._processingThumbnail = false;\n return _this10._processThumbnailQueue();\n });\n }\n\n // Can be called by the user to remove a file\n\n }, {\n key: \"removeFile\",\n value: function removeFile(file) {\n if (file.status === Dropzone.UPLOADING) {\n this.cancelUpload(file);\n }\n this.files = without(this.files, file);\n\n this.emit(\"removedfile\", file);\n if (this.files.length === 0) {\n return this.emit(\"reset\");\n }\n }\n\n // Removes all files that aren't currently processed from the list\n\n }, {\n key: \"removeAllFiles\",\n value: function removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) {\n cancelIfNecessary = false;\n }\n for (var _iterator18 = this.files.slice(), _isArray18 = true, _i19 = 0, _iterator18 = _isArray18 ? _iterator18 : _iterator18[Symbol.iterator]();;) {\n var _ref17;\n\n if (_isArray18) {\n if (_i19 >= _iterator18.length) break;\n _ref17 = _iterator18[_i19++];\n } else {\n _i19 = _iterator18.next();\n if (_i19.done) break;\n _ref17 = _i19.value;\n }\n\n var file = _ref17;\n\n if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n this.removeFile(file);\n }\n }\n return null;\n }\n\n // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n\n }, {\n key: \"resizeImage\",\n value: function resizeImage(file, width, height, resizeMethod, callback) {\n var _this11 = this;\n\n return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {\n if (canvas == null) {\n // The image has not been resized\n return callback(file);\n } else {\n var resizeMimeType = _this11.options.resizeMimeType;\n\n if (resizeMimeType == null) {\n resizeMimeType = file.type;\n }\n var resizedDataURL = canvas.toDataURL(resizeMimeType, _this11.options.resizeQuality);\n if (resizeMimeType === 'image/jpeg' || resizeMimeType === 'image/jpg') {\n // Now add the original EXIF information\n resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n }\n return callback(Dropzone.dataURItoBlob(resizedDataURL));\n }\n });\n }\n }, {\n key: \"createThumbnail\",\n value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n var _this12 = this;\n\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n\n file.dataURL = fileReader.result;\n\n // Don't bother creating a thumbnail for SVG images since they're vector\n if (file.type === \"image/svg+xml\") {\n if (callback != null) {\n callback(fileReader.result);\n }\n return;\n }\n\n return _this12.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n };\n\n return fileReader.readAsDataURL(file);\n }\n }, {\n key: \"createThumbnailFromUrl\",\n value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n var _this13 = this;\n\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n var img = document.createElement(\"img\");\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n img.onload = function () {\n var loadExif = function loadExif(callback) {\n return callback(1);\n };\n if (typeof EXIF !== 'undefined' && EXIF !== null && fixOrientation) {\n loadExif = function loadExif(callback) {\n return EXIF.getData(img, function () {\n return callback(EXIF.getTag(this, 'Orientation'));\n });\n };\n }\n\n return loadExif(function (orientation) {\n file.width = img.width;\n file.height = img.height;\n\n var resizeInfo = _this13.options.resize.call(_this13, file, width, height, resizeMethod);\n\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n }\n\n // This is a bugfix for iOS' scaling bug.\n drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n\n var thumbnail = canvas.toDataURL(\"image/png\");\n\n if (callback != null) {\n return callback(thumbnail, canvas);\n }\n });\n };\n\n if (callback != null) {\n img.onerror = callback;\n }\n\n return img.src = file.dataURL;\n }\n\n // Goes through the queue and processes files if there aren't too many already.\n\n }, {\n key: \"processQueue\",\n value: function processQueue() {\n var parallelUploads = this.options.parallelUploads;\n\n var processingLength = this.getUploadingFiles().length;\n var i = processingLength;\n\n // There are already at least as many files uploading than should be\n if (processingLength >= parallelUploads) {\n return;\n }\n\n var queuedFiles = this.getQueuedFiles();\n\n if (!(queuedFiles.length > 0)) {\n return;\n }\n\n if (this.options.uploadMultiple) {\n // The files should be uploaded in one request\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n } else {\n while (i < parallelUploads) {\n if (!queuedFiles.length) {\n return;\n } // Nothing left to process\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n }\n\n // Wrapper for `processFiles`\n\n }, {\n key: \"processFile\",\n value: function processFile(file) {\n return this.processFiles([file]);\n }\n\n // Loads the file, then calls finishedLoading()\n\n }, {\n key: \"processFiles\",\n value: function processFiles(files) {\n for (var _iterator19 = files, _isArray19 = true, _i20 = 0, _iterator19 = _isArray19 ? _iterator19 : _iterator19[Symbol.iterator]();;) {\n var _ref18;\n\n if (_isArray19) {\n if (_i20 >= _iterator19.length) break;\n _ref18 = _iterator19[_i20++];\n } else {\n _i20 = _iterator19.next();\n if (_i20.done) break;\n _ref18 = _i20.value;\n }\n\n var file = _ref18;\n\n file.processing = true; // Backwards compatibility\n file.status = Dropzone.UPLOADING;\n\n this.emit(\"processing\", file);\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"processingmultiple\", files);\n }\n\n return this.uploadFiles(files);\n }\n }, {\n key: \"_getFilesWithXhr\",\n value: function _getFilesWithXhr(xhr) {\n var files = void 0;\n return files = this.files.filter(function (file) {\n return file.xhr === xhr;\n }).map(function (file) {\n return file;\n });\n }\n\n // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n\n }, {\n key: \"cancelUpload\",\n value: function cancelUpload(file) {\n if (file.status === Dropzone.UPLOADING) {\n var groupedFiles = this._getFilesWithXhr(file.xhr);\n for (var _iterator20 = groupedFiles, _isArray20 = true, _i21 = 0, _iterator20 = _isArray20 ? _iterator20 : _iterator20[Symbol.iterator]();;) {\n var _ref19;\n\n if (_isArray20) {\n if (_i21 >= _iterator20.length) break;\n _ref19 = _iterator20[_i21++];\n } else {\n _i21 = _iterator20.next();\n if (_i21.done) break;\n _ref19 = _i21.value;\n }\n\n var groupedFile = _ref19;\n\n groupedFile.status = Dropzone.CANCELED;\n }\n if (typeof file.xhr !== 'undefined') {\n file.xhr.abort();\n }\n for (var _iterator21 = groupedFiles, _isArray21 = true, _i22 = 0, _iterator21 = _isArray21 ? _iterator21 : _iterator21[Symbol.iterator]();;) {\n var _ref20;\n\n if (_isArray21) {\n if (_i22 >= _iterator21.length) break;\n _ref20 = _iterator21[_i22++];\n } else {\n _i22 = _iterator21.next();\n if (_i22.done) break;\n _ref20 = _i22.value;\n }\n\n var _groupedFile = _ref20;\n\n this.emit(\"canceled\", _groupedFile);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", groupedFiles);\n }\n } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n file.status = Dropzone.CANCELED;\n this.emit(\"canceled\", file);\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", [file]);\n }\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }, {\n key: \"resolveOption\",\n value: function resolveOption(option) {\n if (typeof option === 'function') {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return option.apply(this, args);\n }\n return option;\n }\n }, {\n key: \"uploadFile\",\n value: function uploadFile(file) {\n return this.uploadFiles([file]);\n }\n }, {\n key: \"uploadFiles\",\n value: function uploadFiles(files) {\n var _this14 = this;\n\n this._transformFiles(files, function (transformedFiles) {\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n var file = files[0];\n var transformedFile = transformedFiles[0];\n var startedChunkCount = 0;\n\n file.upload.chunks = [];\n\n var handleNextChunk = function handleNextChunk() {\n var chunkIndex = 0;\n\n // Find the next item in file.upload.chunks that is not defined yet.\n while (file.upload.chunks[chunkIndex] !== undefined) {\n chunkIndex++;\n }\n\n // This means, that all chunks have already been started.\n if (chunkIndex >= file.upload.totalChunkCount) return;\n\n startedChunkCount++;\n\n var start = chunkIndex * _this14.options.chunkSize;\n var end = Math.min(start + _this14.options.chunkSize, file.size);\n\n var dataBlock = {\n name: _this14._getParamName(0),\n data: transformedFile.webkitSlice ? transformedFile.webkitSlice(start, end) : transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex\n };\n\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock, // In case we want to retry.\n status: Dropzone.UPLOADING,\n progress: 0,\n retries: 0 // The number of times this block has been retried.\n };\n\n _this14._uploadData(files, [dataBlock]);\n };\n\n file.upload.finishedChunkUpload = function (chunk) {\n var allFinished = true;\n chunk.status = Dropzone.SUCCESS;\n\n // Clear the data from the chunk\n chunk.dataBlock = null;\n // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n chunk.xhr = null;\n\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] === undefined) {\n return handleNextChunk();\n }\n if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n allFinished = false;\n }\n }\n\n if (allFinished) {\n _this14.options.chunksUploaded(file, function () {\n _this14._finished(files, '', null);\n });\n }\n };\n\n if (_this14.options.parallelChunkUploads) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n handleNextChunk();\n }\n } else {\n handleNextChunk();\n }\n } else {\n var dataBlocks = [];\n for (var _i23 = 0; _i23 < files.length; _i23++) {\n dataBlocks[_i23] = {\n name: _this14._getParamName(_i23),\n data: transformedFiles[_i23],\n filename: files[_i23].upload.filename\n };\n }\n _this14._uploadData(files, dataBlocks);\n }\n });\n }\n\n /// Returns the right chunk for given file and xhr\n\n }, {\n key: \"_getChunk\",\n value: function _getChunk(file, xhr) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n return file.upload.chunks[i];\n }\n }\n }\n\n // This function actually uploads the file(s) to the server.\n // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n // files, or individual chunks for chunked upload).\n\n }, {\n key: \"_uploadData\",\n value: function _uploadData(files, dataBlocks) {\n var _this15 = this;\n\n var xhr = new XMLHttpRequest();\n\n // Put the xhr object in the file objects to be able to reference it later.\n for (var _iterator22 = files, _isArray22 = true, _i24 = 0, _iterator22 = _isArray22 ? _iterator22 : _iterator22[Symbol.iterator]();;) {\n var _ref21;\n\n if (_isArray22) {\n if (_i24 >= _iterator22.length) break;\n _ref21 = _iterator22[_i24++];\n } else {\n _i24 = _iterator22.next();\n if (_i24.done) break;\n _ref21 = _i24.value;\n }\n\n var file = _ref21;\n\n file.xhr = xhr;\n }\n if (files[0].upload.chunked) {\n // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n }\n\n var method = this.resolveOption(this.options.method, files);\n var url = this.resolveOption(this.options.url, files);\n xhr.open(method, url, true);\n\n // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n xhr.timeout = this.resolveOption(this.options.timeout, files);\n\n // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n xhr.withCredentials = !!this.options.withCredentials;\n\n xhr.onload = function (e) {\n _this15._finishedUploading(files, xhr, e);\n };\n\n xhr.onerror = function () {\n _this15._handleUploadError(files, xhr);\n };\n\n // Some browsers do not have the .upload property\n var progressObj = xhr.upload != null ? xhr.upload : xhr;\n progressObj.onprogress = function (e) {\n return _this15._updateFilesUploadProgress(files, xhr, e);\n };\n\n var headers = {\n \"Accept\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n };\n\n if (this.options.headers) {\n Dropzone.extend(headers, this.options.headers);\n }\n\n for (var headerName in headers) {\n var headerValue = headers[headerName];\n if (headerValue) {\n xhr.setRequestHeader(headerName, headerValue);\n }\n }\n\n var formData = new FormData();\n\n // Adding all @options parameters\n if (this.options.params) {\n var additionalParams = this.options.params;\n if (typeof additionalParams === 'function') {\n additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n }\n\n for (var key in additionalParams) {\n var value = additionalParams[key];\n formData.append(key, value);\n }\n }\n\n // Let the user add additional data if necessary\n for (var _iterator23 = files, _isArray23 = true, _i25 = 0, _iterator23 = _isArray23 ? _iterator23 : _iterator23[Symbol.iterator]();;) {\n var _ref22;\n\n if (_isArray23) {\n if (_i25 >= _iterator23.length) break;\n _ref22 = _iterator23[_i25++];\n } else {\n _i25 = _iterator23.next();\n if (_i25.done) break;\n _ref22 = _i25.value;\n }\n\n var _file = _ref22;\n\n this.emit(\"sending\", _file, xhr, formData);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr, formData);\n }\n\n this._addFormElementData(formData);\n\n // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n for (var i = 0; i < dataBlocks.length; i++) {\n var dataBlock = dataBlocks[i];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n\n this.submitRequest(xhr, formData, files);\n }\n\n // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n\n }, {\n key: \"_transformFiles\",\n value: function _transformFiles(files, done) {\n var _this16 = this;\n\n var transformedFiles = [];\n // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n var doneCounter = 0;\n\n var _loop = function _loop(i) {\n _this16.options.transformFile.call(_this16, files[i], function (transformedFile) {\n transformedFiles[i] = transformedFile;\n if (++doneCounter === files.length) {\n done(transformedFiles);\n }\n });\n };\n\n for (var i = 0; i < files.length; i++) {\n _loop(i);\n }\n }\n\n // Takes care of adding other input elements of the form to the AJAX request\n\n }, {\n key: \"_addFormElementData\",\n value: function _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") {\n for (var _iterator24 = this.element.querySelectorAll(\"input, textarea, select, button\"), _isArray24 = true, _i26 = 0, _iterator24 = _isArray24 ? _iterator24 : _iterator24[Symbol.iterator]();;) {\n var _ref23;\n\n if (_isArray24) {\n if (_i26 >= _iterator24.length) break;\n _ref23 = _iterator24[_i26++];\n } else {\n _i26 = _iterator24.next();\n if (_i26.done) break;\n _ref23 = _i26.value;\n }\n\n var input = _ref23;\n\n var inputName = input.getAttribute(\"name\");\n var inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase();\n\n // If the input doesn't have a name, we can't use it.\n if (typeof inputName === 'undefined' || inputName === null) continue;\n\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n for (var _iterator25 = input.options, _isArray25 = true, _i27 = 0, _iterator25 = _isArray25 ? _iterator25 : _iterator25[Symbol.iterator]();;) {\n var _ref24;\n\n if (_isArray25) {\n if (_i27 >= _iterator25.length) break;\n _ref24 = _iterator25[_i27++];\n } else {\n _i27 = _iterator25.next();\n if (_i27.done) break;\n _ref24 = _i27.value;\n }\n\n var option = _ref24;\n\n if (option.selected) {\n formData.append(inputName, option.value);\n }\n }\n } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) {\n formData.append(inputName, input.value);\n }\n }\n }\n }\n\n // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n\n }, {\n key: \"_updateFilesUploadProgress\",\n value: function _updateFilesUploadProgress(files, xhr, e) {\n var progress = void 0;\n if (typeof e !== 'undefined') {\n progress = 100 * e.loaded / e.total;\n\n if (files[0].upload.chunked) {\n var file = files[0];\n // Since this is a chunked upload, we need to update the appropriate chunk progress.\n var chunk = this._getChunk(file, xhr);\n chunk.progress = progress;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n var fileProgress = 0,\n fileTotal = void 0,\n fileBytesSent = void 0;\n file.upload.progress = 0;\n file.upload.total = 0;\n file.upload.bytesSent = 0;\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].progress !== undefined) {\n file.upload.progress += file.upload.chunks[i].progress;\n file.upload.total += file.upload.chunks[i].total;\n file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n }\n }\n file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n } else {\n for (var _iterator26 = files, _isArray26 = true, _i28 = 0, _iterator26 = _isArray26 ? _iterator26 : _iterator26[Symbol.iterator]();;) {\n var _ref25;\n\n if (_isArray26) {\n if (_i28 >= _iterator26.length) break;\n _ref25 = _iterator26[_i28++];\n } else {\n _i28 = _iterator26.next();\n if (_i28.done) break;\n _ref25 = _i28.value;\n }\n\n var _file2 = _ref25;\n\n _file2.upload.progress = progress;\n _file2.upload.total = e.total;\n _file2.upload.bytesSent = e.loaded;\n }\n }\n for (var _iterator27 = files, _isArray27 = true, _i29 = 0, _iterator27 = _isArray27 ? _iterator27 : _iterator27[Symbol.iterator]();;) {\n var _ref26;\n\n if (_isArray27) {\n if (_i29 >= _iterator27.length) break;\n _ref26 = _iterator27[_i29++];\n } else {\n _i29 = _iterator27.next();\n if (_i29.done) break;\n _ref26 = _i29.value;\n }\n\n var _file3 = _ref26;\n\n this.emit(\"uploadprogress\", _file3, _file3.upload.progress, _file3.upload.bytesSent);\n }\n } else {\n // Called when the file finished uploading\n\n var allFilesFinished = true;\n\n progress = 100;\n\n for (var _iterator28 = files, _isArray28 = true, _i30 = 0, _iterator28 = _isArray28 ? _iterator28 : _iterator28[Symbol.iterator]();;) {\n var _ref27;\n\n if (_isArray28) {\n if (_i30 >= _iterator28.length) break;\n _ref27 = _iterator28[_i30++];\n } else {\n _i30 = _iterator28.next();\n if (_i30.done) break;\n _ref27 = _i30.value;\n }\n\n var _file4 = _ref27;\n\n if (_file4.upload.progress !== 100 || _file4.upload.bytesSent !== _file4.upload.total) {\n allFilesFinished = false;\n }\n _file4.upload.progress = progress;\n _file4.upload.bytesSent = _file4.upload.total;\n }\n\n // Nothing to do, all files already at 100%\n if (allFilesFinished) {\n return;\n }\n\n for (var _iterator29 = files, _isArray29 = true, _i31 = 0, _iterator29 = _isArray29 ? _iterator29 : _iterator29[Symbol.iterator]();;) {\n var _ref28;\n\n if (_isArray29) {\n if (_i31 >= _iterator29.length) break;\n _ref28 = _iterator29[_i31++];\n } else {\n _i31 = _iterator29.next();\n if (_i31.done) break;\n _ref28 = _i31.value;\n }\n\n var _file5 = _ref28;\n\n this.emit(\"uploadprogress\", _file5, progress, _file5.upload.bytesSent);\n }\n }\n }\n }, {\n key: \"_finishedUploading\",\n value: function _finishedUploading(files, xhr, e) {\n var response = void 0;\n\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (xhr.responseType !== 'arraybuffer' && xhr.responseType !== 'blob') {\n response = xhr.responseText;\n\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n }\n\n this._updateFilesUploadProgress(files);\n\n if (!(200 <= xhr.status && xhr.status < 300)) {\n this._handleUploadError(files, xhr, response);\n } else {\n if (files[0].upload.chunked) {\n files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr));\n } else {\n this._finished(files, response, e);\n }\n }\n }\n }, {\n key: \"_handleUploadError\",\n value: function _handleUploadError(files, xhr, response) {\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (files[0].upload.chunked && this.options.retryChunks) {\n var chunk = this._getChunk(files[0], xhr);\n if (chunk.retries++ < this.options.retryChunksLimit) {\n this._uploadData(files, [chunk.dataBlock]);\n return;\n } else {\n console.warn('Retried this chunk too often. Giving up.');\n }\n }\n\n for (var _iterator30 = files, _isArray30 = true, _i32 = 0, _iterator30 = _isArray30 ? _iterator30 : _iterator30[Symbol.iterator]();;) {\n var _ref29;\n\n if (_isArray30) {\n if (_i32 >= _iterator30.length) break;\n _ref29 = _iterator30[_i32++];\n } else {\n _i32 = _iterator30.next();\n if (_i32.done) break;\n _ref29 = _i32.value;\n }\n\n var file = _ref29;\n\n this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n }\n }\n }, {\n key: \"submitRequest\",\n value: function submitRequest(xhr, formData, files) {\n xhr.send(formData);\n }\n\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_finished\",\n value: function _finished(files, responseText, e) {\n for (var _iterator31 = files, _isArray31 = true, _i33 = 0, _iterator31 = _isArray31 ? _iterator31 : _iterator31[Symbol.iterator]();;) {\n var _ref30;\n\n if (_isArray31) {\n if (_i33 >= _iterator31.length) break;\n _ref30 = _iterator31[_i33++];\n } else {\n _i33 = _iterator31.next();\n if (_i33.done) break;\n _ref30 = _i33.value;\n }\n\n var file = _ref30;\n\n file.status = Dropzone.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_errorProcessing\",\n value: function _errorProcessing(files, message, xhr) {\n for (var _iterator32 = files, _isArray32 = true, _i34 = 0, _iterator32 = _isArray32 ? _iterator32 : _iterator32[Symbol.iterator]();;) {\n var _ref31;\n\n if (_isArray32) {\n if (_i34 >= _iterator32.length) break;\n _ref31 = _iterator32[_i34++];\n } else {\n _i34 = _iterator32.next();\n if (_i34.done) break;\n _ref31 = _i34.value;\n }\n\n var file = _ref31;\n\n file.status = Dropzone.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }], [{\n key: \"uuidv4\",\n value: function uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0,\n v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n }\n }]);\n\n return Dropzone;\n}(Emitter);\n\nDropzone.initClass();\n\nDropzone.version = \"5.5.1\";\n\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n// Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n// <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\nDropzone.options = {};\n\n// Returns the options for an element or undefined if none available.\nDropzone.optionsForElement = function (element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) {\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n } else {\n return undefined;\n }\n};\n\n// Holds a list of all dropzone instances\nDropzone.instances = [];\n\n// Returns the dropzone for given element if any\nDropzone.forElement = function (element) {\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n if ((element != null ? element.dropzone : undefined) == null) {\n throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n }\n return element.dropzone;\n};\n\n// Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\nDropzone.autoDiscover = true;\n\n// Looks for all .dropzone elements and creates a dropzone for them\nDropzone.discover = function () {\n var dropzones = void 0;\n if (document.querySelectorAll) {\n dropzones = document.querySelectorAll(\".dropzone\");\n } else {\n dropzones = [];\n // IE :(\n var checkElements = function checkElements(elements) {\n return function () {\n var result = [];\n for (var _iterator33 = elements, _isArray33 = true, _i35 = 0, _iterator33 = _isArray33 ? _iterator33 : _iterator33[Symbol.iterator]();;) {\n var _ref32;\n\n if (_isArray33) {\n if (_i35 >= _iterator33.length) break;\n _ref32 = _iterator33[_i35++];\n } else {\n _i35 = _iterator33.next();\n if (_i35.done) break;\n _ref32 = _i35.value;\n }\n\n var el = _ref32;\n\n if (/(^| )dropzone($| )/.test(el.className)) {\n result.push(dropzones.push(el));\n } else {\n result.push(undefined);\n }\n }\n return result;\n }();\n };\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n\n return function () {\n var result = [];\n for (var _iterator34 = dropzones, _isArray34 = true, _i36 = 0, _iterator34 = _isArray34 ? _iterator34 : _iterator34[Symbol.iterator]();;) {\n var _ref33;\n\n if (_isArray34) {\n if (_i36 >= _iterator34.length) break;\n _ref33 = _iterator34[_i36++];\n } else {\n _i36 = _iterator34.next();\n if (_i36.done) break;\n _ref33 = _i36.value;\n }\n\n var dropzone = _ref33;\n\n // Create a dropzone unless auto discover has been disabled for specific element\n if (Dropzone.optionsForElement(dropzone) !== false) {\n result.push(new Dropzone(dropzone));\n } else {\n result.push(undefined);\n }\n }\n return result;\n }();\n};\n\n// Since the whole Drag'n'Drop API is pretty new, some browsers implement it,\n// but not correctly.\n// So I created a blacklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n//\nDropzone.blacklistedBrowsers = [\n// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n/opera.*(Macintosh|Windows Phone).*version\\/12/i];\n\n// Checks if the browser is supported\nDropzone.isBrowserSupported = function () {\n var capableBrowser = true;\n\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) {\n capableBrowser = false;\n } else {\n // The browser supports the API, but may be blacklisted.\n for (var _iterator35 = Dropzone.blacklistedBrowsers, _isArray35 = true, _i37 = 0, _iterator35 = _isArray35 ? _iterator35 : _iterator35[Symbol.iterator]();;) {\n var _ref34;\n\n if (_isArray35) {\n if (_i37 >= _iterator35.length) break;\n _ref34 = _iterator35[_i37++];\n } else {\n _i37 = _iterator35.next();\n if (_i37.done) break;\n _ref34 = _i37.value;\n }\n\n var regex = _ref34;\n\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n }\n } else {\n capableBrowser = false;\n }\n\n return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(',')[1]);\n\n // separate out the mime component\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to an ArrayBuffer\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n // write the ArrayBuffer to a blob\n return new Blob([ab], { type: mimeString });\n};\n\n// Returns an array without the rejected item\nvar without = function without(list, rejectedItem) {\n return list.filter(function (item) {\n return item !== rejectedItem;\n }).map(function (item) {\n return item;\n });\n};\n\n// abc-def_ghi -> abcDefGhi\nvar camelize = function camelize(str) {\n return str.replace(/[\\-_](\\w)/g, function (match) {\n return match.charAt(1).toUpperCase();\n });\n};\n\n// Creates an element from string\nDropzone.createElement = function (string) {\n var div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n};\n\n// Tests if given element is inside (or simply is) the container\nDropzone.elementInside = function (element, container) {\n if (element === container) {\n return true;\n } // Coffeescript doesn't support do/while loops\n while (element = element.parentNode) {\n if (element === container) {\n return true;\n }\n }\n return false;\n};\n\nDropzone.getElement = function (el, name) {\n var element = void 0;\n if (typeof el === \"string\") {\n element = document.querySelector(el);\n } else if (el.nodeType != null) {\n element = el;\n }\n if (element == null) {\n throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\n }\n return element;\n};\n\nDropzone.getElements = function (els, name) {\n var el = void 0,\n elements = void 0;\n if (els instanceof Array) {\n elements = [];\n try {\n for (var _iterator36 = els, _isArray36 = true, _i38 = 0, _iterator36 = _isArray36 ? _iterator36 : _iterator36[Symbol.iterator]();;) {\n if (_isArray36) {\n if (_i38 >= _iterator36.length) break;\n el = _iterator36[_i38++];\n } else {\n _i38 = _iterator36.next();\n if (_i38.done) break;\n el = _i38.value;\n }\n\n elements.push(this.getElement(el, name));\n }\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n for (var _iterator37 = document.querySelectorAll(els), _isArray37 = true, _i39 = 0, _iterator37 = _isArray37 ? _iterator37 : _iterator37[Symbol.iterator]();;) {\n if (_isArray37) {\n if (_i39 >= _iterator37.length) break;\n el = _iterator37[_i39++];\n } else {\n _i39 = _iterator37.next();\n if (_i39.done) break;\n el = _i39.value;\n }\n\n elements.push(el);\n }\n } else if (els.nodeType != null) {\n elements = [els];\n }\n\n if (elements == null || !elements.length) {\n throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\n }\n\n return elements;\n};\n\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\nDropzone.confirm = function (question, accepted, rejected) {\n if (window.confirm(question)) {\n return accepted();\n } else if (rejected != null) {\n return rejected();\n }\n};\n\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\nDropzone.isValidFile = function (file, acceptedFiles) {\n if (!acceptedFiles) {\n return true;\n } // If there are no accepted mime types, it's OK\n acceptedFiles = acceptedFiles.split(\",\");\n\n var mimeType = file.type;\n var baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n for (var _iterator38 = acceptedFiles, _isArray38 = true, _i40 = 0, _iterator38 = _isArray38 ? _iterator38 : _iterator38[Symbol.iterator]();;) {\n var _ref35;\n\n if (_isArray38) {\n if (_i40 >= _iterator38.length) break;\n _ref35 = _iterator38[_i40++];\n } else {\n _i40 = _iterator38.next();\n if (_i40.done) break;\n _ref35 = _i40.value;\n }\n\n var validType = _ref35;\n\n validType = validType.trim();\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n return true;\n }\n } else {\n if (mimeType === validType) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// Augment jQuery\nif (typeof jQuery !== 'undefined' && jQuery !== null) {\n jQuery.fn.dropzone = function (options) {\n return this.each(function () {\n return new Dropzone(this, options);\n });\n };\n}\n\nif (typeof module !== 'undefined' && module !== null) {\n module.exports = Dropzone;\n} else {\n window.Dropzone = Dropzone;\n}\n\n// Dropzone file status codes\nDropzone.ADDED = \"added\";\n\nDropzone.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\nDropzone.ACCEPTED = Dropzone.QUEUED;\n\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nvar detectVerticalSquash = function detectVerticalSquash(img) {\n var iw = img.naturalWidth;\n var ih = img.naturalHeight;\n var canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n\n var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),\n data = _ctx$getImageData.data;\n\n // search image edge pixel position in case it is squashed vertically.\n\n\n var sy = 0;\n var ey = ih;\n var py = ih;\n while (py > sy) {\n var alpha = data[(py - 1) * 4 + 3];\n\n if (alpha === 0) {\n ey = py;\n } else {\n sy = py;\n }\n\n py = ey + sy >> 1;\n }\n var ratio = py / ih;\n\n if (ratio === 0) {\n return 1;\n } else {\n return ratio;\n }\n};\n\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n var vertSquashRatio = detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\n\nvar ExifRestore = function () {\n function ExifRestore() {\n _classCallCheck(this, ExifRestore);\n }\n\n _createClass(ExifRestore, null, [{\n key: \"initClass\",\n value: function initClass() {\n this.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n }\n }, {\n key: \"encode64\",\n value: function encode64(input) {\n var output = '';\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = '';\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = '';\n var i = 0;\n while (true) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = '';\n enc1 = enc2 = enc3 = enc4 = '';\n if (!(i < input.length)) {\n break;\n }\n }\n return output;\n }\n }, {\n key: \"restore\",\n value: function restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match('data:image/jpeg;base64,')) {\n return resizedFileBase64;\n }\n var rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', ''));\n var segments = this.slice2Segments(rawImage);\n var image = this.exifManipulation(resizedFileBase64, segments);\n return \"data:image/jpeg;base64,\" + this.encode64(image);\n }\n }, {\n key: \"exifManipulation\",\n value: function exifManipulation(resizedFileBase64, segments) {\n var exifArray = this.getExifArray(segments);\n var newImageArray = this.insertExif(resizedFileBase64, exifArray);\n var aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n }, {\n key: \"getExifArray\",\n value: function getExifArray(segments) {\n var seg = undefined;\n var x = 0;\n while (x < segments.length) {\n seg = segments[x];\n if (seg[0] === 255 & seg[1] === 225) {\n return seg;\n }\n x++;\n }\n return [];\n }\n }, {\n key: \"insertExif\",\n value: function insertExif(resizedFileBase64, exifArray) {\n var imageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');\n var buf = this.decode64(imageData);\n var separatePoint = buf.indexOf(255, 3);\n var mae = buf.slice(0, separatePoint);\n var ato = buf.slice(separatePoint);\n var array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n }, {\n key: \"slice2Segments\",\n value: function slice2Segments(rawImageArray) {\n var head = 0;\n var segments = [];\n while (true) {\n var length;\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\n break;\n }\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\n head += 2;\n } else {\n length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n var endPoint = head + length + 2;\n var seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n if (head > rawImageArray.length) {\n break;\n }\n }\n return segments;\n }\n }, {\n key: \"decode64\",\n value: function decode64(input) {\n var output = '';\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = '';\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = '';\n var i = 0;\n var buf = [];\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n if (base64test.exec(input)) {\n console.warn('There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, \\'+\\', \\'/\\',and \\'=\\'\\nExpect errors in decoding.');\n }\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n while (true) {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n buf.push(chr1);\n if (enc3 !== 64) {\n buf.push(chr2);\n }\n if (enc4 !== 64) {\n buf.push(chr3);\n }\n chr1 = chr2 = chr3 = '';\n enc1 = enc2 = enc3 = enc4 = '';\n if (!(i < input.length)) {\n break;\n }\n }\n return buf;\n }\n }]);\n\n return ExifRestore;\n}();\n\nExifRestore.initClass();\n\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n// @win window reference\n// @fn function reference\nvar contentLoaded = function contentLoaded(win, fn) {\n var done = false;\n var top = true;\n var doc = win.document;\n var root = doc.documentElement;\n var add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n var rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n var pre = doc.addEventListener ? \"\" : \"on\";\n var init = function init(e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n return;\n }\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n if (!done && (done = true)) {\n return fn.call(win, e.type || e);\n }\n };\n\n var poll = function poll() {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n return init(\"poll\");\n };\n\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {}\n if (top) {\n poll();\n }\n }\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n};\n\n// As a single function to be able to write tests.\nDropzone._autoDiscoverFunction = function () {\n if (Dropzone.autoDiscover) {\n return Dropzone.discover();\n }\n};\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n return typeof value !== 'undefined' && value !== null ? transform(value) : undefined;\n}\nfunction __guardMethod__(obj, methodName, transform) {\n if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') {\n return transform(obj, methodName);\n } else {\n return undefined;\n }\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\n * A JavaScript implementation of the SHA family of hashes, as defined in FIPS PUB 180-4 and FIPS PUB 202, as\n * well as the corresponding HMAC implementation as defined in FIPS PUB 198a\n *\n * Copyright 2008-2020 Brian Turek, 1998-2009 Paul Johnston & Contributors\n * Distributed under the BSD License\n * See http://caligatio.github.com/jsSHA/ for more information\n *\n * Two ECMAScript polyfill functions carry the following license:\n *\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,\n * INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n * MERCHANTABLITY OR NON-INFRINGEMENT.\n *\n * See the Apache Version 2.0 License for specific language governing permissions and limitations under the License.\n */\n!function(t,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(t=t||self).jsSHA=r()}(this,(function(){\"use strict\";var t=function(r,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])})(r,n)};var r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";function n(t,r,n,i){var e,o,u,s=r||[0],f=(n=n||0)>>>3,h=-1===i?3:0;for(e=0;e<t.length;e+=1)o=(u=e+f)>>>2,s.length<=o&&s.push(0),s[o]|=t[e]<<8*(h+i*(u%4));return{value:s,binLen:8*t.length+n}}function i(t,i,e){switch(i){case\"UTF8\":case\"UTF16BE\":case\"UTF16LE\":break;default:throw new Error(\"encoding must be UTF8, UTF16BE, or UTF16LE\")}switch(t){case\"HEX\":return function(t,r,n){return function(t,r,n,i){var e,o,u,s;if(0!=t.length%2)throw new Error(\"String of HEX type must be in byte increments\");var f=r||[0],h=(n=n||0)>>>3,a=-1===i?3:0;for(e=0;e<t.length;e+=2){if(o=parseInt(t.substr(e,2),16),isNaN(o))throw new Error(\"String of HEX type contains invalid characters\");for(u=(s=(e>>>1)+h)>>>2;f.length<=u;)f.push(0);f[u]|=o<<8*(a+i*(s%4))}return{value:f,binLen:4*t.length+n}}(t,r,n,e)};case\"TEXT\":return function(t,r,n){return function(t,r,n,i,e){var o,u,s,f,h,a,c,w,E=0,v=n||[0],A=(i=i||0)>>>3;if(\"UTF8\"===r)for(c=-1===e?3:0,s=0;s<t.length;s+=1)for(u=[],128>(o=t.charCodeAt(s))?u.push(o):2048>o?(u.push(192|o>>>6),u.push(128|63&o)):55296>o||57344<=o?u.push(224|o>>>12,128|o>>>6&63,128|63&o):(s+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(s)),u.push(240|o>>>18,128|o>>>12&63,128|o>>>6&63,128|63&o)),f=0;f<u.length;f+=1){for(h=(a=E+A)>>>2;v.length<=h;)v.push(0);v[h]|=u[f]<<8*(c+e*(a%4)),E+=1}else for(c=-1===e?2:0,w=\"UTF16LE\"===r&&1!==e||\"UTF16LE\"!==r&&1===e,s=0;s<t.length;s+=1){for(o=t.charCodeAt(s),!0===w&&(o=(f=255&o)<<8|o>>>8),h=(a=E+A)>>>2;v.length<=h;)v.push(0);v[h]|=o<<8*(c+e*(a%4)),E+=2}return{value:v,binLen:8*E+i}}(t,i,r,n,e)};case\"B64\":return function(t,n,i){return function(t,n,i,e){var o,u,s,f,h,a,c=0,w=n||[0],E=(i=i||0)>>>3,v=-1===e?3:0,A=t.indexOf(\"=\");if(-1===t.search(/^[a-zA-Z0-9=+/]+$/))throw new Error(\"Invalid character in base-64 string\");if(t=t.replace(/=/g,\"\"),-1!==A&&A<t.length)throw new Error(\"Invalid '=' found in base-64 string\");for(o=0;o<t.length;o+=4){for(f=t.substr(o,4),s=0,u=0;u<f.length;u+=1)s|=r.indexOf(f.charAt(u))<<18-6*u;for(u=0;u<f.length-1;u+=1){for(h=(a=c+E)>>>2;w.length<=h;)w.push(0);w[h]|=(s>>>16-8*u&255)<<8*(v+e*(a%4)),c+=1}}return{value:w,binLen:8*c+i}}(t,n,i,e)};case\"BYTES\":return function(t,r,n){return function(t,r,n,i){var e,o,u,s,f=r||[0],h=(n=n||0)>>>3,a=-1===i?3:0;for(o=0;o<t.length;o+=1)e=t.charCodeAt(o),u=(s=o+h)>>>2,f.length<=u&&f.push(0),f[u]|=e<<8*(a+i*(s%4));return{value:f,binLen:8*t.length+n}}(t,r,n,e)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(\"ARRAYBUFFER not supported by this environment\")}return function(t,r,i){return function(t,r,i,e){return n(new Uint8Array(t),r,i,e)}(t,r,i,e)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(\"UINT8ARRAY not supported by this environment\")}return function(t,r,i){return n(t,r,i,e)};default:throw new Error(\"format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function e(t,n,i,e){switch(t){case\"HEX\":return function(t){return function(t,r,n,i){var e,o,u=\"\",s=r/8,f=-1===n?3:0;for(e=0;e<s;e+=1)o=t[e>>>2]>>>8*(f+n*(e%4)),u+=\"0123456789abcdef\".charAt(o>>>4&15)+\"0123456789abcdef\".charAt(15&o);return i.outputUpper?u.toUpperCase():u}(t,n,i,e)};case\"B64\":return function(t){return function(t,n,i,e){var o,u,s,f,h,a=\"\",c=n/8,w=-1===i?3:0;for(o=0;o<c;o+=3)for(f=o+1<c?t[o+1>>>2]:0,h=o+2<c?t[o+2>>>2]:0,s=(t[o>>>2]>>>8*(w+i*(o%4))&255)<<16|(f>>>8*(w+i*((o+1)%4))&255)<<8|h>>>8*(w+i*((o+2)%4))&255,u=0;u<4;u+=1)a+=8*o+6*u<=n?r.charAt(s>>>6*(3-u)&63):e.b64Pad;return a}(t,n,i,e)};case\"BYTES\":return function(t){return function(t,r,n){var i,e,o=\"\",u=r/8,s=-1===n?3:0;for(i=0;i<u;i+=1)e=t[i>>>2]>>>8*(s+n*(i%4))&255,o+=String.fromCharCode(e);return o}(t,n,i)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(\"ARRAYBUFFER not supported by this environment\")}return function(t){return function(t,r,n){var i,e=r/8,o=new ArrayBuffer(e),u=new Uint8Array(o),s=-1===n?3:0;for(i=0;i<e;i+=1)u[i]=t[i>>>2]>>>8*(s+n*(i%4))&255;return o}(t,n,i)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(\"UINT8ARRAY not supported by this environment\")}return function(t){return function(t,r,n){var i,e=r/8,o=-1===n?3:0,u=new Uint8Array(e);for(i=0;i<e;i+=1)u[i]=t[i>>>2]>>>8*(o+n*(i%4))&255;return u}(t,n,i)};default:throw new Error(\"format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function o(t){var r={outputUpper:!1,b64Pad:\"=\",outputLen:-1},n=t||{},i=\"Output length must be a multiple of 8\";if(r.outputUpper=n.outputUpper||!1,n.b64Pad&&(r.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw new Error(i);r.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw new Error(i);r.outputLen=n.shakeLen}if(\"boolean\"!=typeof r.outputUpper)throw new Error(\"Invalid outputUpper formatting option\");if(\"string\"!=typeof r.b64Pad)throw new Error(\"Invalid b64Pad formatting option\");return r}function u(t,r){return t<<r|t>>>32-r}function s(t,r,n){return t^r^n}function f(t,r,n){return t&r^t&n^r&n}function h(t,r){var n=(65535&t)+(65535&r);return(65535&(t>>>16)+(r>>>16)+(n>>>16))<<16|65535&n}function a(t,r,n,i,e){var o=(65535&t)+(65535&r)+(65535&n)+(65535&i)+(65535&e);return(65535&(t>>>16)+(r>>>16)+(n>>>16)+(i>>>16)+(e>>>16)+(o>>>16))<<16|65535&o}function c(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function w(t,r){var n,i,e,o,c,w,E,v,A=[];for(n=r[0],i=r[1],e=r[2],o=r[3],c=r[4],E=0;E<80;E+=1)A[E]=E<16?t[E]:u(A[E-3]^A[E-8]^A[E-14]^A[E-16],1),w=E<20?a(u(n,5),(v=i)&e^~v&o,c,1518500249,A[E]):E<40?a(u(n,5),s(i,e,o),c,1859775393,A[E]):E<60?a(u(n,5),f(i,e,o),c,2400959708,A[E]):a(u(n,5),s(i,e,o),c,3395469782,A[E]),c=o,o=e,e=u(i,30),i=n,n=w;return r[0]=h(n,r[0]),r[1]=h(i,r[1]),r[2]=h(e,r[2]),r[3]=h(o,r[3]),r[4]=h(c,r[4]),r}function E(t,r,n,i){for(var e,o=15+(r+65>>>9<<4),u=r+n;t.length<=o;)t.push(0);for(t[r>>>5]|=128<<24-r%32,t[o]=4294967295&u,t[o-1]=u/4294967296|0,e=0;e<t.length;e+=16)i=w(t.slice(e,e+16),i);return i}return function(r){function n(t,n,e){var o=this;if(\"SHA-1\"!==t)throw new Error(\"Chosen SHA variant is not supported\");var u=e||{};return(o=r.call(this,t,n,e)||this).t=!0,o.i=o.o,o.u=-1,o.s=i(o.h,o.v,o.u),o.A=w,o.p=function(t){return t.slice()},o.l=c,o.R=E,o.U=[1732584193,4023233417,2562383102,271733878,3285377520],o.T=512,o.m=160,o.F=!1,u.hmacKey&&o.B(function(t,r,n,e){var o=t+\" must include a value and format\";if(!r){if(!e)throw new Error(o);return e}if(void 0===r.value||!r.format)throw new Error(o);return i(r.format,r.encoding||\"UTF8\",n)(r.value)}(\"hmacKey\",u.hmacKey,o.u)),o}return function(r,n){function i(){this.constructor=r}t(r,n),r.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}(n,r),n}(function(){function t(t,r,n){var i=n||{};if(this.h=r,this.v=i.encoding||\"UTF8\",this.numRounds=i.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error(\"numRounds must a integer >= 1\");this.g=t,this.Y=[],this.I=0,this.C=!1,this.H=0,this.L=!1,this.N=[],this.S=[]}return t.prototype.update=function(t){var r,n=0,i=this.T>>>5,e=this.s(t,this.Y,this.I),o=e.binLen,u=e.value,s=o>>>5;for(r=0;r<s;r+=i)n+this.T<=o&&(this.U=this.A(u.slice(r,r+i),this.U),n+=this.T);this.H+=n,this.Y=u.slice(n>>>5),this.I=o%this.T,this.C=!0},t.prototype.getHash=function(t,r){var n,i,u=this.m,s=o(r);if(!0===this.F){if(-1===s.outputLen)throw new Error(\"Output length must be specified in options\");u=s.outputLen}var f=e(t,u,this.u,s);if(!0===this.L&&this.i)return f(this.i(s));for(i=this.R(this.Y.slice(),this.I,this.H,this.p(this.U),u),n=1;n<this.numRounds;n+=1)!0===this.F&&u%32!=0&&(i[i.length-1]&=16777215>>>24-u%32),i=this.R(i,u,0,this.l(this.g),u);return f(i)},t.prototype.setHMACKey=function(t,r,n){if(!0!==this.t)throw new Error(\"Variant does not support HMAC\");if(!0===this.C)throw new Error(\"Cannot set MAC key after calling update\");var e=i(r,(n||{}).encoding||\"UTF8\",this.u);this.B(e(t))},t.prototype.B=function(t){var r,n=this.T>>>3,i=n/4-1;if(1!==this.numRounds)throw new Error(\"Cannot set numRounds with MAC\");if(!0===this.L)throw new Error(\"MAC key already set\");for(n<t.binLen/8&&(t.value=this.R(t.value,t.binLen,0,this.l(this.g),this.m));t.value.length<=i;)t.value.push(0);for(r=0;r<=i;r+=1)this.N[r]=909522486^t.value[r],this.S[r]=1549556828^t.value[r];this.U=this.A(this.N,this.U),this.H=this.T,this.L=!0},t.prototype.getHMAC=function(t,r){var n=o(r);return e(t,this.m,this.u,n)(this.o())},t.prototype.o=function(){var t;if(!1===this.L)throw new Error(\"Cannot call getHMAC without first setting MAC key\");var r=this.R(this.Y.slice(),this.I,this.H,this.p(this.U),this.m);return t=this.A(this.S,this.l(this.g)),t=this.R(r,this.m,this.T,t,this.m)},t}())}));\n","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tConvert strings of text into linkable HTML text\n */\n\nvar Options = options.Options;\n\n\nfunction escapeText(text) {\n\treturn text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\n\nfunction escapeAttr(href) {\n\treturn href.replace(/\"/g, '"');\n}\n\nfunction attributesToString(attributes) {\n\tif (!attributes) {\n\t\treturn '';\n\t}\n\tvar result = [];\n\n\tfor (var attr in attributes) {\n\t\tvar val = attributes[attr] + '';\n\t\tresult.push(attr + '=\"' + escapeAttr(val) + '\"');\n\t}\n\treturn result.join(' ');\n}\n\nfunction linkifyStr(str) {\n\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\topts = new Options(opts);\n\n\tvar tokens = tokenize(str);\n\tvar result = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push('<br>\\n');\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(escapeText(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\tvar link = '<' + tagName + ' href=\"' + escapeAttr(formattedHref) + '\"';\n\n\t\tif (className) {\n\t\t\tlink += ' class=\"' + escapeAttr(className) + '\"';\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink += ' target=\"' + escapeAttr(target) + '\"';\n\t\t}\n\n\t\tif (attributes) {\n\t\t\tlink += ' ' + attributesToString(attributes);\n\t\t}\n\n\t\tlink += '>' + escapeText(formatted) + '</' + tagName + '>';\n\t\tresult.push(link);\n\t}\n\n\treturn result.join('');\n}\n\nif (!String.prototype.linkify) {\n\ttry {\n\t\tObject.defineProperty(String.prototype, 'linkify', {\n\t\t\tset: function set() {},\n\t\t\tget: function get() {\n\t\t\t\treturn function linkify(opts) {\n\t\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\t// IE 8 doesn't like Object.defineProperty on non-DOM objects\n\t\tif (!String.prototype.linkify) {\n\t\t\tString.prototype.linkify = function (opts) {\n\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t};\n\t\t}\n\t}\n}\n\nexports.default = linkifyStr;","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _multi = require('./tokens/multi');\n\nvar MULTI_TOKENS = _interopRequireWildcard(_multi);\n\nvar _text = require('./tokens/text');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main parser\n*/\n\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.TokenState(tokenClass);\n};\n\n// The universal starting state.\nvar S_START = makeState();\n\n// Intermediate states for URLs. Note that domains that begin with a protocol\n// are treated slighly differently from those that don't.\nvar S_PROTOCOL = makeState(); // e.g., 'http:'\nvar S_MAILTO = makeState(); // 'mailto:'\nvar S_PROTOCOL_SLASH = makeState(); // e.g., '/', 'http:/''\nvar S_PROTOCOL_SLASH_SLASH = makeState(); // e.g., '//', 'http://'\nvar S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\nvar S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\nvar S_TLD = makeState(_multi.URL); // (A) Simplest possible URL with no query string\nvar S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\nvar S_TLD_PORT = makeState(_multi.URL); // TLD followed by a port number\nvar S_URL = makeState(_multi.URL); // Long URL with optional port and maybe query string\nvar S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\nvar S_URL_OPENBRACE = makeState(); // URL followed by {\nvar S_URL_OPENBRACKET = makeState(); // URL followed by [\nvar S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\nvar S_URL_OPENPAREN = makeState(); // URL followed by (\nvar S_URL_OPENBRACE_Q = makeState(_multi.URL); // URL followed by { and some symbols that the URL can end it\nvar S_URL_OPENBRACKET_Q = makeState(_multi.URL); // URL followed by [ and some symbols that the URL can end it\nvar S_URL_OPENANGLEBRACKET_Q = makeState(_multi.URL); // URL followed by < and some symbols that the URL can end it\nvar S_URL_OPENPAREN_Q = makeState(_multi.URL); // URL followed by ( and some symbols that the URL can end it\nvar S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\nvar S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\nvar S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\nvar S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\nvar S_EMAIL = makeState(_multi.EMAIL); // (C) Possible email address (could have more tlds)\nvar S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\nvar S_EMAIL_PORT = makeState(_multi.EMAIL); // (C) Email address with a port\nvar S_MAILTO_EMAIL = makeState(_multi.MAILTOEMAIL); // Email that begins with the mailto prefix (D)\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\nvar S_LOCALPART = makeState(); // Local part of the email address\nvar S_LOCALPART_AT = makeState(); // Local part of the email address plus @\nvar S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\nvar S_NL = makeState(_multi.NL); // single new line\n\n// Make path from start to protocol (with '//')\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\n\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\n\n// The very first potential domain name\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\n\n// Force URL for protocol followed by anything sane\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\n\n// Account for dots and hyphens\n// hyphens are usually parts of domain names\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Hyphen can jump back to a domain name\n\n// After the first domain and a dot, we can find either a URL or another domain\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\n\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\n\n// S_TLD accepts! But the URL could be longer, try to find a match greedily\n// The `run` function should be able to \"rollback\" to the accepting state\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Become real URLs after `SLASH` or `COLON NUM SLASH`\n// Here PSS and non-PSS converge\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\n\n// Types of characters the URL can definitely end in\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\n\n// Types of tokens that can follow a URL and be part of the query string\n// but cannot be the very last characters\n// Characters that cannot appear in the URL at all should be excluded\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\n\n// These states are responsible primarily for determining whether or not to\n// include the final round bracket.\n\n// URL, followed by an opening bracket\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// URL with extra symbols at the end, followed by an opening bracket\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// Closing bracket component. This character WILL be included in the URL\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\n\n// URL that beings with an opening bracket, followed by a symbols.\n// Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n// has a single opening bracket for some reason).\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// URL that begins with an opening bracket, followed by some symbols\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\n\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// Account for the query string\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\n\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\n\n// Email address-specific state definitions\n// Note: We are not allowing '/' in email addresses since this would interfere\n// with real URLs\n\n// For addresses with the mailto prefix\n// 'mailto:' followed by anything sane is a valid email\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\n\n// Greedily get more potential valid email values\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n\n// For addresses without the mailto prefix\n// Tokens allowed in the localpart of the email\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\n\n// Some of the tokens in `localpartAccepting` are already accounted for here and\n// will not be overwritten (don't worry)\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\n\n// Okay we're on a localpart. Now what?\n// TODO: IP addresses and what if the email starts with numbers?\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT) // close to an email address now\n.on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\n// States following `@` defined above\n\nvar run = function run(tokens) {\n\tvar len = tokens.length;\n\tvar cursor = 0;\n\tvar multis = [];\n\tvar textTokens = [];\n\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar secondState = null;\n\t\tvar nextState = null;\n\t\tvar multiLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && !(secondState = state.next(tokens[cursor]))) {\n\t\t\t// Starting tokens with nowhere to jump to.\n\t\t\t// Consider these to be just plain text\n\t\t\ttextTokens.push(tokens[cursor++]);\n\t\t}\n\n\t\twhile (cursor < len && (nextState = secondState || state.next(tokens[cursor]))) {\n\n\t\t\t// Get the next state\n\t\t\tsecondState = null;\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\tcursor++;\n\t\t\tmultiLength++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\n\t\t\t// No accepting state was found, part of a regular text token\n\t\t\t// Add all the tokens we looked at to the text tokens array\n\t\t\tfor (var i = cursor - multiLength; i < cursor; i++) {\n\t\t\t\ttextTokens.push(tokens[i]);\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Accepting state!\n\n\t\t\t// First close off the textTokens (if available)\n\t\t\tif (textTokens.length > 0) {\n\t\t\t\tmultis.push(new _multi.TEXT(textTokens));\n\t\t\t\ttextTokens = [];\n\t\t\t}\n\n\t\t\t// Roll back to the latest accepting state\n\t\t\tcursor -= sinceAccepts;\n\t\t\tmultiLength -= sinceAccepts;\n\n\t\t\t// Create a new multitoken\n\t\t\tvar MULTI = latestAccepting.emit();\n\t\t\tmultis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n\t\t}\n\t}\n\n\t// Finally close off the textTokens (if available)\n\tif (textTokens.length > 0) {\n\t\tmultis.push(new _multi.TEXT(textTokens));\n\t}\n\n\treturn multis;\n};\n\nexports.State = _state.TokenState;\nexports.TOKENS = MULTI_TOKENS;\nexports.run = run;\nexports.start = S_START;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _text = require('./tokens/text');\n\nvar TOKENS = _interopRequireWildcard(_text);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tlds = 'aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw'.split('|'); // macro, see gulpfile.js\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar NUMBERS = '0123456789'.split('');\nvar ALPHANUM = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nvar WHITESPACE = [' ', '\\f', '\\r', '\\t', '\\v', '\\xA0', '\\u1680', '\\u180E']; // excluding line breaks\n\nvar domainStates = []; // states that jump to DOMAIN on /[a-z0-9]/\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.CharacterState(tokenClass);\n};\n\n// Frequently used states\nvar S_START = makeState();\nvar S_NUM = makeState(_text.NUM);\nvar S_DOMAIN = makeState(_text.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\nvar S_WS = makeState(_text.WS);\n\n// States for special URL symbols\nS_START.on('@', makeState(_text.AT)).on('.', makeState(_text.DOT)).on('+', makeState(_text.PLUS)).on('#', makeState(_text.POUND)).on('?', makeState(_text.QUERY)).on('/', makeState(_text.SLASH)).on('_', makeState(_text.UNDERSCORE)).on(':', makeState(_text.COLON)).on('{', makeState(_text.OPENBRACE)).on('[', makeState(_text.OPENBRACKET)).on('<', makeState(_text.OPENANGLEBRACKET)).on('(', makeState(_text.OPENPAREN)).on('}', makeState(_text.CLOSEBRACE)).on(']', makeState(_text.CLOSEBRACKET)).on('>', makeState(_text.CLOSEANGLEBRACKET)).on(')', makeState(_text.CLOSEPAREN)).on('&', makeState(_text.AMPERSAND)).on([',', ';', '!', '\"', '\\''], makeState(_text.PUNCTUATION));\n\n// Whitespace jumps\n// Tokens of only non-newline whitespace are arbitrarily long\nS_START.on('\\n', makeState(_text.NL)).on(WHITESPACE, S_WS);\n\n// If any whitespace except newline, more whitespace!\nS_WS.on(WHITESPACE, S_WS);\n\n// Generates states for top-level domains\n// Note that this is most accurate when tlds are in alphabetical order\nfor (var i = 0; i < tlds.length; i++) {\n\tvar newStates = (0, _state.stateify)(tlds[i], S_START, _text.TLD, _text.DOMAIN);\n\tdomainStates.push.apply(domainStates, newStates);\n}\n\n// Collect the states generated by different protocls\nvar partialProtocolFileStates = (0, _state.stateify)('file', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolFtpStates = (0, _state.stateify)('ftp', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolHttpStates = (0, _state.stateify)('http', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state.stateify)('mailto', S_START, _text.DOMAIN, _text.DOMAIN);\n\n// Add the states to the array of DOMAINeric states\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\n\n// Protocol states\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState(_text.DOMAIN);\nvar S_FULL_PROTOCOL = makeState(_text.PROTOCOL); // Full protocol ends with COLON\nvar S_FULL_MAILTO = makeState(_text.MAILTO); // Mailto ends with COLON\n\n// Secure protocols (end with 's')\nS_PROTOCOL_FTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\nS_PROTOCOL_HTTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\ndomainStates.push(S_PROTOCOL_SECURE);\n\n// Become protocol tokens after a COLON\nS_PROTOCOL_FILE.on(':', S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(':', S_FULL_PROTOCOL);\nS_MAILTO.on(':', S_FULL_MAILTO);\n\n// Localhost\nvar partialLocalhostStates = (0, _state.stateify)('localhost', S_START, _text.LOCALHOST, _text.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\n\n// Everything else\n// DOMAINs make more DOMAINs\n// Number and character transitions\nS_START.on(NUMBERS, S_NUM);\nS_NUM.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN); // number becomes DOMAIN\n\nS_DOMAIN.on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n\n// All the generated states should have a jump to DOMAIN\nfor (var _i = 0; _i < domainStates.length; _i++) {\n\tdomainStates[_i].on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n}\n\nS_DOMAIN_HYPHEN.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN).on(ALPHANUM, S_DOMAIN);\n\n// Set default transition\nS_START.defaultTransition = makeState(_text.SYM);\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {String} str Input string to scan\n\t@return {Array} Array of TOKEN instances\n*/\nvar run = function run(str) {\n\n\t// The state machine only looks at lowercase strings.\n\t// This selective `toLowerCase` is used because lowercasing the entire\n\t// string causes the length and character position to vary in some in some\n\t// non-English strings. This happens only on V8-based runtimes.\n\tvar lowerStr = str.replace(/[A-Z]/g, function (c) {\n\t\treturn c.toLowerCase();\n\t});\n\tvar len = str.length;\n\tvar tokens = []; // return value\n\n\tvar cursor = 0;\n\n\t// Tokenize the string\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar nextState = null;\n\t\tvar tokenLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && (nextState = state.next(lowerStr[cursor]))) {\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\ttokenLength++;\n\t\t\tcursor++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\t\t\tcontinue;\n\t\t} // Should never happen\n\n\t\t// Roll back to the latest accepting state\n\t\tcursor -= sinceAccepts;\n\t\ttokenLength -= sinceAccepts;\n\n\t\t// Get the class for the new token\n\t\tvar TOKEN = latestAccepting.emit(); // Current token class\n\n\t\t// No more jumps, just make a new token\n\t\ttokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n\t}\n\n\treturn tokens;\n};\n\nvar start = S_START;\nexports.State = _state.CharacterState;\nexports.TOKENS = TOKENS;\nexports.run = run;\nexports.start = start;","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","'use strict';\n\nexports.__esModule = true;\nexports.URL = exports.TEXT = exports.NL = exports.EMAIL = exports.MAILTOEMAIL = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\nvar _text = require('./text');\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n// Is the given token a valid domain token?\n// Should nums be included here?\nfunction isDomainToken(token) {\n\treturn token instanceof _text.DOMAIN || token instanceof _text.TLD;\n}\n\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@abstract\n*/\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\n\nMultiToken.prototype = {\n\t/**\n \tString representing the type for this token\n \t@property type\n \t@default 'TOKEN'\n */\n\ttype: 'token',\n\n\t/**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n\tisLink: false,\n\n\t/**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {String}\n */\n\ttoString: function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.v.length; i++) {\n\t\t\tresult.push(this.v[i].toString());\n\t\t}\n\t\treturn result.join('');\n\t},\n\n\n\t/**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\treturn this.toString();\n\t},\n\n\n\t/**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {String} [protocol] `'http'` by default\n \t@return {Object}\n */\n\ttoObject: function toObject() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue: this.toString(),\n\t\t\thref: this.toHref(protocol)\n\t\t};\n\t}\n};\n\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MAILTO\n\t@extends MultiToken\n*/\nvar MAILTOEMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true\n});\n\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class EMAIL\n\t@extends MultiToken\n*/\nvar EMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true,\n\ttoHref: function toHref() {\n\t\treturn 'mailto:' + this.toString();\n\t}\n});\n\n/**\n\tRepresents some plain text\n\t@class TEXT\n\t@extends MultiToken\n*/\nvar TEXT = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'text' });\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class NL\n\t@extends MultiToken\n*/\nvar NL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'nl' });\n\n/**\n\tRepresents a list of tokens making up a valid URL\n\t@class URL\n\t@extends MultiToken\n*/\nvar URL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'url',\n\tisLink: true,\n\n\t/**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {String} protocol\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\tvar hasProtocol = false;\n\t\tvar hasSlashSlash = false;\n\t\tvar tokens = this.v;\n\t\tvar result = [];\n\t\tvar i = 0;\n\n\t\t// Make the first part of the domain lowercase\n\t\t// Lowercase protocol\n\t\twhile (tokens[i] instanceof _text.PROTOCOL) {\n\t\t\thasProtocol = true;\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Skip slash-slash\n\t\twhile (tokens[i] instanceof _text.SLASH) {\n\t\t\thasSlashSlash = true;\n\t\t\tresult.push(tokens[i].toString());\n\t\t\ti++;\n\t\t}\n\n\t\t// Lowercase all other characters in the domain\n\t\twhile (isDomainToken(tokens[i])) {\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Leave all other characters as they were written\n\t\tfor (; i < tokens.length; i++) {\n\t\t\tresult.push(tokens[i].toString());\n\t\t}\n\n\t\tresult = result.join('');\n\n\t\tif (!(hasProtocol || hasSlashSlash)) {\n\t\t\tresult = protocol + '://' + result;\n\t\t}\n\n\t\treturn result;\n\t},\n\thasProtocol: function hasProtocol() {\n\t\treturn this.v[0] instanceof _text.PROTOCOL;\n\t}\n});\n\nexports.Base = MultiToken;\nexports.MAILTOEMAIL = MAILTOEMAIL;\nexports.EMAIL = EMAIL;\nexports.NL = NL;\nexports.TEXT = TEXT;\nexports.URL = URL;","'use strict';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","\"use strict\";\n\nexports.__esModule = true;\nexports.inherits = inherits;\nfunction inherits(parent, child) {\n\tvar props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\tvar extended = Object.create(parent.prototype);\n\tfor (var p in props) {\n\t\textended[p] = props[p];\n\t}\n\textended.constructor = child;\n\tchild.prototype = extended;\n\treturn child;\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar defaults = {\n\tdefaultProtocol: 'http',\n\tevents: null,\n\tformat: noop,\n\tformatHref: noop,\n\tnl2br: false,\n\ttagName: 'a',\n\ttarget: typeToTarget,\n\tvalidate: true,\n\tignoreTags: [],\n\tattributes: null,\n\tclassName: 'linkified' // Deprecated value - no default class will be provided in the future\n};\n\nexports.defaults = defaults;\nexports.Options = Options;\nexports.contains = contains;\n\n\nfunction Options(opts) {\n\topts = opts || {};\n\n\tthis.defaultProtocol = opts.hasOwnProperty('defaultProtocol') ? opts.defaultProtocol : defaults.defaultProtocol;\n\tthis.events = opts.hasOwnProperty('events') ? opts.events : defaults.events;\n\tthis.format = opts.hasOwnProperty('format') ? opts.format : defaults.format;\n\tthis.formatHref = opts.hasOwnProperty('formatHref') ? opts.formatHref : defaults.formatHref;\n\tthis.nl2br = opts.hasOwnProperty('nl2br') ? opts.nl2br : defaults.nl2br;\n\tthis.tagName = opts.hasOwnProperty('tagName') ? opts.tagName : defaults.tagName;\n\tthis.target = opts.hasOwnProperty('target') ? opts.target : defaults.target;\n\tthis.validate = opts.hasOwnProperty('validate') ? opts.validate : defaults.validate;\n\tthis.ignoreTags = [];\n\n\t// linkAttributes and linkClass is deprecated\n\tthis.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n\tthis.className = opts.hasOwnProperty('className') ? opts.className : opts.linkClass || defaults.className;\n\n\t// Make all tags names upper case\n\tvar ignoredTags = opts.hasOwnProperty('ignoreTags') ? opts.ignoreTags : defaults.ignoreTags;\n\tfor (var i = 0; i < ignoredTags.length; i++) {\n\t\tthis.ignoreTags.push(ignoredTags[i].toUpperCase());\n\t}\n}\n\nOptions.prototype = {\n\t/**\n * Given the token, return all options for how it should be displayed\n */\n\tresolve: function resolve(token) {\n\t\tvar href = token.toHref(this.defaultProtocol);\n\t\treturn {\n\t\t\tformatted: this.get('format', token.toString(), token),\n\t\t\tformattedHref: this.get('formatHref', href, token),\n\t\t\ttagName: this.get('tagName', href, token),\n\t\t\tclassName: this.get('className', href, token),\n\t\t\ttarget: this.get('target', href, token),\n\t\t\tevents: this.getObject('events', href, token),\n\t\t\tattributes: this.getObject('attributes', href, token)\n\t\t};\n\t},\n\n\n\t/**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n\tcheck: function check(token) {\n\t\treturn this.get('validate', token.toString(), token);\n\t},\n\n\n\t// Private methods\n\n\t/**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {String} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n\tget: function get(key, operator, token) {\n\t\tvar optionValue = void 0,\n\t\t option = this[key];\n\t\tif (!option) {\n\t\t\treturn option;\n\t\t}\n\n\t\tswitch (typeof option === 'undefined' ? 'undefined' : _typeof(option)) {\n\t\t\tcase 'function':\n\t\t\t\treturn option(operator, token.type);\n\t\t\tcase 'object':\n\t\t\t\toptionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n\t\t\t\treturn typeof optionValue === 'function' ? optionValue(operator, token.type) : optionValue;\n\t\t}\n\n\t\treturn option;\n\t},\n\tgetObject: function getObject(key, operator, token) {\n\t\tvar option = this[key];\n\t\treturn typeof option === 'function' ? option(operator, token.type) : option;\n\t}\n};\n\n/**\n * Quick indexOf replacement for checking the ignoreTags option\n */\nfunction contains(arr, value) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === value) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction noop(val) {\n\treturn val;\n}\n\nfunction typeToTarget(href, type) {\n\treturn type === 'url' ? '_blank' : null;\n}","module.exports = require('./lib/linkify-string').default;\n","function defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = memoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.dependencies = dependencies;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nexport var createSelector = createSelectorCreator(defaultMemoize);\n\nexport function createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : ''\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && self.location.href ? self.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","import { Radio } from 'backbone';\r\nimport { EventFirehose } from 'libs/analytics/constants/EventFirehose';\r\nimport { GlobalChannels } from 'libs/analytics/constants/GlobalChannels';\r\nimport { AnalyticsEvent, AnalyticsDataPayload } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { AnalyticsEventType, ActionContext, EventVersion } from 'libs/analytics/interfaces';\r\n\r\nexport const Analytics = {\r\n\r\n /**\r\n * Push/emit all events along the analytics firehose\r\n * @param eventType\r\n * @param data Data to be passed to AnalyticsClient\r\n */\r\n log<TType extends AnalyticsEventType, TData extends AnalyticsDataPayload>\r\n (eventType: TType, data: TData, actionContext?: ActionContext, eventVersion?: EventVersion): void {\r\n const channel = Radio.channel(GlobalChannels.ANALYTICS);\r\n channel.trigger(EventFirehose.Inlet,\r\n new AnalyticsEvent<TType, TData>(eventType, data, actionContext, eventVersion));\r\n },\r\n};\r\n","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\n\r\nimport {\r\n LocationContext, EntityType, ActionContext, UserAction,\r\n AnalyticsOptions, ActionDescriptor, InteractionTypeDescriptor,\r\n SearchQueryType, InteractionType\r\n} from 'libs/analytics/interfaces';\r\nimport { ContextService } from 'libs/analytics/services/ContextService';\r\n\r\nimport { Analytics } from './Analytics';\r\n\r\nfunction getCurrentProductArea(): string {\r\n const { appLink } = ContextService.getCurrentContext();\r\n\r\n if (!_.isObject(appLink))\r\n Core.ErrorHelper.throw(new DevError('Applink does not exist. Check current context.'));\r\n\r\n return colonCaseToKebabCase(appLink.application);\r\n}\r\n\r\nfunction getActionContext(options: AnalyticsOptions = {}): ActionContext {\r\n const { location, entity, workflowPhase = null, descriptor = null } = options;\r\n\r\n if (!location)\r\n Core.ErrorHelper.throw(new DevError(`location must be set.`));\r\n\r\n if (!entity)\r\n Core.ErrorHelper.throw(new DevError(`entity must be set.`));\r\n\r\n return {\r\n productArea: getCurrentProductArea(),\r\n location,\r\n entity,\r\n descriptor,\r\n workflowPhase\r\n };\r\n}\r\n\r\nfunction isValidData(data: ObjectHash | ObjectHash[]): boolean {\r\n // When logging a collection, all child entities must be objects\r\n if (_.isArray(data) && _.every(data, (val: any) => _.isObject(val)))\r\n return true;\r\n\r\n if (_.isObject(data))\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nfunction getCurrentLocation(): string {\r\n return Core.LocationUtils.GetCurrentPath() + Core.LocationUtils.GetCurrentQueryString();\r\n}\r\n\r\n// For converting applink strings to kebab case e.g. \"content:updates\" -> \"content-updates\"\r\nfunction colonCaseToKebabCase(app: string): string {\r\n return app.replace(':', '-');\r\n}\r\n\r\nexport const AnalyticsHelper = {\r\n logUserAction(data: ObjectHash | ObjectHash[], analyticsOptions: AnalyticsOptions): void {\r\n if (!isValidData(data) || !_.isObject(analyticsOptions)) return;\r\n\r\n const { userAction, action, eventVersion } = AnalyticsHelper.buildUserActionEvent(analyticsOptions);\r\n\r\n Analytics.log(userAction, data, action, eventVersion);\r\n },\r\n\r\n logNavigate(appLink: Core.AppLink, options: ObjectHash): void {\r\n const data = {\r\n currentLocation: getCurrentLocation(),\r\n appLink,\r\n ...options\r\n };\r\n\r\n Analytics.log(UserAction.Navigate, data);\r\n },\r\n\r\n mergeOptions(baseOptions: AnalyticsOptions, newOptions: AnalyticsOptions): AnalyticsOptions {\r\n return _.extend({}, baseOptions, newOptions);\r\n },\r\n\r\n buildActionContext(options: AnalyticsOptions = {}): ActionContext {\r\n return getActionContext(options);\r\n },\r\n\r\n buildUserActionEvent(options: AnalyticsOptions = {}): ObjectHash {\r\n const { actionType, eventVersion } = options;\r\n\r\n const userAction: UserAction = actionType;\r\n const action: ActionContext = getActionContext(options);\r\n\r\n return { userAction, action, eventVersion };\r\n },\r\n\r\n buildCurrentLocation(): string {\r\n return getCurrentLocation();\r\n },\r\n\r\n /**\r\n * Search logging helpers\r\n */\r\n\r\n /**\r\n * Create a search event that is depenedent on whether we page loaded into search\r\n * or used the search bar directly.\r\n */\r\n buildSearchEvent(query: string, descriptor: ActionDescriptor): ObjectHash {\r\n return {\r\n data: { query },\r\n action: getActionContext({ entity: EntityType.Video, location: LocationContext.SearchBar, descriptor })\r\n };\r\n },\r\n\r\n buildInstantSearchEvent(query: string, suggestion: ObjectHash, source: string): ObjectHash {\r\n let entity;\r\n\r\n if (source === SearchQueryType.Series)\r\n entity = EntityType.Series;\r\n\r\n if (source === SearchQueryType.Folder)\r\n entity = EntityType.Folder;\r\n\r\n if (source === SearchQueryType.Tags)\r\n entity = EntityType.Tag;\r\n\r\n if (source === SearchQueryType.Video)\r\n entity = EntityType.Video;\r\n\r\n const data: ObjectHash = {\r\n instant: {},\r\n query\r\n };\r\n\r\n if (suggestion.id) data.instant.selectedId = suggestion.id;\r\n if (suggestion.name) data.instant.selectedName = suggestion.name;\r\n\r\n return {\r\n data,\r\n action: getActionContext({ entity, location: LocationContext.SearchBar })\r\n };\r\n },\r\n\r\n /**\r\n * Resources Helpers\r\n */\r\n\r\n /**\r\n * Map our general InteractionType to an appropriate anayltics descriptor type. \r\n * The reason we do this is to maintain a seperation between analytics metadata and\r\n * actual domain data.\r\n * @param type \r\n */\r\n mapInteractionType(type: InteractionType): InteractionTypeDescriptor {\r\n switch (type) {\r\n case InteractionType.DragDrop:\r\n return InteractionTypeDescriptor.DragDrop;\r\n\r\n case InteractionType.FileSelect:\r\n return InteractionTypeDescriptor.FileSelect;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { User, Config } from 'libs/analytics/interfaces';\r\nimport { EventFirehose } from 'libs/analytics/constants/EventFirehose';\r\nimport { GlobalChannels } from 'libs/analytics/constants/GlobalChannels';\r\nimport { Services } from 'libs/analytics/constants/Services';\r\nimport { BaseAnalyticsTransport } from 'libs/analytics/transport/EventTransport';\r\nimport { BaseAnalyticsClient } from 'libs/analytics/clients/BaseAnalyticsClient';\r\nimport { BaseAnalyticsEnricher } from 'libs/analytics/enrichers/BaseAnalyticsEnricher';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { ApplicationOptionsKey } from 'libs/analytics/constants/ApplicationOptionsKey';\r\n\r\nimport { CollectionApiClient } from 'libs/analytics/clients/CollectionApiClient';\r\n\r\nimport { AnalyticsHelper } from './AnalyticsHelper';\r\n\r\ninterface ApplicationOptions {\r\n user: User;\r\n config: Config;\r\n}\r\n\r\ntype AnalyticsClient = BaseAnalyticsClient | CollectionApiClient;\r\n\r\ninterface ClientConstructor<TClient extends AnalyticsClient> {\r\n new (options?: ObjectHash): TClient;\r\n}\r\n\r\ninterface EnricherConstructor<TEnricher extends BaseAnalyticsEnricher> {\r\n new (options?: ObjectHash): TEnricher;\r\n}\r\n\r\ninterface TransportContructor<TTransport extends BaseAnalyticsTransport> {\r\n new (options?: ObjectHash): TTransport;\r\n}\r\n\r\ntype AnalyticsCtorType<T> =\r\n T extends BaseAnalyticsEnricher ? EnricherConstructor<T> :\r\n T extends AnalyticsClient ? ClientConstructor<T>\r\n : null;\r\n\r\nexport class AnalyticsService extends Core.Service {\r\n private transport: BaseAnalyticsTransport;\r\n private clients: ObjectHash;\r\n private enrichers: ObjectHash;\r\n\r\n constructor(options: ApplicationOptions) {\r\n super();\r\n this.clients = {};\r\n this.enrichers = {};\r\n\r\n const viewModel = ViewModelService.get(ApplicationOptionsKey);\r\n viewModel.set(options);\r\n\r\n this.bindNavigationListener();\r\n }\r\n\r\n public get name(): string {\r\n return Services.Analytics;\r\n }\r\n\r\n public registerTransport<TTransport extends BaseAnalyticsTransport>\r\n (transportCtor: TransportContructor<TTransport>, transportOptions?: ObjectHash): this {\r\n this.transport = new transportCtor(transportOptions);\r\n this.bindTransportListeners();\r\n\r\n return this;\r\n }\r\n\r\n private bindTransportListeners(): void {\r\n this.listenTo(GlobalChannels.ANALYTICS, EventFirehose.Inlet, this.onEvent);\r\n }\r\n\r\n /**\r\n * Register analytics clients that will listen to events processed and\r\n * forwarded by the AnalyticsService.\r\n *\r\n * @param clients Single client or array of clients\r\n */\r\n public registerClient<TClient extends AnalyticsClient>\r\n (clientCtor: ClientConstructor<TClient>, clientOptions?: ObjectHash): this {\r\n this.validateConstructor<AnalyticsClient>(clientCtor as AnalyticsCtorType<AnalyticsClient>);\r\n\r\n this.clients[clientCtor.prototype.name] = clientCtor.prototype.name;\r\n this.transport.subscribe(new clientCtor(clientOptions));\r\n\r\n return this;\r\n }\r\n\r\n public registerEnricher<TEnricher extends BaseAnalyticsEnricher>\r\n (enricherCtor: EnricherConstructor<TEnricher>, enricherOptions?: ObjectHash): this {\r\n this.validateConstructor<BaseAnalyticsEnricher>(enricherCtor);\r\n\r\n const enricher = new enricherCtor(enricherOptions);\r\n this.enrichers[enricherCtor.name] = enricher;\r\n\r\n this.registerMiddleware(_.bind(enricher.enrich, enricher));\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Add any middleware/enrichers to be applied to ALL events here\r\n * before publishing to any analytics clients. enrichers may also\r\n * be used within each individual analyticsClient\r\n *\r\n * @param event AnalyticsEvent object\r\n */\r\n private onEvent(event: CoreAnalyticsType): void {\r\n this.executeMiddleware(event, (enrichedEvent: CoreAnalyticsType) => {\r\n this.transport.publish(enrichedEvent);\r\n });\r\n }\r\n\r\n private validateConstructor<TCtor extends BaseAnalyticsEnricher | AnalyticsClient>\r\n (ctor: AnalyticsCtorType<TCtor>): void {\r\n const name = ctor.prototype.name;\r\n\r\n if (!name)\r\n Core.ErrorHelper.throw(new DevError(`Classes registered with ${this.name} must have a unique name property.`));\r\n\r\n const isType = (type: string) => {\r\n return FunctionHelper.isFunction(ctor.prototype.isType) && ctor.prototype.isType(type);\r\n };\r\n\r\n if ((isType('BaseAnalyticsClient') || name === 'CollectionApiClient') && this.clients[name])\r\n Core.ErrorHelper.throw(\r\n new DevError(`A client class with the name: ${name} has already been registered with ${this.name}`)\r\n );\r\n\r\n if (isType('BaseAnalyticsEnricher') && this.enrichers[name])\r\n Core.ErrorHelper.throw(\r\n new DevError(`An enricher class named: ${name} has already been registered with ${this.name}`)\r\n );\r\n }\r\n\r\n // Based on node/express middleware: https://gist.github.com/darrenscerri/5c3b3dcbe4d370435cfa\r\n private registerMiddleware(fn: any): void {\r\n this.executeMiddleware = ((stack: any) => (ev: any, next: any) =>\r\n stack(ev, () => fn(ev, next)))(this.executeMiddleware);\r\n }\r\n\r\n private executeMiddleware(event: any, next: any): void {\r\n next(event);\r\n }\r\n\r\n private bindNavigationListener(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.URL_CHANGE, this.logNavigate);\r\n }\r\n\r\n private logNavigate(appLink: Core.AppLink, options: ObjectHash): void {\r\n AnalyticsHelper.logNavigate(appLink, options);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\n\r\nexport interface AnalyticsClientOptions extends Core.ServiceOptions {}\r\n\r\nexport class BaseAnalyticsClient extends Core.Service {\r\n public static readonly type: string = 'BaseAnalyticsClient';\r\n\r\n public constructor(options?: AnalyticsClientOptions) {\r\n super(options);\r\n }\r\n\r\n /**\r\n * Predicate to determine whether the event should be handled by the client.\r\n * \r\n * @param event\r\n */\r\n public shouldLog(event?: CoreAnalyticsType): boolean { return true; }\r\n\r\n /**\r\n * This function will be bound by the transport layer to the firehose outlet event\r\n * stream. All events that satify the shouldLog predicate will flow to this function.\r\n * Any client-specific data/manipulation can be added to the event object in \r\n * this function.\r\n * \r\n * @param event\r\n */\r\n public log(event: CoreAnalyticsType): void {}\r\n\r\n public isType(type: string): this is BaseAnalyticsClient {\r\n return type === BaseAnalyticsClient.type;\r\n }\r\n}","import 'whatwg-fetch';\r\nimport jsSHA from 'jssha/dist/sha1';\r\nimport { version as clientVersion } from '../../package.json';\r\n\r\nimport {\r\n IncomingEvent,\r\n CollectionEvent,\r\n PlatformData,\r\n CollectionEventUserData,\r\n CollectionEventMetadata,\r\n CollectionEventData\r\n} from 'libs/analytics/models/CollectionEvent';\r\n\r\nimport { UserAgentHelper } from 'libs/analytics/utils/UserAgentHelper';\r\nimport { TypeHelper } from 'libs/analytics/utils/TypeHelper';\r\nimport { UrlHelper } from 'libs/analytics/utils/UrlHelper';\r\n\r\nimport { HashObject } from 'libs/analytics/interfaces/HashObject';\r\nimport { RegionalUrl } from 'libs/analytics/interfaces/RegionalUrl';\r\nimport { Region } from 'libs/analytics/interfaces/Region';\r\nimport { User, UserGroup } from 'libs/analytics/interfaces/User';\r\n\r\nimport { CountryCode } from 'libs/analytics/enums/CountryCode';\r\nimport { RegionName } from 'libs/analytics/enums/RegionName';\r\n\r\nimport { Regions } from 'libs/analytics/constants/Regions';\r\nimport { CountryRegionMapping } from 'libs/analytics/constants/CountryRegionMapping';\r\n\r\nconst CLIENT_SECRET = 'zXJL9nOHxzDlMUDjiP41';\r\n\r\nconst UNKNOWN = 'unknown';\r\n\r\ninterface CollectionApiClientOptions {\r\n productName: string;\r\n productVersion: string;\r\n regionName: RegionName; // Region being logged from.\r\n collectionApiUrls: RegionalUrl;\r\n collectionApiClientId: string;\r\n getUser: () => Promise<User>;\r\n shouldLog?: (event: IncomingEvent) => boolean;\r\n formatData?: (event: IncomingEvent) => HashObject | HashObject[];\r\n}\r\n\r\n/**\r\n * A client for logging to CollectionApi.\r\n * It should have no library dependencies and anything that it references\r\n * should also have no library dependencies.\r\n */\r\nexport class CollectionApiClient {\r\n private options: CollectionApiClientOptions;\r\n\r\n public constructor(options: CollectionApiClientOptions) {\r\n this.options = options;\r\n this.initialize();\r\n }\r\n\r\n public initialize(): void {\r\n this.validateOptions();\r\n }\r\n\r\n public get name(): string {\r\n return 'CollectionApiClient';\r\n }\r\n\r\n public async log(event: IncomingEvent | IncomingEvent[]): Promise<void> {\r\n if (Array.isArray(event))\r\n return this.logBulk(event);\r\n\r\n if (!this.shouldLog(event))\r\n return;\r\n\r\n this.validateEvent(event);\r\n\r\n await this.postData(await this.formatData(event));\r\n }\r\n\r\n private async logBulk(events: IncomingEvent[]): Promise<void> {\r\n const eventsToLog = events.filter(e => this.shouldLog(e));\r\n\r\n if (!eventsToLog.length)\r\n return;\r\n\r\n eventsToLog.forEach(e => this.validateEvent(e));\r\n\r\n const data = await Promise.all(eventsToLog.map(e => this.formatData(e)));\r\n\r\n await this.postData(data);\r\n }\r\n\r\n private validateOptions(): void {\r\n if (!TypeHelper.isFunction(this.options.getUser))\r\n throw new Error('getUser option is required.');\r\n }\r\n\r\n private shouldLog(event: IncomingEvent): boolean {\r\n if (TypeHelper.isFunction(this.options.shouldLog))\r\n return this.options.shouldLog(event);\r\n\r\n return true;\r\n }\r\n\r\n private async postData(data: CollectionEvent | CollectionEvent[]): Promise<void> {\r\n const collectionApiUrl = await this.getRegionalUrl(this.options.collectionApiUrls);\r\n\r\n const body = JSON.stringify(data);\r\n\r\n const headers: HeadersInit = { 'Content-Type': 'application/json', ...this.getSignatureHeader(body) };\r\n\r\n let url = UrlHelper.safeUrlConcat(collectionApiUrl, '/v1/ingest');\r\n\r\n if (Array.isArray(data))\r\n url = UrlHelper.safeUrlConcat(url, '/bulk');\r\n\r\n // TODO Add error logging\r\n await fetch(url, {\r\n method: 'POST',\r\n mode: 'cors',\r\n headers,\r\n body\r\n });\r\n }\r\n\r\n private getSignatureHeader(body: string): any {\r\n const hash = new jsSHA('SHA-1', 'TEXT', { hmacKey: { value: CLIENT_SECRET, format: 'TEXT', encoding: 'UTF8' } });\r\n hash.update(body);\r\n\r\n return {\r\n 'cv-analytics-signature': `${this.options.collectionApiClientId}.${hash.getHash('B64')}`\r\n };\r\n }\r\n\r\n private async getRegionalUrl(urls: RegionalUrl): Promise<string> {\r\n const region = await this.getRegion();\r\n\r\n switch (region.systemName) {\r\n case RegionName.CvEuWest1:\r\n return urls.cvEuWest1;\r\n\r\n case RegionName.CvApSoutheast2:\r\n return urls.cvApSoutheast2;\r\n\r\n case RegionName.CvApSoutheast1:\r\n default:\r\n return urls.cvApSoutheast1;\r\n }\r\n }\r\n\r\n private validateEvent(event: IncomingEvent): void {\r\n if (typeof event.type !== 'string')\r\n throw new Error('Event type is required.');\r\n\r\n if (!TypeHelper.isObject(event.actionContext))\r\n throw new Error('Event actionContext is required.');\r\n\r\n if (!event.actionContext.entity)\r\n throw new Error('Event actionContext entity is required.');\r\n }\r\n\r\n private async formatData(event: IncomingEvent): Promise<CollectionEvent> {\r\n return {\r\n type: event.type,\r\n data: await this.getEventData(event),\r\n metadata: this.getEventMetadata(event)\r\n };\r\n }\r\n\r\n private async getEventData(event: IncomingEvent): Promise<CollectionEventData> {\r\n const action = event.actionContext;\r\n\r\n const user = await this.getUserData();\r\n\r\n const baseEventData = {\r\n user,\r\n action,\r\n platform: this.getPlatformMetadata(),\r\n product: { name: this.options.productName, version: this.options.productVersion }\r\n };\r\n\r\n const entityData = this.extractData(event);\r\n\r\n const reservedKeys = Object.keys(baseEventData).map(key => key.toLowerCase());\r\n const dataKeys = Object.keys(entityData).map(key => key.toLowerCase());\r\n\r\n reservedKeys.forEach(key => {\r\n if (dataKeys.includes(key))\r\n throw Error(`${key} is a reserved key.`);\r\n });\r\n\r\n return {\r\n ...baseEventData,\r\n ...entityData\r\n };\r\n }\r\n\r\n private extractData(event: IncomingEvent): HashObject {\r\n if (TypeHelper.isFunction(this.options.formatData))\r\n return this.options.formatData(event);\r\n\r\n return { [event.actionContext.entity]: event.data };\r\n }\r\n\r\n private async getUserData(): Promise<CollectionEventUserData> {\r\n const user = await this.options.getUser();\r\n\r\n if (!user?.id)\r\n return;\r\n\r\n return {\r\n id: user.id,\r\n role: user.role?.toLowerCase() || UNKNOWN,\r\n userGroup: user.userGroup?.toLowerCase() || UserGroup.Unknown,\r\n yearGroup: this.normalizeYearGroup(user.yearGroup),\r\n customer: {\r\n id: user.customerId,\r\n name: user.customerName,\r\n customerGuid: user.customerGuid,\r\n crmId: user.crmId,\r\n country: user.countryCode as CountryCode,\r\n region: await this.getRegion(),\r\n openCustomer: !!user.isOpenCustomer\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Until region is added to the user Auth claims, we use countryCode to obtain region.\r\n */\r\n private async getRegion(): Promise<Region> {\r\n const user = await this.options.getUser();\r\n\r\n const userCountryCode = user?.countryCode?.toLowerCase() as CountryCode;\r\n\r\n const regionName = userCountryCode\r\n ? CountryRegionMapping[userCountryCode]\r\n : this.options.regionName;\r\n\r\n return this.getRegionByName(regionName);\r\n }\r\n\r\n private getPlatformMetadata(): PlatformData {\r\n return {\r\n browser: UserAgentHelper.getBrowser(),\r\n os: UserAgentHelper.getOperatingSystem(),\r\n request: {\r\n url: window.location.href,\r\n referrer: document.referrer\r\n },\r\n screenResolution: `${window.screen.width}x${window.screen.height}`\r\n };\r\n }\r\n\r\n private getEventMetadata(event: IncomingEvent): CollectionEventMetadata {\r\n return {\r\n client: {\r\n name: `${this.name}.ts`,\r\n version: clientVersion,\r\n region: this.getRegionByName(this.options.regionName)\r\n },\r\n timestamp: (new Date()).toISOString(),\r\n eventVersion: event.eventVersion\r\n };\r\n }\r\n\r\n private getRegionByName(name: RegionName): Region {\r\n let region: Region;\r\n\r\n Object.values(Regions).forEach(r => {\r\n if (r.systemName === name)\r\n region = r;\r\n });\r\n\r\n return region;\r\n }\r\n\r\n private normalizeYearGroup(yearGroup: string): string {\r\n if (!yearGroup)\r\n return UNKNOWN;\r\n\r\n return yearGroup.toLowerCase().split(' ').join('_');\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\n\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { BaseAnalyticsClient } from './BaseAnalyticsClient';\r\n\r\nexport class DebuggerClient extends BaseAnalyticsClient {\r\n\r\n public get name(): string {\r\n return 'DebuggerClient';\r\n }\r\n\r\n public shouldLog(): boolean {\r\n return EnvironmentVariables.isDevelopment;\r\n }\r\n\r\n public log(event: CoreAnalyticsType): void {\r\n const output: any = _.clone(event);\r\n\r\n for (let prop in event) {\r\n let value = output[prop];\r\n\r\n if (value instanceof Core.Model || value instanceof Core.Collection)\r\n output[prop] = value.toJSON();\r\n }\r\n\r\n console.log('Event Debugger: ', output);\r\n }\r\n}\r\n","export const ApplicationOptionsKey = 'application:options';","import { CountryCode } from 'libs/analytics/enums/CountryCode';\r\nimport { RegionName } from 'libs/analytics/enums/RegionName';\r\n\r\nexport const CountryRegionMapping = {\r\n [CountryCode.AU]: RegionName.CvApSoutheast1,\r\n [CountryCode.NZ]: RegionName.CvApSoutheast2,\r\n [CountryCode.UK]: RegionName.CvEuWest1\r\n};\r\n","export enum EventFirehose {\r\n Inlet = 'event:inlet',\r\n Outlet = 'event:outlet',\r\n}","export const GlobalChannels = {\r\n ANALYTICS: 'global:analytics'\r\n};","import { Region } from 'libs/analytics/interfaces/Region';\r\nimport { RegionName } from 'libs/analytics/enums/RegionName';\r\n\r\nconst CvApSoutheast1: Region = {\r\n displayName: 'ClickView Asia Pacific (AU)',\r\n systemName: RegionName.CvApSoutheast1\r\n};\r\n\r\nconst CvApSoutheast2: Region = {\r\n displayName: 'ClickView Asia Pacific (NZ)',\r\n systemName: RegionName.CvApSoutheast2\r\n};\r\n\r\nconst CvEuWest1: Region = {\r\n displayName: 'ClickView EU West (UK)',\r\n systemName: RegionName.CvEuWest1\r\n};\r\n\r\nexport const Regions = {\r\n CvApSoutheast1,\r\n CvApSoutheast2,\r\n CvEuWest1\r\n};\r\n","export enum Services {\r\n Analytics = 'AnalyticsService',\r\n Context = 'ContextService',\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\n\r\nexport interface AnalyticsEnricherOptions {}\r\n\r\nexport class BaseAnalyticsEnricher extends Core.Service {\r\n public static readonly type: string = 'BaseAnalyticsEnricher';\r\n\r\n /**\r\n * Enriches the current event with additional data.\r\n * All events that satify the shouldEnrich predicate will flow to this function.\r\n * \r\n * This function is registered as middleware within the AnalyticsService and pass\r\n * the event object being modifed on to subsequent middleware callbacks (other analytics);\r\n * \r\n * @param event \r\n * @param next \r\n */\r\n public enrich<TEvent extends CoreAnalyticsType>(event: TEvent, next: Function): void {}\r\n\r\n public isType(type: string): this is BaseAnalyticsEnricher {\r\n return type === BaseAnalyticsEnricher.type;\r\n }\r\n}","import { ObjectHash } from 'backbone';\r\nimport * as moment from 'moment';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\r\n\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { BaseAnalyticsEnricher, AnalyticsEnricherOptions } from './BaseAnalyticsEnricher';\r\n\r\nexport interface CoreContextEnricherOptions extends AnalyticsEnricherOptions {\r\n productName: string;\r\n productVersion: string;\r\n}\r\n\r\nexport class CoreContextEnricher extends BaseAnalyticsEnricher {\r\n private productName: string;\r\n private productVersion: string;\r\n\r\n constructor(options: CoreContextEnricherOptions) {\r\n super(options);\r\n this.productName = options.productName;\r\n this.productVersion = options.productVersion;\r\n }\r\n\r\n public get name(): string {\r\n return 'CoreContextEnricher';\r\n }\r\n\r\n private shouldEnrich(event: CoreAnalyticsType): boolean {\r\n return true;\r\n }\r\n\r\n public enrich(event: CoreAnalyticsType, next: any): void {\r\n if (!this.shouldEnrich(event))\r\n next(event);\r\n\r\n event.enrich('coreContext', this.getCoreContext());\r\n next(event);\r\n }\r\n\r\n private getCoreContext(): ObjectHash {\r\n return {\r\n timestamp: this.getTimestamp(),\r\n product: this.getProductInfo(),\r\n request: this.getRequestInfo(),\r\n client: this.getClientInfo()\r\n };\r\n }\r\n\r\n /**\r\n * Get current timestamp in UTC\r\n */\r\n private getTimestamp(): string {\r\n return moment.utc().toISOString();\r\n }\r\n\r\n private getProductInfo(): ObjectHash {\r\n return {\r\n name: this.productName,\r\n version: this.productVersion\r\n };\r\n }\r\n\r\n private getRequestInfo(): ObjectHash {\r\n return {\r\n referrer: Core.LocationUtils.GetCurrentReferrer(),\r\n requestUrl: Core.LocationUtils.GetCurrentUrl(),\r\n };\r\n }\r\n\r\n private getClientInfo(): ObjectHash {\r\n const osPlatform = UserAgentHelper.getOperatingSystem();\r\n const browserPlatform = UserAgentHelper.getBrowser();\r\n\r\n return {\r\n os: osPlatform.os,\r\n osVersion: osPlatform.version,\r\n browser: browserPlatform.browser,\r\n browserVersion: browserPlatform.version,\r\n screenResolution : `${window.screen.width}x${window.screen.height}`\r\n };\r\n }\r\n}\r\n\r\n","import { ObjectHash } from 'backbone';\r\n\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\n\r\nimport { User } from 'libs/analytics/interfaces';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { ApplicationOptionsKey } from 'libs/analytics/constants/ApplicationOptionsKey';\r\nimport { BaseAnalyticsEnricher } from './BaseAnalyticsEnricher';\r\n\r\nexport class UserDataEnricher extends BaseAnalyticsEnricher {\r\n private user: User;\r\n\r\n public get name(): string {\r\n return 'UserDataEnricher';\r\n }\r\n\r\n public initialize(): void {\r\n this.user = ViewModelService.get(ApplicationOptionsKey).get('user');\r\n }\r\n\r\n private shouldEnrich(event: CoreAnalyticsType): boolean {\r\n return true;\r\n }\r\n\r\n public enrich(event: CoreAnalyticsType, next: Function): void {\r\n if (!this.shouldEnrich(event))\r\n next(event);\r\n\r\n event.enrich('user', this.getUser(this.user));\r\n next(event);\r\n }\r\n\r\n private getUser(user: User): ObjectHash {\r\n return {\r\n country: user.countryCode,\r\n customerId: user.customerId,\r\n id: user.id,\r\n role: user.role\r\n };\r\n }\r\n}\r\n\r\n","export enum CountryCode {\r\n AU = 'au',\r\n NZ = 'nz',\r\n UK = 'uk'\r\n}","export enum RegionName {\r\n CvApSoutheast1 = 'cv-ap-southeast-1',\r\n CvApSoutheast2 = 'cv-ap-southeast-2',\r\n CvEuWest1 = 'cv-eu-west-1'\r\n}","export type AnalyticsEventType = UserAction;\r\n\r\nexport interface AnalyticsOptions {\r\n actionType?: UserAction;\r\n productArea?: string;\r\n entity?: EntityType;\r\n location?: LocationContext;\r\n descriptor?: ActionDescriptor;\r\n workflowPhase?: WorkflowPhase;\r\n eventVersion?: EventVersion;\r\n}\r\n\r\nexport interface ActionContext {\r\n productArea: string;\r\n entity: EntityType;\r\n location: LocationContext;\r\n descriptor: ActionDescriptor;\r\n workflowPhase: WorkflowPhase;\r\n}\r\n\r\n/**\r\n * All events recorded are captured within the following action names\r\n */\r\nexport enum UserAction {\r\n /**\r\n * The following events are listed in CollectionApi\r\n */\r\n Stream = 'cv_product_stream',\r\n StreamRaw = 'cv_product_stream_raw',\r\n WebPlayerStream = 'cv_product_webplayer_stream',\r\n StreamProgress = 'cv_product_stream_progress',\r\n Login = 'cv_product_login',\r\n LoginSsoRedirect = 'cv_product_login_sso_redirect',\r\n LoginFailed = 'cv_product_login_failed',\r\n Search = 'cv_product_search',\r\n InstantSearch = 'cv_product_search',\r\n SearchEmptyResult = 'cv_product_search_empty_result',\r\n Filter = 'cv_product_search_filter',\r\n SearchLanding = 'cv_product_search_landing',\r\n Share = 'cv_product_share',\r\n WorkspaceAdd = 'cv_product_tv_add',\r\n\r\n /**\r\n * The following events are unlisted in CollectionApi\r\n */\r\n Rename = 'cv_product_rename',\r\n Move = 'cv_product_move',\r\n Sort = 'cv_product_sort',\r\n Create = 'cv_product_create',\r\n Delete = 'cv_product_delete',\r\n Associate = 'cv_product_associate',\r\n Dissociate = 'cv_product_dissociate',\r\n Edit = 'cv_product_edit',\r\n Approve = 'cv_product_approve',\r\n Reject = 'cv_product_reject',\r\n Disable = 'cv_product_disable',\r\n Upload = 'cv_product_upload',\r\n Download = 'cv_product_download',\r\n Navigate = 'cv_product_navigate',\r\n Click = 'cv_product_click',\r\n Suggest = 'cv_product_suggest',\r\n EditAssoc = 'cv_product_edit_assoc',\r\n Play = 'cv_product_play',\r\n Favourite = 'cv_product_favourite',\r\n Follow = 'cv_product_follow',\r\n Prefer = 'cv_product_prefer',\r\n\r\n SetAccess = 'cv_product_set_access',\r\n AddToLocalCache = 'cv_product_add_to_lc',\r\n\r\n\r\n /**\r\n * Capture migration specific events in dedicated collection.\r\n * The assumption here is that at some point in the distant future\r\n * we will not longer care about these collections and it doesn't need to\r\n * be part of the more general collections set.\r\n */\r\n ResolveWarning = 'cv_product_resolve_warning',\r\n DismissWarning = 'cv_product_dismiss_warning'\r\n}\r\n\r\nexport enum EntityType {\r\n Folder = 'folder',\r\n Video = 'video',\r\n Rating = 'rating',\r\n Series = 'series',\r\n Library = 'library',\r\n Resource = 'resource',\r\n Tag = 'tag',\r\n Subtitle = 'subtitle',\r\n Chapter = 'chapter',\r\n Restriction = 'restriction',\r\n Interactive = 'interactive',\r\n PDF = 'pdf',\r\n CustomerSetting = 'customer_setting',\r\n UserSetting = 'user_setting',\r\n StaffRequest = 'staff_request',\r\n Logo = 'logo',\r\n Pagination = 'pagination',\r\n Thumbnail = 'thumbnail',\r\n Banner = 'banner',\r\n Link = 'link', // Note: only use this for events on `Link` object types. Not just any anchor tag\r\n Playlist = 'playlist',\r\n Person = 'person',\r\n Company = 'company',\r\n Classroom = 'classroom',\r\n ClassroomGroup = 'classroom_group',\r\n Classification = 'classification',\r\n ShareLink = 'share_link',\r\n Upload = 'upload',\r\n SearchResults = 'search_results',\r\n Audience = 'audience',\r\n User = 'user',\r\n Clip = 'clip',\r\n UserChannel = 'user_channel',\r\n Widget = 'widget',\r\n Url = 'url'\r\n}\r\n\r\nexport enum LocationContext {\r\n TopNav = 'top_nav',\r\n LeftNav = 'left_nav',\r\n Popup = 'popup',\r\n Banner = 'banner',\r\n VideoList = 'video_list',\r\n VideoListItem = 'video_list_item',\r\n VideoListHeader = 'video_header',\r\n VideoThumbnail = 'video_thumbnail',\r\n VideoItemPreview = 'video_item_preview',\r\n VideoDetails = 'video_details',\r\n VideoDetailsHeader = 'video_details_header',\r\n EditVideoDetails = 'edit_video_details',\r\n EditVideoChapters = 'edit_video_chapters',\r\n EditVideoResources = 'edit_video_resources',\r\n VideoUpload = 'video_upload',\r\n VideoRequest = 'video_request',\r\n Pagination = 'pagination',\r\n SearchBar = 'search_bar',\r\n InstantSearch = 'instant_search',\r\n SearchFilters = 'search_filters',\r\n LibraryHeader = 'library_header',\r\n LibraryTiles = 'library_tiles',\r\n StaffRequestDetails = 'staff_request_details',\r\n SubFolderList = 'sub_folder_list',\r\n AwaitingReviewVideoListHeader = 'awaiting_review_video_list_header',\r\n AwaitingReviewVideoItem = 'awaiting_review_video_item',\r\n PastReleasesHeader = 'past_releases_header',\r\n MigrationWarnings = 'migration_warnings',\r\n PlaylistListHeader = 'playlist_list_header',\r\n PlaylistListItem = 'playlist_list_item',\r\n\r\n TeacherManager = 'teacher_manager',\r\n TeacherManagerListItem = 'teacher_manager_list_item',\r\n StudentManager = 'student_manager',\r\n StudentManagerListItem = 'student_manager_list_item',\r\n\r\n ClassroomsList = 'classrooms_list',\r\n ClassroomsListItem = 'classrooms_list_item',\r\n ClassroomOverview = 'classroom_overview',\r\n ClassroomOverviewStudentListItem = 'classroom_overview_student_list_item',\r\n ManageClassroomStudents = 'manage_classroom_students',\r\n ManageClassroomStudentListItem = 'manage_classroom_student_list_item',\r\n ManageClassroomGroups = 'manage_classroom_groups',\r\n ManageClassroomGroupListItem = 'manage_classroom_group_list_item',\r\n\r\n PlayPage = 'play_page',\r\n Player = 'player',\r\n FloatingPlayer = 'floating_player',\r\n InteractivePlayer = 'interactive_player',\r\n EmbeddedPlayer = 'embedded_player',\r\n\r\n ContentUpdatesClassificationBanner = 'content_updates_classification_banner',\r\n PreferencesSettings = 'preferences_settings',\r\n\r\n MyUploads = 'my_uploads',\r\n\r\n SlidingList = 'sliding_list',\r\n\r\n HeroBannerItem = 'hero_banner_item',\r\n SlidingListItem = 'sliding_list_item',\r\n ClassificationListItem = 'classification_list_item',\r\n ClassificationComingSoon = 'classification_coming_soon',\r\n\r\n Dashboard = 'dashboard'\r\n}\r\n\r\nexport enum WorkflowPhase {\r\n Start = 'start',\r\n Complete = 'complete',\r\n Save = 'save',\r\n Discard = 'discard',\r\n}\r\n\r\n/**\r\n * Action descriptor sub-types\r\n */\r\nexport enum PageDescriptor {\r\n PageLoad = 'page_load'\r\n}\r\n\r\nexport enum OperationDescriptor {\r\n Single = 'single',\r\n Bulk = 'bulk',\r\n All = 'all'\r\n}\r\n\r\nexport enum SortDescriptor {\r\n ProductionYear = 'production_year',\r\n Alphabetical = 'alphabetical'\r\n}\r\n\r\nexport enum FilterDescriptor {\r\n Content = 'content',\r\n Quality = 'quality',\r\n Duration = 'duration',\r\n Reset = 'reset'\r\n}\r\n\r\nexport enum DirectSearchDescriptor {\r\n Submit = 'submit',\r\n ShowAll = 'show_all',\r\n Recent = 'recent',\r\n SearchIcon = 'search_icon',\r\n}\r\n\r\nexport enum PlaybackDescriptor {\r\n Start = 'start',\r\n Finish = 'finish',\r\n Terminate = 'terminate',\r\n Play = 'play',\r\n Pause = 'pause',\r\n Playback = 'playback',\r\n NextChapter = 'next_chapter',\r\n PreviousChapter = 'previous_chapter',\r\n FullScreenEnter = 'full_screen_enter',\r\n FullScreenExit = 'full_screen_exit',\r\n}\r\n\r\nexport enum ClickDescriptor {\r\n TogglePreview = 'toggle_preview',\r\n NavigateHome = 'navigate_home',\r\n OpenInStaffView = 'open_in_staff_view',\r\n Title = 'title',\r\n ToggleHideValidListings = 'toggle_hide_valid_listings',\r\n LaunchImmersiveReader = 'launch_immersive_reader',\r\n CopyEmbedHtml = 'copy_embed_html',\r\n Close = 'close',\r\n Open = 'open',\r\n Button = 'button',\r\n Link = 'link',\r\n Tile = 'tile',\r\n Thumbnail = 'thumbnail',\r\n Cover = 'cover',\r\n TallPoster = 'tall_poster',\r\n Slide = 'slide',\r\n}\r\n\r\nexport enum VideoActionDescriptor {\r\n FeatureUserChannelVideo = 'feature_user_channel_video',\r\n RemoveFromUserChannelPlaylist = 'remove_from_user_channel_playlist',\r\n ShareClip = 'share_clip',\r\n ViewOriginalVideo = 'view_original_video',\r\n ShareInteractive = 'share_interactive',\r\n DeleteInteractiveVideo = 'delete_interactive_video',\r\n CopyInteractiveVideo = 'copy_interactive_video',\r\n EditInteractiveVideo = 'edit_interactive_video',\r\n PrintAsWorksheet = 'print_as_worksheet',\r\n PreviewInteractiveVideo = 'preview_interactive_video',\r\n ViewResults = 'view_results',\r\n MoveToAnotherFolder = 'move_to_another_folder',\r\n CreateInteractiveVideo = 'create_interactive_video',\r\n ShareVideo = 'share_video',\r\n EditVideo = 'edit_video',\r\n DownloadVideo = 'download_video',\r\n AddToExchange = 'add_to_exchange',\r\n AddToUserChannel = 'add_to_user_channel',\r\n CreateClip = 'create_clip',\r\n FlagVideo = 'flag_video',\r\n AddToLibrary = 'add_to_library',\r\n AddToWorkspace = 'add_to_workspace',\r\n AddToPlaylist = 'add_to_playlist',\r\n RemoveFromPlaylist = 'remove_from_playlist',\r\n AddCurriculumLink = 'add_curriculum_link',\r\n ViewCurriculumLinks = 'view_curriculum_links',\r\n OpenInCurator = 'open_in_curator',\r\n ManageVideoAccess = 'manage_video_access',\r\n Approve = 'approve',\r\n AddToLocalCache = 'add_to_local_cache',\r\n OpenInLibraryEditor = 'open_in_library_editor',\r\n PlayClip = 'play_clip',\r\n EditClip = 'edit_clip',\r\n DeleteClip = 'delete_clip'\r\n}\r\n\r\nexport enum CustomerSettingDescriptor {\r\n LibraryReview = 'library_review'\r\n}\r\n\r\nexport enum InteractionTypeDescriptor {\r\n FileSelect = 'file_select',\r\n DragDrop = 'drag_drop',\r\n}\r\n\r\nexport enum SuggestionDescriptor {\r\n Edit = 'edit'\r\n}\r\n\r\nexport enum AssocDescriptor {\r\n Image = 'image',\r\n User = 'user',\r\n Playlist = 'playlist',\r\n Link = 'link'\r\n}\r\n\r\nexport enum ToggleDescriptor {\r\n On = 'on',\r\n Off = 'off'\r\n}\r\n\r\n/**\r\n * Action descriptors give further context to UserActions\r\n */\r\nexport type ActionDescriptor = OperationDescriptor |\r\n SortDescriptor |\r\n FilterDescriptor |\r\n DirectSearchDescriptor |\r\n PageDescriptor |\r\n PlaybackDescriptor |\r\n CustomerSettingDescriptor |\r\n SuggestionDescriptor |\r\n InteractionTypeDescriptor |\r\n AssocDescriptor |\r\n ClickDescriptor |\r\n ToggleDescriptor |\r\n VideoActionDescriptor;\r\n\r\n/**\r\n * Placeholder values to be used in circumstances where we need\r\n * to simply signify that a change has occurred. Particularly if it is\r\n * being collected as a set of other changes.\r\n */\r\nexport enum EventDefaultValue {\r\n EntityRemoved = 'cv_entity_removed',\r\n ValueUpdated = 'cv_value_updated'\r\n}\r\n\r\nexport enum InteractionType {\r\n FileSelect = 'file_select',\r\n DragDrop = 'drag_drop'\r\n}\r\n\r\nexport enum SearchQueryType {\r\n Video = 'videos',\r\n Folder = 'categories',\r\n Series = 'series',\r\n Tags = 'tags'\r\n}\r\n\r\nexport enum EventVersion {\r\n V1 = 1\r\n}","import { BaseObject } from 'libs/analytics/interfaces';\r\n\r\nexport enum UserGroup {\r\n Staff = 'staff',\r\n Learner = 'learner',\r\n Unknown = 'unknown'\r\n}\r\n\r\nexport interface User extends BaseObject {\r\n countryCode?: string;\r\n customerId?: string;\r\n customerGuid?: string;\r\n customerName?: string;\r\n crmId?: number;\r\n role?: string;\r\n userGroup?: UserGroup;\r\n yearGroup?: string;\r\n isOpenCustomer?: boolean;\r\n}","export * from './AnalyticsTypes';\r\nexport * from './User';\r\nexport * from './Config';\r\nexport * from './Owner';\r\nexport * from './Folder';\r\nexport * from './HashObject';\r\nexport * from './Playlist';\r\nexport * from './Resource';\r\nexport * from './Rating';\r\nexport * from './Region';\r\nexport * from './RegionalUrl';\r\nexport * from './Series';\r\nexport * from './Subtitle';\r\nexport * from './Video';\r\nexport * from './primitives/BaseObject';","import { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { ObjectHash } from 'backbone';\r\nimport { AnalyticsEventType, ActionContext } from 'libs/analytics/interfaces';\r\nimport { EventVersion } from 'libs/analytics/interfaces';\r\n\r\ninterface Enrichment {\r\n [prop: string]: string;\r\n}\r\n\r\nexport interface DataObjectPayload extends ObjectHash {}\r\nexport interface DataCollectionPayload extends Array<ObjectHash> {}\r\n\r\nexport type AnalyticsDataPayload = DataObjectPayload | DataCollectionPayload;\r\n\r\nconst DEFAULT_EVENT_VERSION = EventVersion.V1;\r\n\r\n/**\r\n * Base AnalyticsEvent Object. \r\n * Acts as a wrapper for our events, encapsulating the event type\r\n * and a data payload.\r\n */\r\nexport class AnalyticsEvent<TType extends AnalyticsEventType, TPayload extends AnalyticsDataPayload> {\r\n public type: TType;\r\n public data: TPayload;\r\n public actionContext: ActionContext;\r\n public eventVersion: EventVersion;\r\n\r\n public constructor(type: TType, data: TPayload, actionContext?: ActionContext, eventVersion?: EventVersion) {\r\n this.type = type;\r\n this.data = data;\r\n this.actionContext = actionContext;\r\n this.eventVersion = eventVersion || DEFAULT_EVENT_VERSION;\r\n }\r\n\r\n /**\r\n * Utility function that allows us to create type guards.\r\n * @param type EventType\r\n */\r\n public isType(type: TType): this is TType {\r\n return type === this.type;\r\n }\r\n\r\n /**\r\n * Mix different enrichments into the base AnalyticsEvent object \r\n * to keep it as flat as possible.\r\n * \r\n * @param key Top level enrichment name \r\n * @param value Either a string or set of KV Pairs\r\n */\r\n public enrich(key: string, value: string | Enrichment ): void {\r\n this.validateKey(key);\r\n\r\n (this as any)[key] = value;\r\n }\r\n\r\n public get(key: string): string | Enrichment {\r\n if (!key)\r\n return;\r\n\r\n if (!(this as any)[key])\r\n return;\r\n\r\n return (this as any)[key];\r\n }\r\n\r\n /**\r\n * Check that the incoming enrichment doesn't clash with\r\n * a pre-existing enrichement. \r\n * \r\n * @param key \r\n */\r\n private validateKey(key: string): void {\r\n if (key === 'type' || key === 'data')\r\n Core.ErrorHelper.throw(new DevError(`${key} is not a valid key`));\r\n\r\n if ((this as any)[key])\r\n Core.ErrorHelper.throw(new DevError(`Event already contains an enrichment named ${key}`));\r\n }\r\n}\r\n\r\n/**\r\n * Alias our analytics type to make our function signatures and typings a little cleaner\r\n */\r\nexport type CoreAnalyticsType = AnalyticsEvent<AnalyticsEventType, AnalyticsDataPayload>;","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nimport { Services } from 'libs/analytics/constants/Services';\r\n\r\ninterface ApplicationContext {\r\n pageLoad: boolean;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nexport interface AppContextServiceOptions {\r\n}\r\n\r\nconst NAV_HISTORY_LENGTH = 5;\r\n\r\nexport class StaticContextService extends Core.Service {\r\n private static instance: StaticContextService;\r\n\r\n private contextHistory: ApplicationContext[] = [];\r\n\r\n public get name(): string {\r\n return Services.Context;\r\n }\r\n\r\n public static get Instance(): StaticContextService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.setContext);\r\n }\r\n\r\n private setContext(appLink: Core.AppLink): void {\r\n if (this.contextHistory.length >= NAV_HISTORY_LENGTH)\r\n this.contextHistory.unshift();\r\n\r\n this.contextHistory.push({\r\n pageLoad: !this.contextHistory.length,\r\n appLink\r\n });\r\n }\r\n\r\n public getCurrentContext(): ApplicationContext {\r\n if (!this.contextHistory.length) return;\r\n return this.contextHistory[this.contextHistory.length - 1];\r\n }\r\n\r\n public fromPageLoad(): boolean {\r\n return this.contextHistory.length === 1;\r\n }\r\n}\r\n\r\nexport const ContextService: StaticContextService = new StaticContextService();","import * as _ from 'underscore';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { EventFirehose } from 'libs/analytics/constants/EventFirehose';\r\nimport { BaseAnalyticsClient } from 'libs/analytics/clients/BaseAnalyticsClient';\r\nimport { CollectionApiClient } from 'libs/analytics/clients/CollectionApiClient';\r\n\r\ntype AnalyticsClient = BaseAnalyticsClient | CollectionApiClient;\r\n\r\n/**\r\n * TransportLayer is responsible for communicating outgoing events from the\r\n * AnalyticsService to registered AnalyticsClients.\r\n */\r\ninterface TransportLayer {\r\n publish(event: CoreAnalyticsType): void;\r\n subscribe<TClient extends AnalyticsClient>(client: TClient): void;\r\n}\r\n\r\nexport abstract class BaseAnalyticsTransport extends Marionette.Object implements TransportLayer {\r\n public abstract publish(event: CoreAnalyticsType): void;\r\n public abstract subscribe(client: AnalyticsClient): void;\r\n}\r\n\r\n/**\r\n * EventTransport will utilise Backbone.Radio to emit events.\r\n */\r\nexport class EventTransport extends BaseAnalyticsTransport {\r\n\r\n public get name(): string {\r\n return 'EventTransport';\r\n }\r\n\r\n public get channelName(): string {\r\n return 'event:transport';\r\n }\r\n\r\n /**\r\n * Publish an event to all AnalyticsClients\r\n * \r\n * @param event Outgoing event object \r\n */\r\n public publish(event: CoreAnalyticsType): void {\r\n const channel = this.getChannel();\r\n channel.trigger(EventFirehose.Outlet, event);\r\n }\r\n\r\n /**\r\n * Subscribe the client to all outgoing events emitted from the AnalyticsService.\r\n * All events will be recieved via the client's exposed eventHandler. Any specific \r\n * event filtering or custom enrichment should occur within a client.\r\n * \r\n * @param client AnalyticsClient \r\n */\r\n public subscribe(client: AnalyticsClient): void {\r\n const baseAnalyticsClient = client as BaseAnalyticsClient;\r\n\r\n const logEvent = (event: any) => {\r\n if (FunctionHelper.isFunction(baseAnalyticsClient.shouldLog) && !baseAnalyticsClient.shouldLog(event))\r\n return;\r\n\r\n client.log(event);\r\n };\r\n\r\n if (_.isFunction(baseAnalyticsClient.listenTo))\r\n baseAnalyticsClient.listenTo(this.getChannel(), EventFirehose.Outlet, logEvent);\r\n else\r\n this.listenTo(this.getChannel(), EventFirehose.Outlet, logEvent);\r\n }\r\n}","import { IncomingEvent } from 'libs/analytics/models/CollectionEvent';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\n\r\nimport { EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\r\n\r\nimport { EventWhitelistHelper, EventWhitelistHash } from 'libs/analytics/utils/EventWhitelistHelper';\r\nimport { DataFormatHelper, DataFormatterHash } from 'libs/analytics/utils/DataFormatHelper';\r\nimport { VideoDataFormatHelper } from 'libs/analytics/utils/VideoDataFormatHelper';\r\nimport { UploadDataFormatHelper } from 'libs/analytics/utils/UploadDataFormatHelper';\r\nimport { TypeHelper } from 'libs/analytics/utils/TypeHelper';\r\n\r\nconst eventWhitelist: EventWhitelistHash = {\r\n // Basic navigation\r\n [UserAction.Navigate]: EventWhitelistHelper.restrict,\r\n [UserAction.Click]: EventWhitelistHelper.allow,\r\n\r\n // Search\r\n [UserAction.Search]: EventWhitelistHelper.allow,\r\n [UserAction.InstantSearch]: EventWhitelistHelper.allow,\r\n\r\n // Watch/playback\r\n [UserAction.Play]: EventWhitelistHelper.allow,\r\n [UserAction.Stream]: EventWhitelistHelper.allow,\r\n [UserAction.StreamRaw]: EventWhitelistHelper.restrict,\r\n [UserAction.StreamProgress]: EventWhitelistHelper.allow,\r\n\r\n // Complex actions\r\n [UserAction.Rename]: EventWhitelistHelper.allow,\r\n [UserAction.Move]: EventWhitelistHelper.allow,\r\n [UserAction.Create]: EventWhitelistHelper.allow,\r\n [UserAction.Delete]: EventWhitelistHelper.allow,\r\n [UserAction.Associate]: EventWhitelistHelper.allow,\r\n [UserAction.Dissociate]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.Filter]: EventWhitelistHelper.allow,\r\n [UserAction.Sort]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.Approve]: EventWhitelistHelper.allow,\r\n [UserAction.Reject]: EventWhitelistHelper.allow,\r\n [UserAction.Disable]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.Upload]: EventWhitelistHelper.allow,\r\n [UserAction.Download]: EventWhitelistHelper.restrict,\r\n\r\n [UserAction.SetAccess]: EventWhitelistHelper.allow,\r\n [UserAction.AddToLocalCache]: EventWhitelistHelper.restrict,\r\n [UserAction.Share]: EventWhitelistHelper.allow,\r\n [UserAction.Edit]: EventWhitelistHelper.allow,\r\n [UserAction.Suggest]: EventWhitelistHelper.allow,\r\n\r\n // Migration events\r\n [UserAction.ResolveWarning]: EventWhitelistHelper.allow,\r\n [UserAction.DismissWarning]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.EditAssoc]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.Follow]: EventWhitelistHelper.allow\r\n};\r\n\r\nconst dataFormatters: DataFormatterHash = {\r\n [UserAction.Search]: DataFormatHelper.passthrough,\r\n [UserAction.InstantSearch]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.Play]: DataFormatHelper.passthrough,\r\n [UserAction.Stream]: VideoDataFormatHelper.getLegacyVideoData,\r\n [UserAction.StreamRaw]: DataFormatHelper.passthrough,\r\n [UserAction.StreamProgress]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.Click]: DataFormatHelper.passthrough,\r\n [UserAction.Filter]: DataFormatHelper.passthrough,\r\n [UserAction.Sort]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.SetAccess]: DataFormatHelper.passthrough,\r\n [UserAction.Approve]: DataFormatHelper.passthrough,\r\n [UserAction.Reject]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.Create]: DataFormatHelper.passthrough,\r\n [UserAction.Delete]: DataFormatHelper.passthrough,\r\n [UserAction.Rename]: DataFormatHelper.passthrough,\r\n [UserAction.Move]: DataFormatHelper.passthrough,\r\n [UserAction.Edit]: DataFormatHelper.passthrough,\r\n [UserAction.Share]: DataFormatHelper.passthrough,\r\n [UserAction.Disable]: DataFormatHelper.passthrough,\r\n [UserAction.Suggest]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.Upload]: UploadDataFormatHelper.getUploadData,\r\n\r\n [UserAction.ResolveWarning]: DataFormatHelper.passthrough,\r\n [UserAction.DismissWarning]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.Follow]: DataFormatHelper.passthrough\r\n};\r\n\r\n/**\r\n * A hash of data keys for events where the default of actionContext.entity isn't desired.\r\n */\r\nconst dataKeyMappings: { [eventType: string]: (event: IncomingEvent) => string } = {\r\n [UserAction.Search]: () => 'search',\r\n [UserAction.InstantSearch]: () => 'search',\r\n [UserAction.Filter]: () => 'filter',\r\n [UserAction.StreamRaw]: (event: IncomingEvent) => {\r\n if (event.actionContext.entity === EntityType.Interactive)\r\n return EntityType.Video;\r\n\r\n return event.actionContext.entity;\r\n }\r\n};\r\n\r\n/**\r\n * A hash of reserved keys on the CollectionEventData object and what they should be mapped to.\r\n */\r\nconst reservedDataKeyMappings: { [dataKey: string]: string } = {\r\n user: 'target_user'\r\n};\r\n\r\n/**\r\n * Data from events in this list will be logged at the event root\r\n * rather then nested under a dataKey.\r\n */\r\nconst flattenDataList: { [eventType: string]: boolean } = {\r\n [UserAction.StreamProgress]: true\r\n};\r\n\r\nexport const CollectionApiClientHelper = {\r\n shouldLog(event: IncomingEvent): boolean {\r\n return !!eventWhitelist[event.type](event as CoreAnalyticsType);\r\n },\r\n\r\n formatData(event: IncomingEvent): HashObject | HashObject[] {\r\n const formatter = dataFormatters[event.type];\r\n\r\n const data = TypeHelper.isFunction(formatter) ? formatter(event.data, event as CoreAnalyticsType) : event.data;\r\n\r\n if (flattenDataList[event.type])\r\n return data;\r\n\r\n let key: string = event.actionContext.entity;\r\n\r\n /**\r\n * Order here is important. We check the reserved data keys last.\r\n */\r\n if (TypeHelper.isFunction(dataKeyMappings[event.type]))\r\n key = dataKeyMappings[event.type](event);\r\n\r\n if (reservedDataKeyMappings[key])\r\n key = reservedDataKeyMappings[key];\r\n\r\n return { [key]: data };\r\n }\r\n};","import { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { HashObject, LocationContext, EntityType, EventDefaultValue } from 'libs/analytics/interfaces';\r\nimport { TypeHelper } from 'libs/analytics/utils/TypeHelper';\r\n\r\nfunction getEventMeta(event: CoreAnalyticsType): HashObject {\r\n if (!TypeHelper.isObject(event) || !TypeHelper.isObject(event.actionContext)) return {};\r\n\r\n const entity = event.actionContext.entity;\r\n const location = event.actionContext.location;\r\n const descriptor = event.actionContext.descriptor;\r\n\r\n return { entity, location, descriptor };\r\n}\r\n\r\nfunction getEditedVideoData(data: HashObject): HashObject {\r\n const mappedObject: HashObject = {};\r\n\r\n const getMappedValue = (value: any, key: string) => {\r\n switch (key) {\r\n\r\n // We don't need to capture the entire description, so use a default val instead.\r\n case 'description':\r\n return EventDefaultValue.ValueUpdated;\r\n\r\n // Return new assoc id\r\n case 'channel':\r\n case 'rating':\r\n case 'series':\r\n case 'distributor':\r\n case 'producer':\r\n return value && value.id || EventDefaultValue.EntityRemoved;\r\n\r\n default:\r\n return value;\r\n }\r\n };\r\n\r\n Object.keys(data).forEach((key: string) => {\r\n mappedObject[key] = getMappedValue(data[key], key);\r\n });\r\n\r\n return mappedObject;\r\n}\r\n\r\ntype DataFormatter = (data: HashObject, event: CoreAnalyticsType) => HashObject;\r\n\r\nexport interface DataFormatterHash {\r\n [eventType: string]: DataFormatter;\r\n}\r\n\r\nexport const DataFormatHelper = {\r\n /**\r\n * Object will be logged to sink as is\r\n */\r\n passthrough(data: HashObject): HashObject {\r\n return data;\r\n },\r\n\r\n getEditData(data: HashObject, event: CoreAnalyticsType): HashObject {\r\n const { entity, location, descriptor } = getEventMeta(event);\r\n\r\n // Extract changed values when a video is edited\r\n if (entity === EntityType.Video && location === LocationContext.EditVideoDetails)\r\n return getEditedVideoData(data);\r\n\r\n // Allow data to passthrough\r\n return data;\r\n }\r\n};\r\n","import { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\n\r\n/**\r\n * Manage which events we want to log\r\n * \r\n * @description\r\n * All events have a UserAction type, however, that same type can be used to represent\r\n * different types of actions. For example, `UserAction.Rename` is used for events involving\r\n * the renaming of folders, libraries and videos (from different parts of the product). \r\n * \r\n * So if a situation arises where we only want to collect events for a certain entity or from a \r\n * certain part of the product. We can add a custom callback below and filter based on the event's actionContext.\r\n */\r\nexport const EventWhitelistHelper = {\r\n // Allow logging for all events of a given type\r\n allow: () => true,\r\n\r\n // Disallow logging for all events of a given type\r\n restrict: () => false,\r\n};\r\n\r\nexport interface EventWhitelistHash {\r\n [eventType: string]: (event: CoreAnalyticsType) => boolean;\r\n}\r\n","export const TypeHelper = {\r\n isObject(obj: any): boolean {\r\n var type = typeof obj;\r\n return type === 'function' || type === 'object' && !!obj;\r\n },\r\n\r\n isFunction(fn: Function): fn is Function {\r\n return typeof fn === 'function';\r\n }\r\n};","import { HashObject, WorkflowPhase, EntityType, Subtitle, Resource } from 'libs/analytics/interfaces';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { TypeHelper } from 'libs/analytics/utils/TypeHelper';\r\n\r\nexport const UploadDataFormatHelper = {\r\n getUploadData(data: any, event: CoreAnalyticsType): HashObject {\r\n const { entity } = event.actionContext;\r\n\r\n if (entity === EntityType.Video)\r\n return UploadDataFormatHelper.formatVideoUpload(data, event);\r\n\r\n if (entity === EntityType.Resource || entity === EntityType.Subtitle)\r\n return UploadDataFormatHelper.formatResourceUpload(data);\r\n\r\n if (entity === EntityType.Banner || entity === EntityType.Thumbnail)\r\n return data;\r\n\r\n throw new Error('Upload data event not correctly formatted.');\r\n },\r\n\r\n formatVideoUpload(data: any, event: CoreAnalyticsType): HashObject[] {\r\n const { workflowPhase } = event.actionContext;\r\n\r\n if (workflowPhase === WorkflowPhase.Start)\r\n return UploadDataFormatHelper.getStartVideoUploadData(data);\r\n\r\n if (workflowPhase === WorkflowPhase.Discard)\r\n return UploadDataFormatHelper.getDiscardVideoUploadData(data);\r\n\r\n if (workflowPhase === WorkflowPhase.Complete)\r\n return UploadDataFormatHelper.getCompleteUploadData(data);\r\n },\r\n\r\n getStartVideoUploadData(files: File[] ): HashObject[] {\r\n if (!files || !files.length)\r\n return [];\r\n\r\n // Convert FileList to an array so that we can use Array.prototype.map\r\n if (files instanceof FileList)\r\n files = Array.from(files);\r\n\r\n return files.map(file => ({\r\n fileName: file.name,\r\n size: file.size,\r\n type: file.type,\r\n count: files.length\r\n }));\r\n },\r\n\r\n getDiscardVideoUploadData(uploads: HashObject | HashObject[]): HashObject[] {\r\n const formatUpload = (upload: HashObject) => {\r\n const { type, name, status, cvUpload } = upload.file;\r\n\r\n const baseData: HashObject = {\r\n fileName: name,\r\n count: Array.isArray(uploads) ? uploads.length : 1,\r\n type,\r\n status\r\n };\r\n\r\n if (upload.progress)\r\n baseData.progress = upload.progress.toFixed(2);\r\n\r\n if (cvUpload)\r\n baseData.uploadId = cvUpload.uploadId;\r\n\r\n return baseData;\r\n };\r\n\r\n if (Array.isArray(uploads))\r\n return uploads.map(upload => formatUpload(upload));\r\n\r\n return [formatUpload(uploads)];\r\n },\r\n\r\n getCompleteUploadData(videos: HashObject[]): HashObject[] {\r\n if (!videos || !videos.length)\r\n return [];\r\n\r\n return videos.map(video => {\r\n const { fileName, libraryId, folderId } = video;\r\n\r\n return {\r\n fileName,\r\n libraryId,\r\n folderId,\r\n count: videos.length\r\n };\r\n });\r\n },\r\n\r\n formatResourceUpload(item: Resource | Subtitle): HashObject {\r\n const { id, name } = item;\r\n\r\n const baseData: HashObject = { id, name };\r\n\r\n if (TypeHelper.isObject(item.metadata))\r\n baseData.type = item.metadata.type;\r\n\r\n return baseData;\r\n }\r\n};","export const UrlHelper = {\r\n safeUrlConcat(baseUrl: string, path: string): string {\r\n if (!baseUrl) return;\r\n\r\n let url = baseUrl;\r\n\r\n if (!baseUrl.endsWith('/'))\r\n url += '/';\r\n\r\n if (!path) return url;\r\n\r\n url += path.startsWith('/')\r\n ? path.slice(1)\r\n : path;\r\n\r\n return url;\r\n }\r\n};","import { VersionData } from 'libs/analytics/interfaces/VersionData';\r\n\r\nconst UARegex = {\r\n mobileDevice: /Mobi/i,\r\n\r\n // Mobile device regex\r\n iphone: /iphone/i,\r\n ipad: /ipad/i,\r\n android: /android/i,\r\n blackberry: /blackberry/i,\r\n windowsPhone: /windows phone/i,\r\n\r\n // Mobile versions\r\n iosVersion: /OS\\s+([\\d_.-:]+)\\s/i,\r\n androidVersion: /android\\s+([\\d_.-\\/]+)[\\s;:,\\)]/i,\r\n blackberryVersion: /(blackberry|version)\\s?\\d*\\/([\\d.]+)/i,\r\n windowsPhoneVersion: /windows\\sphone.*?([\\d_.-\\/]+)[\\s;:,\\)]/i,\r\n\r\n // OS regex\r\n mac: /Mac/i,\r\n unix: /X11/i,\r\n linux: /Linux/i,\r\n windows: /Win/i,\r\n\r\n // Win OS Version \r\n win2000: /nt 5.0/i,\r\n winXP: /nt 5.1/i,\r\n winVista: /nt 6.0/i,\r\n win7: /nt 6.1/i,\r\n win8: /nt 6.2/i,\r\n win81: /nt 6.3/i,\r\n win10: /nt 10.0/i,\r\n\r\n // OS X Version\r\n osxVersion: /OS\\sX\\s([\\d_.]+)/i,\r\n\r\n // Browsers\r\n chrome: /^(?!.*Edge).*Chrome/i,\r\n safari: /^(?!.*(?:Chrome|Edge)).*Safari/i,\r\n edge: /edge/i,\r\n ie: /(msie|trident)/i,\r\n opera: /(opr|opera)/i,\r\n firefox: /firefox/i,\r\n\r\n generalVersion: /(chrome|firefox|version)\\/(\\d+.*?)(\\s|$)/i,\r\n operaVersion: /(opr|opera)\\/(\\d+).*?(\\s|$)/i,\r\n ieVersion: /MSIE\\s+(\\d+).*?/i,\r\n edgeVersion: /(edge)\\/(\\d+).*?(\\s|$)/i,\r\n};\r\n\r\nconst UA_DEFAULT = 'Unknown';\r\n\r\nfunction getBrowserVersion(browserName: string, regex: RegExp, ua: string): VersionData {\r\n const result: string[] = regex.exec(ua) || [];\r\n\r\n let [ joined, name, version ] = result;\r\n\r\n if (!version) version = UA_DEFAULT;\r\n\r\n return { name: browserName, version: version };\r\n}\r\n\r\n/**\r\n * Attempt to extract the OS version from the UA string\r\n */\r\nfunction getOSVersion(osName: string, regex: RegExp, ua: string): VersionData {\r\n if (!regex)\r\n return { name: osName, version: UA_DEFAULT };\r\n\r\n const match = regex.exec(ua);\r\n const version = match && match.length ? match[0].trim() : UA_DEFAULT;\r\n\r\n return { name: osName, version: version };\r\n}\r\n\r\n/**\r\n * For windows machines, we'll attempt to extract the version\r\n * and map it against the corresponding Win cononical name for convenience.\r\n */\r\nfunction getWindowsVersion(osName: string, ua: string): VersionData {\r\n const os: VersionData = { name: osName, version: null };\r\n\r\n if (UARegex.win2000.test(ua)) os.version = '2000';\r\n if (UARegex.winXP.test(ua)) os.version = 'XP';\r\n if (UARegex.winVista.test(ua)) os.version = 'Vista';\r\n if (UARegex.win7.test(ua)) os.version = '7';\r\n if (UARegex.win8.test(ua)) os.version = '8';\r\n if (UARegex.win81.test(ua)) os.version = '8.1';\r\n if (UARegex.win10.test(ua)) os.version = '10';\r\n\r\n if (!os.version) os.version = UA_DEFAULT;\r\n\r\n return os;\r\n}\r\n\r\n/**\r\n * Test order is important for all UARegex tests. Reordering them will break functionality.\r\n */\r\nexport const UserAgentHelper = {\r\n getDeviceType(): string {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (!UARegex.mobileDevice.test(ua))\r\n return 'Desktop';\r\n\r\n if (UARegex.iphone.test(ua)) return 'iPhone';\r\n if (UARegex.ipad.test(ua)) return 'iPad';\r\n if (UARegex.android.test(ua)) return 'Android';\r\n if (UARegex.blackberry.test(ua)) return 'Blackberry';\r\n if (UARegex.windowsPhone.test(ua)) return 'Windows Phone';\r\n\r\n return UA_DEFAULT;\r\n },\r\n\r\n getOperatingSystem(): VersionData {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (UARegex.android.test(ua))\r\n return getOSVersion('Android', UARegex.androidVersion, ua);\r\n\r\n if (UARegex.iphone.test(ua) || UARegex.ipad.test(ua))\r\n return getOSVersion('iOS', UARegex.iosVersion, ua);\r\n\r\n if (UARegex.linux.test(ua))\r\n return getOSVersion('Linux', null, ua);\r\n\r\n if (UARegex.unix.test(ua))\r\n return getOSVersion('Unix', null, ua);\r\n\r\n if (UARegex.mac.test(ua))\r\n return getOSVersion('Macintosh', UARegex.osxVersion, ua);\r\n\r\n if (UARegex.windows.test(ua))\r\n return getWindowsVersion('Windows', ua);\r\n\r\n if (UARegex.blackberry.test(ua))\r\n return getOSVersion('BlackBerry', UARegex.blackberryVersion, ua);\r\n\r\n if (UARegex.windowsPhone.test(ua))\r\n return getOSVersion('Windows Phone', UARegex.windowsPhoneVersion, ua);\r\n\r\n return { name: UA_DEFAULT, version: UA_DEFAULT };\r\n },\r\n\r\n getBrowser(): VersionData {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (UARegex.chrome.test(ua))\r\n return getBrowserVersion('Chrome', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.firefox.test(ua))\r\n return getBrowserVersion('Firefox', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.safari.test(ua))\r\n return getBrowserVersion('Safari', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.ie.test(ua))\r\n return getBrowserVersion('Internet Explorer', UARegex.ieVersion, ua);\r\n\r\n if (UARegex.edge.test(ua))\r\n return getBrowserVersion('Edge', UARegex.edgeVersion, ua);\r\n\r\n if (UARegex.opera.test(ua))\r\n return getBrowserVersion('Opera', UARegex.operaVersion, ua);\r\n\r\n return { name: UA_DEFAULT, version: UA_DEFAULT };\r\n },\r\n\r\n isTouchScreen(): boolean {\r\n return !!('ontouchstart' in window || navigator.maxTouchPoints);\r\n }\r\n};\r\n","import { HashObject, Video, Series, Owner, Playlist, Rating, Folder } from 'libs/analytics/interfaces';\r\n\r\nexport interface VideoWatchAnalyticsEvent {\r\n model: Video;\r\n playbackStatus: PlaybackStatus;\r\n}\r\n\r\nexport interface PlaybackStatus {\r\n position: number;\r\n chapter: number;\r\n totalDuration: number;\r\n totalWatched: number;\r\n hasStarted?: boolean;\r\n}\r\n\r\ninterface BaseVideoData {\r\n id: string;\r\n title: string;\r\n trackingCode: string;\r\n duration: number;\r\n}\r\n\r\ninterface BaseAssocData {\r\n id: string;\r\n title?: string;\r\n}\r\n\r\nexport interface VideoAnalyticsPayload {\r\n video: BaseVideoData;\r\n rating?: string;\r\n series?: BaseAssocData;\r\n folder?: BaseAssocData;\r\n owner?: BaseAssocData;\r\n playlist?: BaseAssocData;\r\n playbackStatus?: PlaybackStatus;\r\n}\r\n\r\n/**\r\n * Only allow valid Video assocs to be captured\r\n */\r\ntype VideoAssocs = Series | Owner | Playlist;\r\n\r\nfunction getBasicVideoData(model: Video): BaseVideoData {\r\n if (!model || !model.id)\r\n throw new Error('Video model required. Checking logging.');\r\n\r\n return {\r\n id: model.id,\r\n title: model.name,\r\n trackingCode: model.trackingCode,\r\n duration: model.duration\r\n };\r\n}\r\n\r\nfunction getRatingData(model: Rating): string {\r\n if (!model || !model.code) return;\r\n return model.code;\r\n}\r\n\r\nfunction getAssocData(model: VideoAssocs, options: HashObject = {}): BaseAssocData {\r\n if (!model || !model.id) return;\r\n\r\n const data: BaseAssocData = {\r\n id: model.id\r\n };\r\n\r\n if (model.name && !options.ignoreTitle)\r\n data.title = model.name;\r\n\r\n return data;\r\n}\r\n\r\nfunction getFolderData(collection: Folder[]): BaseAssocData {\r\n if (!collection || !collection.length) return;\r\n\r\n const folder = collection[0];\r\n\r\n return {\r\n id: folder.id,\r\n title: folder.name\r\n };\r\n}\r\n\r\n// TODO: Remove when migration to StreamRaw is finalised.\r\nexport const VideoDataFormatHelper = {\r\n getVideoData(options: VideoWatchAnalyticsEvent): VideoAnalyticsPayload {\r\n let { playbackStatus } = options;\r\n const model = options.model;\r\n\r\n const video = getBasicVideoData(model);\r\n\r\n // Extract assoc data\r\n const series = getAssocData(model.series);\r\n const folder = getFolderData(model.categories);\r\n const owner = getAssocData(model.owner, { ignoreTitle: true });\r\n const playlist = getAssocData(model.playlist);\r\n const rating = getRatingData(model.rating);\r\n\r\n const data: VideoAnalyticsPayload = { video };\r\n\r\n if (rating) data.rating = rating;\r\n if (series) data.series = series;\r\n if (folder) data.folder = folder;\r\n if (owner) data.owner = owner;\r\n if (playlist) data.playlist = playlist;\r\n if (playbackStatus) data.playbackStatus = playbackStatus;\r\n\r\n return data;\r\n },\r\n\r\n/**\r\n * Map to the same properties recorded in Online.\r\n * @see _toLogMasterVideo() in AnalyticsService in Online\r\n * \r\n * TODO: Video origin and user channel logging - both of these need to be re-worked properly.\r\n */\r\n getLegacyVideoData(options: VideoWatchAnalyticsEvent): HashObject {\r\n const model = options.model;\r\n\r\n const video: HashObject = {\r\n id: model.id.toString(),\r\n year: model.productionYear,\r\n title: model.name,\r\n trackingCode: model.trackingCode,\r\n };\r\n\r\n const rating = getRatingData(model.rating);\r\n const series = getAssocData(model.series);\r\n const folder = getFolderData(model.categories);\r\n const owner = getAssocData(model.owner, { ignoreTitle: true });\r\n const playlist = getAssocData(model.playlist);\r\n\r\n if (rating) video.rating = rating;\r\n if (owner) video.ownerId = owner.id;\r\n\r\n if (series) {\r\n video.seriesId = series.id;\r\n video.series = series.title;\r\n }\r\n\r\n if (folder) video.category = folder.title;\r\n if (playlist) video.playlist = playlist;\r\n\r\n return video;\r\n },\r\n};\r\n","export const BehaviorChannels = {\r\n LAZY_LOAD: 'lazy:load:behavior',\r\n POPUP: 'popup:behavior',\r\n IMAGE_SELECT: 'image:select:behavior'\r\n};","export enum Caches {\r\n Fifo = 'FifoMemoryCache'\r\n}","export const CommonChannels = {\r\n SHELL: 'global:shell',\r\n ALERT: 'global:alert',\r\n POPUP: 'global:popup',\r\n};","export const CommonServices = {\r\n ALERT: 'AlertService',\r\n SCROLL: 'ScrollService',\r\n LANGUAGE: 'LanguageService'\r\n};","export enum DataProviders {\r\n Ajax = 'AjaxDataProvider',\r\n Notifications = 'NotificationsSignalRDataProvider'\r\n}","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash } from 'backbone';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EventNames } from './EventNames';\r\n\r\n/**\r\n * Used to match on params in a backbone route.\r\n * (e.g. matches :id in /videos/:id)\r\n * Borrowed directly from backbone.\r\n */\r\nconst routeParamMatcher = /((\\(\\?)?:\\w+)|(\\*\\w+)/;\r\n\r\n/**\r\n * Used to strip out parenths in optional sections of routes.\r\n * (e.g. /videos(/edit) will become /videos/edit)\r\n */\r\nconst parenthMatcher = /[\\(\\)]/g;\r\n\r\n/**\r\n * Excludes optional trailing slashes\r\n * (e.g. /videos/123(/) would become /videos/123)\r\n */\r\nconst optionalSlashMatcher = /\\(\\/\\)/g;\r\n\r\n/**\r\n * Removes trailing slashes. A more efficient way of\r\n * doing .endsWith('/')\r\n */\r\nconst trailingSlashMatcher = /\\/$/;\r\n\r\n\r\nexport interface AppLink {\r\n application: string;\r\n action: string;\r\n args?: (string | number)[];\r\n params?: string | ObjectHash;\r\n}\r\n\r\nexport interface AppLinkHash {\r\n [selector: string]: AppLink;\r\n}\r\n\r\nexport interface AppLinkOptions {\r\n replace?: boolean;\r\n}\r\n\r\nexport const AppLinkUtility = {\r\n routingStarted(): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ROUTING_START);\r\n },\r\n routingEnded(): void {\r\n if (!AppLinkUtility.hasActiveRoute())\r\n return;\r\n\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ROUTING_END);\r\n },\r\n hasActiveRoute(): boolean {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n return channel.request(EventNames.HAS_ACTIVE_ROUTE);\r\n }\r\n};\r\n\r\nconst triggerAppLink = (appLink: AppLink, options: AppLinkOptions = {}) => {\r\n (options as any).usedHelper = true;\r\n\r\n const { application, action } = appLink;\r\n Radio.channel(application).trigger(action, appLink, options);\r\n};\r\n\r\nexport const AppLinkHelper = {\r\n\r\n /**\r\n * Build a href string from an AppLink object \r\n * @param appLink \r\n */\r\n getHref(appLink: AppLink): string {\r\n if (!appLink)\r\n return '';\r\n\r\n const { application, action, args, params } = appLink;\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n return `/${shellChannel.request(EventNames.ROUTE_LOOKUP, `${application}:${action}`, args, params)}`;\r\n },\r\n\r\n /**\r\n * This is the reverse process of extracting params out of a route.\r\n * (e.g. Will take the route '/videos/:id' and an array of args = [123]\r\n * and return '/videos/123')\r\n */\r\n buildRoute(route: string, appLink: AppLink): string {\r\n if (!appLink) return route;\r\n\r\n let args: any[] = appLink.args;\r\n let params: string | ObjectHash = appLink.params;\r\n\r\n _.each(args, arg => { route = route.replace(routeParamMatcher, arg || ''); });\r\n route = route.replace(optionalSlashMatcher, '');\r\n route = route.replace(parenthMatcher, '');\r\n route = route.replace(trailingSlashMatcher, '');\r\n\r\n if (!params)\r\n return route;\r\n\r\n const queryParams = LocationUtils.SerializeQueryParams(params);\r\n\r\n if (!queryParams.length)\r\n return route;\r\n\r\n return `${route}?${queryParams}`;\r\n },\r\n\r\n /**\r\n * Manually trigger an AppLink\r\n * @param appLink \r\n */\r\n trigger(appLink: AppLink, options?: AppLinkOptions): void {\r\n if (!appLink)\r\n return;\r\n\r\n if (!AppLinkUtility.hasActiveRoute()) {\r\n triggerAppLink(appLink, options);\r\n return;\r\n }\r\n\r\n /**\r\n * If there is currently an applink executing, we wait till that\r\n * execution is over before triggering the next applink.\r\n * \r\n * This will prevent the url being update to the first applink after\r\n * the second applink has run\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.once('routing:end', () => {\r\n triggerAppLink(appLink, options);\r\n });\r\n },\r\n\r\n getCurrentAppLink(): AppLink {\r\n return Radio.channel(CommonChannels.SHELL)\r\n .request(EventNames.CURRENT_ROUTE);\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { Shell } from './Shell';\r\nimport { BaseApplication, BaseApplicationOptions } from './BaseApplication';\r\nimport { AppLink, AppLinkUtility, AppLinkOptions, AppLinkHelper } from './AppLink';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { MiddlewareFunction, Middleware } from './Middleware';\r\nimport { EventNames } from './EventNames';\r\nimport { CoreError, ErrorHelper } from './BaseError';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nexport interface ExecuteRouteOptions {\r\n isAppRoute: boolean;\r\n}\r\n\r\n/**\r\n * Used to split lowerCamelCase method names into words.\r\n */\r\nconst splitter = /([A-Z])/g;\r\n\r\n/**\r\n * Used to split event names into words.\r\n */\r\nconst reverseSplitter = /(^|:)(\\w)/gi;\r\n\r\n/**\r\n * This should only ever be used by the shell\r\n * creating a new instance of the AppRoute\r\n */\r\nexport interface BaseAppRouterOptions extends Marionette.AppRouterOptions {\r\n appConstructor: typeof BaseApplication;\r\n\r\n /**\r\n * These will be passed into the appConstructor\r\n * when creating an instance of the Application\r\n */\r\n appOptions?: BaseApplicationOptions;\r\n shell: Shell;\r\n}\r\n\r\n/**\r\n * Every Application must have an AppRouter\r\n */\r\nexport class BaseAppRouter extends Marionette.AppRouter {\r\n /**\r\n * A hash of urls to method names on the Application.\r\n * Exactly the same implementation as Backbone Router routes\r\n * except the methods exist on the Application.\r\n * See http://backbonejs.org/#Router-routes\r\n */\r\n protected appRoutes?: Marionette.AppRoutes;\r\n\r\n protected appLinks?: string[];\r\n\r\n protected externalRoutes?: Marionette.AppRoutes;\r\n\r\n /**\r\n * The channelName used to trigger the appLinks\r\n * on backbone.radio. This will match the Application's\r\n * channelName.\r\n */\r\n protected channelName?: string;\r\n\r\n /**\r\n * These are async middleware functions that are run\r\n * before any route on this router is executed.\r\n * \r\n * They can be used to prevent access to a router using\r\n * asyncronous code.\r\n */\r\n protected filters: MiddlewareFunction<AppLink>[];\r\n\r\n /**\r\n * See BaseAppRouterOptions above.\r\n */\r\n protected options?: BaseAppRouterOptions;\r\n\r\n constructor(options?: BaseAppRouterOptions) {\r\n super(options);\r\n\r\n this.bindDisposal();\r\n this.processInternalRoutes();\r\n this.processExternalRoutes();\r\n this.processAppLinks();\r\n }\r\n\r\n private bindDisposal(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTE, (appLink: AppLink) => {\r\n if (appLink.application !== this.channelName) this.destroyApp();\r\n });\r\n }\r\n\r\n private addRouteLookup(eventName: string, route: string): void {\r\n /**\r\n * Create route look ups for each appRoute so that\r\n * anchor tags using appLinks can generate the correct href.\r\n * These are added to the shell so that all routes can be\r\n * easily found.\r\n */\r\n this.options.shell.addRouteLookup(\r\n `${this.channelName}:${eventName}`, (eventArgs?: any[], params?: string | ObjectHash) => {\r\n return AppLinkHelper.buildRoute(route, {\r\n application: this.channelName,\r\n action: eventName,\r\n args: eventArgs,\r\n params });\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Creates all the reverse route lookups\r\n * and binds all the appLinks to the radio channel\r\n */\r\n private processInternalRoutes(): void {\r\n _.each(_.keys(this.appRoutes), route => {\r\n const methodName = this.appRoutes[route];\r\n const eventName = this.toEventName(methodName);\r\n\r\n this.addRouteLookup(eventName, route);\r\n\r\n /**\r\n * Adds an event listener on the application's channel\r\n * so that other parts of the application can directly trigger\r\n * routes without the use of window.navigate. This decouples\r\n * the application from the url bar in a browser.\r\n */\r\n this.listenTo(this.channelName, eventName, (appLink: AppLink, options: AppLinkOptions) => {\r\n if (!options || !(options as any).usedHelper)\r\n ErrorHelper.throw(new CoreError('Please use Core.AppLinkHelper.trigger({}) to trigger appLinks.'));\r\n\r\n this.executeRoute(appLink, { isAppRoute: true }, () => {\r\n const params = _.extend({}, this.controller.getAndClearDefaultQueryParams(), appLink.params);\r\n appLink.params = params;\r\n\r\n LocationUtils.UpdateUrl(route, appLink, options);\r\n });\r\n });\r\n });\r\n }\r\n\r\n private processExternalRoutes(): void {\r\n if (!this.externalRoutes)\r\n return;\r\n\r\n _.each(_.keys(this.externalRoutes), route => {\r\n const methodName = this.externalRoutes[route];\r\n const eventName = this.toEventName(methodName);\r\n\r\n this.addRouteLookup(eventName, route);\r\n\r\n /**\r\n * External routes are triggered exactly the same as other appLinks but take the user\r\n * to a different page on the same website using a PageLoad.\r\n */\r\n this.listenTo(this.channelName, eventName, (appLink: AppLink, options: AppLinkOptions) => {\r\n if (!options || !(options as any).usedHelper)\r\n ErrorHelper.throw(new CoreError('Please use Core.AppLinkHelper.trigger({}) to trigger appLinks.'));\r\n\r\n LocationUtils.PageLoad(AppLinkHelper.getHref(appLink));\r\n });\r\n });\r\n }\r\n\r\n private processAppLinks(): void {\r\n if (!this.appLinks)\r\n return;\r\n\r\n _.each(this.appLinks, methodName => {\r\n const eventName = this.toEventName(methodName);\r\n\r\n this.listenTo(this.channelName, eventName, (appLink: AppLink, options: AppLinkOptions) => {\r\n if (!options || !(options as any).usedHelper)\r\n ErrorHelper.throw(new CoreError('Please use Core.AppLinkHelper.trigger({}) to trigger appLinks.'));\r\n\r\n this.executeRoute(appLink, { isAppRoute: false });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * This is the heart of the AppRouter. Every single route both page loads\r\n * and appLinks will go through this method.\r\n *\r\n * This will return false if onBeforeAction returns false\r\n * and the window history will not be altered.\r\n */\r\n private executeRoute(appLink: AppLink, options: ExecuteRouteOptions, done?: () => void): void {\r\n this.validateAppLink(appLink);\r\n\r\n const methodName = this.toMethodName(appLink.action);\r\n\r\n /**\r\n * AppLinkUtility lets us ensure that no other appLink\r\n * is fired and executed while this appLink is executing.\r\n */\r\n AppLinkUtility.routingStarted();\r\n\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n\r\n /**\r\n * Prevent a navigate event where the Shell has been locked\r\n */\r\n if (this.options.shell.isNavLocked()) {\r\n shellChannel.trigger(EventNames.NAV_IS_LOCKED, appLink);\r\n AppLinkUtility.routingEnded();\r\n return;\r\n }\r\n\r\n const middleware = new Middleware<AppLink>();\r\n\r\n /**\r\n * Each of the filters defined on the router is run through\r\n * before we execute this route. Any filter can prevent the route from\r\n * executing by not calling next, instead calling AppLinkUtility.routingEnded(); \r\n * and throwing an error.\r\n */\r\n _.each(this.filters, filter => middleware.use(filter));\r\n\r\n middleware.go(appLink, () => {\r\n /**\r\n * Let the entire application know that the page is moving\r\n * to a new route. Also informs which application we're moving to.\r\n * \r\n * Options will let the application know if this appLink has an associated route\r\n */\r\n shellChannel.trigger(EventNames.ROUTE, appLink, options);\r\n\r\n /**\r\n * Instantiate the app if it had not already been created.\r\n */\r\n this.createApp();\r\n const app = this.controller;\r\n\r\n /**\r\n * Ensure the action is defined on the application\r\n */\r\n if (!_.isFunction(app[methodName])) {\r\n AppLinkUtility.routingEnded();\r\n ErrorHelper.throw(new CoreError(`${methodName} does not exist on the ${_.result(app, 'name')}.`));\r\n }\r\n\r\n /**\r\n * Check if the application wants to trigger the action\r\n * by calling onBeforeAction. If onBeforeAction returns falls\r\n * onActionCancelled is triggered on the application.\r\n */\r\n if (app.triggerMethod('before:action') === false) {\r\n app.triggerMethod('action:cancelled');\r\n AppLinkUtility.routingEnded();\r\n return;\r\n }\r\n\r\n /**\r\n * Ask the application to load it's layout.\r\n * onLoadLayout is defined in Core.Application\r\n * and should not be extended.\r\n */\r\n app.triggerMethod('load:layout');\r\n\r\n /**\r\n * Call the application's action passing the \r\n * deserialized query params as the last argument.\r\n */\r\n app[methodName].apply(app, [ ...(appLink.args || []), appLink.params || {} ]);\r\n\r\n if (_.isFunction(done))\r\n done();\r\n\r\n AppLinkUtility.routingEnded();\r\n });\r\n }\r\n\r\n /**\r\n * Instantiates and starts the application if there was\r\n * not already an instance.\r\n *\r\n * Why is the application stores on this.controller?\r\n * In Marionette AppRouters hold reference to a controller\r\n * which in turn is responsibile for maintaining reference to an application.\r\n * We've restructured this architecture so that AppRouters directly hold\r\n * the instance of the Application, but are still leveraging Marionette's\r\n * use of appRoutes on the controller.\r\n */\r\n private createApp(): void {\r\n if (this.controller) return;\r\n\r\n this.controller = new this.options.appConstructor(this.options.appOptions);\r\n this.controller.start();\r\n }\r\n\r\n private destroyApp(): void {\r\n if (!this.controller) return;\r\n\r\n const app = this.controller as BaseApplication;\r\n app.destroy();\r\n delete this.controller;\r\n }\r\n\r\n /**\r\n * Overriding Marionette.AppRouter's _addAppRoute so that\r\n * execute route is called instead of the method directly.\r\n *\r\n * We do this so that executeRoute can be called for every single\r\n * route, whether it's a page load or an appLink. This will make it easier\r\n * to modify the action\r\n */\r\n private _addAppRoute(controller: BaseApplication, route: string, methodName: string): void {\r\n this.route(route, methodName, (...args: any[]) => {\r\n const appLink: AppLink = {\r\n application: this.channelName,\r\n action: this.toEventName(methodName),\r\n args: args.slice(0, args.length - 1),\r\n params: LocationUtils.DeserializeQueryParams(args[args.length - 1])\r\n };\r\n\r\n this.executeRoute(appLink, { isAppRoute: true }, () => {\r\n LocationUtils.UpdateQuery(_.extend(this.controller.getAndClearDefaultQueryParams(), appLink.params));\r\n });\r\n });\r\n }\r\n\r\n private toEventName(methodName: string): string {\r\n return methodName.replace(splitter, ':$1').toLowerCase();\r\n }\r\n\r\n private toMethodName(eventName: string): string {\r\n const titleCase = eventName.replace(reverseSplitter, (match: string, prefix: string, name: string) => {\r\n return name.toUpperCase();\r\n });\r\n return titleCase[0].toLowerCase() + titleCase.slice(1, titleCase.length);\r\n }\r\n\r\n private validateAppLink(appLink: AppLink): void {\r\n if (!appLink.application || !appLink.action) {\r\n AppLinkUtility.routingEnded();\r\n ErrorHelper.throw(new CoreError('Invalid AppLink'));\r\n }\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { Shell } from './Shell';\r\nimport { BaseLayoutView, BaseLayoutViewOptions } from './BaseLayoutView';\r\nimport { LayoutService, LayoutOptions } from './LayoutService';\r\nimport { BaseAppRouter } from './BaseAppRouter';\r\nimport { CoreView } from './BaseView';\r\nimport { EventNames } from './EventNames';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseApplicationOptions extends Marionette.ApplicationOptions {\r\n shell: Shell;\r\n layoutService: LayoutService;\r\n channelName?: string;\r\n}\r\n\r\nexport class BaseApplication extends Marionette.Application {\r\n /**\r\n * Layout service is used to retreive the layout on each route\r\n */\r\n private layoutService: LayoutService;\r\n\r\n /** \r\n * The layout that should be used to render all content into the DOM\r\n */\r\n protected layout?: BaseLayoutView;\r\n\r\n /**\r\n * This is specified by all children of Core.Application\r\n * to determine which layout to load in from layout service,\r\n * and what options to instantiate it with.\r\n */\r\n protected layoutOptions: LayoutOptions<BaseLayoutViewOptions>;\r\n\r\n /**\r\n * A reference to the shell is always kept as a \r\n * way to both render the layout into the dom\r\n * and keep reference to global services\r\n */\r\n protected shell: Shell;\r\n\r\n /**\r\n * An instance of the Core.AppRouter is created\r\n * for each Application in order to listen to applink\r\n * events. The application instance is only then instantiated\r\n * when the Application route is hit\r\n */\r\n public static router: typeof BaseAppRouter;\r\n\r\n /** \r\n * Provides the ability to define useful error messages.\r\n */\r\n public name: string;\r\n\r\n /** When overridden determines which options are \r\n * mixed into the instance */\r\n public props: string[];\r\n\r\n /**\r\n * Used by application actions to set default options.\r\n */\r\n private defaultQueryParams: ObjectHash;\r\n\r\n /** \r\n * Shell and layoutService will be mixed into each instance\r\n * of Core.Applicataion\r\n */\r\n public get defaultProps(): string[] {\r\n return [ 'shell', 'layoutService' ];\r\n }\r\n\r\n /**\r\n * The constructor will merge in props and ensure any required properties\r\n * are defined\r\n * @constructor\r\n */\r\n constructor(options?: BaseApplicationOptions) {\r\n super(options);\r\n\r\n /** merge in any properties we want added to `this` */\r\n this.mergeOptions(options, [ ...this.defaultProps, ...(this.props || []) ]);\r\n\r\n if (!_.result(this, 'name'))\r\n ErrorHelper.throw(new CoreError('BaseApplication must define a name'));\r\n\r\n if (!_.result(this, 'channelName'))\r\n ErrorHelper.throw(new CoreError('BaseApplication must define a channelName'));\r\n\r\n this.listenTo(this.getGlobalRadioChannel('popup'), EventNames.SHOW_POPUP, this.onShowPopup);\r\n this.listenTo(this.getGlobalRadioChannel('alert'), 'show:alert', this.onShowAlert);\r\n }\r\n\r\n private getGlobalRadioChannel(prop: string): Radio.Channel {\r\n const globalChannels = this.shell.getGlobalRadioChannels();\r\n const channelName = globalChannels[prop.toUpperCase()];\r\n\r\n if (!channelName)\r\n ErrorHelper.throw(new CoreError(`Global channel ${channelName} does not exist`));\r\n\r\n return Radio.channel(channelName);\r\n }\r\n\r\n /**\r\n * This method is triggered by Core.AppRouter when it loads\r\n * in a route for this application. It will swap in the appropriate \r\n * layout before hitting the application's action.\r\n * \r\n */\r\n private onLoadLayout(): void {\r\n if (!this.layoutOptions || !this.layoutOptions.name) return;\r\n var options = _.extend({}, this.layoutOptions.options || {}, { store: this.shell.store });\r\n this.layout = this.layoutService.getLayout(_.extend(this.layoutOptions, { options }));\r\n\r\n if (!this.layout)\r\n ErrorHelper.throw(new CoreError(\r\n `Layout: ${this.layoutOptions.name} does not exist or was not registered`\r\n ));\r\n\r\n this.shell.showView(this.layout);\r\n\r\n /**\r\n * This is triggered so that applications can render in \r\n * any layout-esk components that need to be slightly more\r\n * application specific than a layout can handle. \r\n * For example the top navigation, where the application\r\n * needs to specify which item is highlighted.\r\n */\r\n this.triggerMethod('layout:loaded');\r\n }\r\n\r\n private onShowPopup(view: CoreView): void {\r\n if (!this.layout.getRegion('popup'))\r\n ErrorHelper.throw(new CoreError('Your application layout must define a popup region'));\r\n\r\n this.layout.showChildView('popup', view);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash): void {\r\n const { ctor, collection } = options;\r\n\r\n const region = this.layout.getRegion('alert');\r\n\r\n if (!region) {\r\n ErrorHelper.throw(new CoreError('Your application layout must define an alert region'));\r\n return;\r\n }\r\n\r\n // Only construct the alert view if an instance doesn not already\r\n // exist in the current region.\r\n if (region.hasView())\r\n return;\r\n\r\n this.layout.showChildView('alert', new ctor({ collection }));\r\n }\r\n\r\n protected setDefaultQueryParams(params: ObjectHash): void {\r\n /**\r\n * If an action calls another action within a single route\r\n * workflow setDefaultQueryParams may be called more than once\r\n * so we need to preserve all values passed it.\r\n * The last values will always override the first ones.\r\n */\r\n if (this.defaultQueryParams)\r\n params = _.extend(this.defaultQueryParams, params);\r\n\r\n this.defaultQueryParams = params;\r\n }\r\n\r\n public getAndClearDefaultQueryParams(): ObjectHash {\r\n const params = this.defaultQueryParams;\r\n delete this.defaultQueryParams;\r\n return params || {};\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as Marionette from 'backbone.marionette';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseBehavior extends Marionette.Behavior{\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as Backbone from 'backbone';\r\nimport { BaseModel } from './BaseModel';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseCollection<TModel extends BaseModel = BaseModel> extends Backbone.Collection<TModel> {\r\n public parent?: BaseModel | BaseCollection;\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseCollection } from './BaseCollection';\r\nimport { CoreView } from './BaseView';\r\nimport { BaseModel } from './BaseModel';\r\nimport * as _ from 'underscore';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseCollectionViewOptions<TModel extends BaseModel = BaseModel>\r\n extends Marionette.CollectionViewOptions<TModel>\r\n{\r\n channelName?: string;\r\n}\r\n\r\nexport class BaseCollectionView<\r\n TModel extends BaseModel = BaseModel,\r\n TView extends CoreView<TModel> = CoreView<TModel>,\r\n TCollection extends BaseCollection<TModel> = BaseCollection<TModel>\r\n> extends Marionette.CollectionView<TModel, TView, TCollection> {\r\n protected options: BaseCollectionViewOptions<TModel>;\r\n\r\n constructor(options?: BaseCollectionViewOptions<TModel>) {\r\n super(options);\r\n\r\n if (!_.result(this, 'name')) {\r\n ErrorHelper.throw(new CoreError(`Error: View with cid:${this.cid} requires a name.`));\r\n }\r\n }\r\n\r\n public serializeModel(): any {\r\n if (!this.model) {\r\n return {};\r\n }\r\n return this.model.toJSON();\r\n }\r\n public serializeCollection(): any[] {\r\n if (!this.collection) {\r\n return [];\r\n }\r\n return this.collection.toJSON();\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\nimport { EventNames } from './EventNames';\r\n\r\nexport class BaseError extends Error {\r\n public name: string;\r\n\r\n constructor(message: string) {\r\n super(message);\r\n }\r\n}\r\n\r\n/**\r\n * You can use these if you want to leverage the convenience \r\n * of the error set up without actually throwing the error\r\n */\r\nexport abstract class SilentError extends BaseError {\r\n public get name(): string {\r\n return 'SilentError';\r\n }\r\n}\r\n\r\nexport class CoreError extends Error {\r\n public get name(): string {\r\n return 'CoreError';\r\n }\r\n}\r\n\r\nconst ErrorHelper = {\r\n throw(error: BaseError): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ERROR, error);\r\n\r\n if (!(error instanceof SilentError) && !EnvironmentVariables.isDevelopment)\r\n throw error;\r\n }\r\n};\r\n\r\nexport { ErrorHelper };","import * as _ from 'underscore';\r\n\r\nimport { BaseView, BaseViewOptions } from './BaseView';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { Store } from 'redux';\r\n\r\nexport interface BaseLayoutViewOptions extends BaseViewOptions {\r\n store?: Store;\r\n}\r\n\r\nexport class BaseLayoutView extends BaseView {\r\n protected options: BaseLayoutViewOptions;\r\n\r\n constructor(options: BaseLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public static getCacheKey(options: BaseLayoutViewOptions): string {\r\n ErrorHelper.throw(new DevError(`Must define getCacheKey for ${this.name}.`));\r\n\r\n return;\r\n }\r\n\r\n public unmountRegion(regionName: string): void {\r\n this.trigger(`unmount:${regionName}`);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { BaseCollection } from './BaseCollection';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseModel extends Backbone.Model {\r\n public parent?: BaseModel | BaseCollection;\r\n public collection: BaseCollection;\r\n\r\n /**\r\n * Mechanism to allow properties/functions to be attached to\r\n * the instance of a model at runtime. \r\n * @param propertyHash \r\n * \r\n * I feel like this implementation is a bit naive, \r\n * but it will suffice for the time being - Mike\r\n */\r\n private mixin(propertyHash: Backbone.ObjectHash): void {\r\n const proto = this as any;\r\n\r\n for (let prop in propertyHash) {\r\n\r\n if (proto.hasOwnProperty(prop)) {\r\n const currentProperty = proto[prop];\r\n proto[prop] = _.extend({}, currentProperty, propertyHash[prop]);\r\n return;\r\n }\r\n\r\n proto[prop] = propertyHash[prop];\r\n }\r\n }\r\n\r\n /**\r\n * Helper to facilitate model validation at runtime \r\n * @param validation \r\n */\r\n public addValidation(validation: any): void {\r\n this.mixin({ validation });\r\n }\r\n\r\n /**\r\n * Backbone Validation mixin functions\r\n */\r\n\r\n public preValidate: (attr: any, value: any) => any;\r\n\r\n /* \r\n * Override the base validate parameters to make attributes optional.\r\n * Backbone Validation will default to validating all attributes where\r\n * an attributes hash is not passed.\r\n */\r\n public validate(attributes?: any, options?: any): any {\r\n super.validate.call(this, attributes, options);\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ModelSetOptions, ObjectHash } from 'backbone';\r\n\r\nimport { BaseModel } from './BaseModel';\r\nimport { BaseCollection } from './BaseCollection';\r\n\r\ninterface Association {\r\n new (...args: any[]): (BaseCollection | BaseModel);\r\n}\r\n\r\nexport interface BaseNestedModelOptions extends ModelSetOptions {\r\n unset?: boolean;\r\n}\r\n\r\nexport class BaseNestedModel extends BaseModel {\r\n [name: string]: any;\r\n\r\n protected associations: {\r\n [name: string]: Association;\r\n };\r\n\r\n public set(key: string | object, value?: any | ModelSetOptions, options?: BaseNestedModelOptions): BaseNestedModel {\r\n let attr, attrs: any;\r\n\r\n if (key === null) return this;\r\n\r\n if (typeof key === 'object') {\r\n attrs = key;\r\n options = value;\r\n } else {\r\n attrs = {};\r\n attrs[key] = value;\r\n }\r\n\r\n options || (options = {});\r\n\r\n // if(!this._validate(attrs, options)) return false;\r\n\r\n for (attr in attrs) {\r\n if (_.has(this.associations, attr))\r\n attrs[attr] = this.setAssociation(attr, attrs[attr], options);\r\n }\r\n\r\n return super.set.call(this, attrs, options);\r\n }\r\n\r\n public get(attributeName: string): any {\r\n var splitIndex = attributeName.indexOf('.');\r\n\r\n if (splitIndex === -1) return super.get.call(this, attributeName);\r\n\r\n const assoc = attributeName.substr(0, splitIndex);\r\n const nestedModel = this.attributes[assoc];\r\n\r\n if (!nestedModel || !_.isFunction(nestedModel.get))\r\n return super.get.call(this, attributeName);\r\n\r\n const propName = attributeName.substr(splitIndex + 1);\r\n return nestedModel.get(propName);\r\n }\r\n\r\n public setAssociation(\r\n key: string, value: any, options: BaseNestedModelOptions\r\n ): BaseModel | BaseCollection<BaseModel> {\r\n const assocFn = this.associations[key];\r\n const previous = this.attributes[key];\r\n\r\n if (!_.isFunction(assocFn)) return value;\r\n\r\n if (options.unset) {\r\n previous && delete previous.parent;\r\n delete this[key];\r\n return previous;\r\n }\r\n\r\n if (previous) {\r\n if (previous instanceof BaseModel) previous.set(value, options);\r\n if (previous instanceof BaseCollection) previous.set(value, options);\r\n\r\n if (!options.silent) this.trigger(`change:${key}`, this, value, options);\r\n\r\n return previous;\r\n }\r\n\r\n const associatedModel =\r\n value instanceof BaseModel ? value : new assocFn(value, { parse: true });\r\n\r\n associatedModel.parent = this;\r\n\r\n this[key] = associatedModel;\r\n\r\n return associatedModel;\r\n }\r\n\r\n public toJSON(...args: any[]): ObjectHash {\r\n const json = super.toJSON.apply(this, args);\r\n\r\n _.each(this.associations, (assoc: any, key: string) => {\r\n if (_.has(json, key) && _.isFunction(json[key].toJSON))\r\n json[key] = json[key].toJSON();\r\n else\r\n json[key] = new assoc().toJSON();\r\n });\r\n\r\n return json;\r\n }\r\n\r\n public toFlatJSON(...args: any[]): ObjectHash {\r\n return _.omit(super.toJSON.apply(this, args), _.keys(this.associations));\r\n }\r\n}\r\n","import * as Marionette from 'backbone.marionette';\r\n\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseServiceOptions extends Marionette.ObjectOptions {}\r\n\r\nexport class BaseService extends Marionette.Object {\r\n public name: string;\r\n\r\n public constructor(options?: BaseServiceOptions) {\r\n super(options);\r\n\r\n if (!this.name)\r\n ErrorHelper.throw(new CoreError('Your service must be named.'));\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { StickitBinding } from 'libs/common/backbone/interfaces/StickitBinding';\r\n\r\nimport { BaseModel } from './BaseModel';\r\n\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\nimport { AppLinkHash, AppLinkHelper } from './AppLink';\r\n\r\ninterface UIHash {\r\n [selector: string]: any;\r\n}\r\n\r\nexport interface RequiredResourceHash {\r\n [propName: string]: RequiredResourceDefinition;\r\n}\r\n\r\nexport interface RequiredResourceDefinition<T = any> {\r\n dataServiceName: string;\r\n eventName: string;\r\n getData: (instance: any) => T;\r\n getInstance: (context: Backbone.Events) => any;\r\n beforeOnBeforeRender: boolean;\r\n}\r\n\r\nexport interface BaseViewOptions<TModel extends BaseModel = BaseModel> extends Marionette.ViewOptions<TModel> {\r\n channelName?: string;\r\n}\r\n\r\nexport class CoreView<TModel extends BaseModel = BaseModel> extends Marionette.View<TModel> {\r\n /**\r\n * This is of the name class. It should be used on\r\n * all warnings and errors to make debugging easier.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Takes a Handlebars template function.\r\n */\r\n public template: any;\r\n\r\n /**\r\n * Specify the properties you want to be\r\n * taken from `options` and added to the context.\r\n */\r\n public props: string[];\r\n\r\n /**\r\n * This is what the page title will be set to\r\n * when this view is rendered.\r\n */\r\n public title: string | boolean;\r\n\r\n /**\r\n * The i18n namespace used in the view\r\n */\r\n public lang?: string;\r\n\r\n /**\r\n * The default properties that will be taken\r\n * from `options` and added to the context.\r\n */\r\n private get defaultProps(): string[] {\r\n return [ 'shell', 'layoutService' ];\r\n }\r\n\r\n public viewModel: BaseModel;\r\n\r\n private static ViewDataExtensions: (Function | Backbone.ObjectHash)[] = [];\r\n\r\n /**\r\n * Update instance options to include defaults. Passing options\r\n * to the view via the ctor will always override defaults.\r\n * @param options\r\n */\r\n private _setOptions(options: any): void {\r\n this.options = _.extend({}, _.result(this, 'defaults'), options);\r\n }\r\n\r\n /**\r\n * Mix in the class name into the dom attributes to\r\n * help us out with debugging\r\n */\r\n private _setAttributes(attributes: any): void {\r\n if (EnvironmentVariables.isDevelopment) {\r\n _.extend(attributes, {\r\n ['cv-classname']: this.name\r\n });\r\n }\r\n\r\n this.$el.attr(attributes);\r\n }\r\n\r\n private uiStorage: Backbone.ObjectHash;\r\n public get ui(): Backbone.ObjectHash {\r\n if (this.uiStorage)\r\n return this.uiStorage;\r\n\r\n this.uiStorage = this.elements;\r\n return this.uiStorage;\r\n }\r\n public set ui(value: Backbone.ObjectHash) {\r\n this.uiStorage = value;\r\n }\r\n\r\n public get elements(): Backbone.ObjectHash {\r\n return null;\r\n }\r\n\r\n protected defaults: Backbone.ObjectHash;\r\n protected options: BaseViewOptions<TModel>;\r\n\r\n /**\r\n * Base class for all views to inherit from.\r\n * @constructor\r\n */\r\n constructor(options?: BaseViewOptions<TModel>) {\r\n super(options);\r\n\r\n const props = [ ...this.defaultProps, ...(this.props || []) ];\r\n\r\n // Merge props into the view instance\r\n this.mergeOptions(options, props);\r\n\r\n if (!_.result(this, 'name')) {\r\n ErrorHelper.throw(new CoreError(`Error: View with cid:${this.cid} requires a name.`));\r\n }\r\n }\r\n\r\n public appLinks: AppLinkHash;\r\n public normalizeUIKeys: (hash: UIHash) => UIHash;\r\n\r\n // Allow projects to add their own view data\r\n public static AddViewDataExtension(ext: Function | Backbone.ObjectHash): void {\r\n CoreView.ViewDataExtensions.push(ext);\r\n }\r\n\r\n public serializeModel(): any {\r\n if (!this.model) {\r\n return {};\r\n }\r\n return this.model.toJSON();\r\n }\r\n\r\n public serializeCollection(): any[] {\r\n if (!this.collection) {\r\n return [];\r\n }\r\n return this.collection.toJSON();\r\n }\r\n\r\n /**\r\n * This is a utility that can be used if your\r\n * className is dynamic between renders.\r\n * Simply call this.resetClassName() in\r\n * onRender()\r\n */\r\n protected resetClassName(): void {\r\n this.$el.attr('class', _.result(this, 'className'));\r\n }\r\n\r\n public serializeData(): any {\r\n const modelData = super.serializeData();\r\n const viewOptions = _.result(this, 'viewOptions');\r\n\r\n const result = _.extend({}, modelData, { options: viewOptions });\r\n\r\n if (!CoreView.ViewDataExtensions.length)\r\n return result;\r\n\r\n return _.extend(result, ..._.map(CoreView.ViewDataExtensions, (ext: Function | Backbone.ObjectHash) => {\r\n return ext instanceof Function\r\n ? ext(this)\r\n : ext;\r\n }));\r\n }\r\n\r\n // View options will be passed to our template by default\r\n protected viewOptions(): Backbone.ObjectHash {\r\n return this.options;\r\n }\r\n\r\n /**\r\n * Ensures that multiple click events arent bound\r\n * if the view is getting re-rendered.\r\n */\r\n private undelegateAppLinks(): void {\r\n if (this.$el) this.$el.off(`.appLinks${this.cid}`);\r\n }\r\n\r\n /**\r\n * This will take the appLinks hash defined on a view and used it to add\r\n * hrefs to the anchor tags and provide the application linking.\r\n */\r\n protected renderAppLinks(): void {\r\n let appLinks = this.appLinks;\r\n\r\n if (!appLinks) return;\r\n\r\n const events: any = {};\r\n\r\n /**\r\n * This allows appLinks to be defined with the\r\n * Marionette 'click @ui.myAnchorTag' syntax.\r\n */\r\n appLinks = this.normalizeUIKeys(appLinks);\r\n\r\n this.undelegateAppLinks();\r\n\r\n _.each(_.keys(appLinks), (key: string) => {\r\n let selector = key;\r\n const link = appLinks[key];\r\n\r\n /**\r\n * Gets the routeLookup from the shell. These\r\n * are added to the shell by\r\n * Core.AppRouter.processAppEvents() when the shell starts\r\n */\r\n const href = AppLinkHelper.getHref(link);\r\n\r\n /**\r\n * This allows an appLink to be defined on a view's root\r\n * element. This prevents us from over complicating the dom\r\n * structure if our view is simply an anchor tag on it's own.\r\n *\r\n * E.g.\r\n * tagName: 'a',\r\n * appLinks: {\r\n * '[this]': {\r\n * application: 'example:application',\r\n * action: 'details:page'\r\n * }\r\n * }\r\n */\r\n if (selector === '[this]') {\r\n selector = null;\r\n }\r\n\r\n const $el = selector ? this.$el.find(key) : this.$el;\r\n\r\n /**\r\n * We only create appLinks on anchor tags.\r\n * This is so we can support browser functions\r\n * such as open in a new window and so we can create\r\n * a strong SEO profile.\r\n */\r\n if (!$el.is('a') && !$el.is('button')) return;\r\n\r\n /**\r\n * Adds the href to the anchor tag if an actual route\r\n * exists.\r\n */\r\n if (href && href !== '/')\r\n $el.attr('href', href);\r\n\r\n /**\r\n * Bind click events on the anchor tag. Which will prevent the default\r\n * browser action of page loading to the href and instead\r\n * trigger an appLink to do a same page route.\r\n *\r\n * This callback must be a regular function rather than an\r\n * arrow function because of the way delegate() sets context\r\n */\r\n this.delegate(`click.appLinks${this.cid}`, selector, function(event: JQuery.Event): void {\r\n event.preventDefault();\r\n\r\n AppLinkHelper.trigger(link);\r\n });\r\n });\r\n }\r\n\r\n private hasPartialLoadingRegions(): boolean {\r\n /**\r\n * Defining const self = this as any so that we can\r\n * reference private variables\r\n */\r\n const self = this as any;\r\n\r\n if (self._hasPartialLoadingRegions !== undefined) {\r\n return self._hasPartialLoadingRegions;\r\n }\r\n\r\n self._hasPartialLoadingRegions = _.some(\r\n self.regions, ((r: any) => (\r\n _.has(r, 'partialLoading')\r\n )));\r\n\r\n return self._hasPartialLoadingRegions;\r\n }\r\n\r\n protected renderPartialLoading(region?: string): void {\r\n /**\r\n * PartialLoadingHelper is listening to this event\r\n * and will render the views partial loading regions\r\n * when the event is fired.\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger('render:partial:loading', this, region);\r\n }\r\n\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n\r\n public render(): CoreView<TModel> {\r\n /**\r\n * Defining const self = this as any so that we can\r\n * reference private variables\r\n */\r\n const self = this as any;\r\n\r\n if (self._isDestroyed) {\r\n return this;\r\n }\r\n\r\n /**\r\n * Fetch required resources before onBeforeRender\r\n */\r\n let shouldRender = this.processRequriedResources(true);\r\n\r\n /**\r\n * Run onBeforeRender if there are no required resources,\r\n * or if the require resources have fetched\r\n */\r\n if (shouldRender)\r\n shouldRender = self.triggerMethod('before:render', this);\r\n\r\n /**\r\n * We do this because if onBeforeRender returns nothing we should render\r\n */\r\n if (shouldRender !== false)\r\n shouldRender = true;\r\n\r\n /**\r\n * Fetch required resources after onBeforeRender\r\n * Resources that shouldn't block any fetches being made in onBeforeRender\r\n * are fetched here\r\n */\r\n shouldRender = shouldRender && this.processRequriedResources(false);\r\n\r\n if (shouldRender === false) {\r\n if (self._partialLoadingRendered || !self.hasPartialLoadingRegions()) {\r\n return this;\r\n }\r\n\r\n self._partialLoadingRendered = true;\r\n self._reInitRegions();\r\n self._renderTemplate();\r\n self.renderPartialLoading();\r\n return this;\r\n }\r\n\r\n if (self._isRendered || self._partialLoadingRendered) {\r\n self._reInitRegions();\r\n }\r\n\r\n this.setTitle();\r\n self._renderTemplate();\r\n self.bindUIElements();\r\n this.renderAppLinks();\r\n\r\n self._partialLoadingRendered = false;\r\n self._isRendered = true;\r\n self.triggerMethod('render', this);\r\n\r\n return this;\r\n }\r\n\r\n /** backbone.stickit stuff that is mixed in at run time.\r\n *\r\n * TODO: This should ideally be handled higher up that BaseView,\r\n * (yet another one of those TODOs that is likely\r\n * to sit here till the end of time. - Sha)\r\n */\r\n public bindings: { [selector: string]: StickitBinding };\r\n public stickit: (model?: BaseModel, options?: any) => void;\r\n public addbinding: (model: BaseModel, selector: string, configuration: any) => void;\r\n public unstickit: (model?: BaseModel, options?: any) => void;\r\n\r\n protected processRequriedResources(beforeOnBeforeRender: boolean): boolean { return true; }\r\n\r\n protected setTitle(): void { }\r\n}\r\n\r\nexport class BaseView<TModel extends BaseModel = BaseModel> extends CoreView<TModel> {\r\n private boundListeners: any;\r\n private resourceInstances: any;\r\n\r\n public requiredResources: {[propName: string]: RequiredResourceDefinition};\r\n\r\n constructor(options?: BaseViewOptions<TModel>) {\r\n super(options);\r\n\r\n this.boundListeners = {};\r\n this.resourceInstances = {};\r\n }\r\n\r\n protected processRequriedResources(beforeOnBeforeRender: boolean): boolean {\r\n const requiredResourceKeys = _.keys(this.requiredResources);\r\n\r\n if (!requiredResourceKeys.length)\r\n return true;\r\n\r\n const self = this as any;\r\n let shouldRender = true;\r\n\r\n _.each(requiredResourceKeys, key => {\r\n const requiredResource = this.requiredResources[key];\r\n\r\n if (requiredResource.beforeOnBeforeRender !== beforeOnBeforeRender)\r\n return;\r\n\r\n const dataServiceName = requiredResource.dataServiceName;\r\n\r\n if (!this.resourceInstances[dataServiceName]) {\r\n this.resourceInstances[dataServiceName] = requiredResource.getInstance(this);\r\n }\r\n\r\n if (!this.boundListeners[`${dataServiceName}:${requiredResource.eventName}`]) {\r\n this.listenTo(this.resourceInstances[dataServiceName].channelName, requiredResource.eventName, this.render);\r\n this.boundListeners[`${dataServiceName}:${requiredResource.eventName}`] = true;\r\n }\r\n\r\n self[key] = requiredResource.getData(this.resourceInstances[dataServiceName]);\r\n\r\n shouldRender = shouldRender && !!self[key];\r\n });\r\n return shouldRender;\r\n }\r\n\r\n public setTitle(): void {\r\n /**\r\n * A view can opt out of a page title by setting\r\n * this.title to false.\r\n */\r\n if (!_.isString(this.title) && this.title !== false)\r\n ErrorHelper.throw(new DevError(`Must define a title for ${this.name}.`));\r\n\r\n /**\r\n * PageTitleService is listening to this event\r\n * and will render the views partial loading regions\r\n * when the event is fired.\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger('set:page:title', this.title);\r\n }\r\n}\r\n\r\nexport class BaseComponent<TModel extends BaseModel = BaseModel> extends CoreView<TModel> { }","const EventNames = {\r\n SHOW_POPUP: 'show:popup',\r\n ROUTE: 'route',\r\n LOCK_NAV: 'lock:nav',\r\n UNLOCK_NAV: 'unlock:nav',\r\n NAV_IS_LOCKED: 'navigation:islocked',\r\n NAV_UNLOCKED_BY_USER: 'navigation:unlocked:by:user',\r\n ROUTING_START: 'routing:start',\r\n ROUTING_END: 'routing:end',\r\n HAS_ACTIVE_ROUTE: 'has:active:route',\r\n ROUTE_LOOKUP: 'route:look:up',\r\n URL_CHANGE: 'url:change',\r\n ERROR: 'error',\r\n CURRENT_ROUTE: 'route:current'\r\n};\r\n\r\nexport { EventNames };","import * as _ from 'underscore';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseLayoutView, BaseLayoutViewOptions } from './BaseLayoutView';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\ninterface Layouts {\r\n [name: string]: typeof BaseLayoutView;\r\n}\r\n\r\nexport interface LayoutOptions<T extends BaseLayoutViewOptions> {\r\n name: string;\r\n options?: T;\r\n}\r\n\r\nexport interface LayoutServiceOptions extends Marionette.ObjectOptions {\r\n requiredRegions?: string[];\r\n}\r\n\r\nexport class LayoutService extends Marionette.Object {\r\n private layouts: Layouts;\r\n private currentLayout: BaseLayoutView;\r\n private currentLayoutCacheKey: string;\r\n private requiredRegions: string[];\r\n public options: LayoutServiceOptions;\r\n\r\n constructor(options: LayoutServiceOptions) {\r\n super(options);\r\n this.layouts = {};\r\n this.requiredRegions = options.requiredRegions;\r\n }\r\n\r\n private clearLayout(): void {\r\n if (!this.currentLayout)\r\n return;\r\n\r\n this.currentLayout.destroy();\r\n delete this.currentLayout;\r\n delete this.currentLayoutCacheKey;\r\n }\r\n\r\n public registerLayout(name: string, layout: typeof BaseLayoutView): this {\r\n this.checkRequiredRegions(layout);\r\n this.layouts[name] = layout;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Either return the existing instance of a layout\r\n * or create the layout and cache it before returning.\r\n */\r\n public getLayout<T extends BaseLayoutViewOptions>(layoutOptions: LayoutOptions<T>): BaseLayoutView {\r\n const { name, options = {} } = layoutOptions;\r\n\r\n if (!this.layouts[name])\r\n ErrorHelper.throw(new CoreError(`${name} was not registered as a template.`));\r\n\r\n const cacheKey = this.layouts[name].getCacheKey(options);\r\n\r\n if (this.currentLayoutCacheKey === cacheKey && this.currentLayout) {\r\n this.currentLayout.triggerMethod('layout:requested', options);\r\n return this.currentLayout;\r\n }\r\n\r\n this.clearLayout();\r\n\r\n this.currentLayoutCacheKey = cacheKey;\r\n\r\n this.currentLayout = new this.layouts[name](options);\r\n this.listenToOnce(this.currentLayout, 'destroy', this.clearLayout);\r\n\r\n return this.currentLayout;\r\n }\r\n\r\n /**\r\n * Every layout that is registered must have all required/mandatory regions\r\n */\r\n private checkRequiredRegions(layout: typeof BaseLayoutView): void {\r\n _.each(this.requiredRegions, regionName => {\r\n if (!_.has(_.result(layout.prototype, 'regions'), regionName))\r\n ErrorHelper.throw(new CoreError(`Layout: ${layout.prototype.name} must define an ${regionName} region.`));\r\n });\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nfunction ListenToRadio(\r\n obj: string | Backbone.Events, events: string, callback: Function, originalListenTo: Function\r\n): any {\r\n let listenObj = obj;\r\n\r\n if (typeof(obj) === 'string')\r\n listenObj = Radio.channel(obj);\r\n\r\n return originalListenTo.call(this, listenObj, events, callback);\r\n}\r\n\r\nexport { ListenToRadio };","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash, History, history } from 'backbone';\r\nimport { AppLinkHelper, AppLink, AppLinkUtility } from './AppLink';\r\n\r\nimport { EventNames } from './EventNames';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\n/**\r\n * This is the only file in the entire project\r\n * that should ever reference window.location.\r\n */\r\nconst LocationUtils = {\r\n GetQuery(): ObjectHash {\r\n return LocationUtils.DeserializeQueryParams((window.location.search).substring(1));\r\n },\r\n UpdateQuery(params: ObjectHash): void {\r\n if (!params)\r\n return;\r\n\r\n const currentQuery = LocationUtils.GetQuery();\r\n let query = LocationUtils.SerializeQueryParams(_.extend(currentQuery, params));\r\n\r\n if (query)\r\n query = `?${query}`;\r\n\r\n LocationUtils.UpdateUrl(`${LocationUtils.GetCurrentPath()}${query}`, null, { replace: true, trigger: false });\r\n },\r\n UpdateUrl(route: string, appLink: AppLink, options?: ObjectHash): void {\r\n const url = AppLinkHelper.buildRoute(route, appLink);\r\n\r\n Backbone.history.navigate(url, options);\r\n\r\n Radio.channel(CommonChannels.SHELL)\r\n .trigger(EventNames.URL_CHANGE, appLink, options);\r\n },\r\n SerializeQueryParams(params: string | ObjectHash): string {\r\n if (!params)\r\n return '';\r\n\r\n if (typeof(params) === 'string')\r\n return params;\r\n\r\n return $.param(params, true);\r\n },\r\n DeserializeQueryParams(params: string): ObjectHash {\r\n if (!params)\r\n return {};\r\n\r\n return _.reduce(params.split('&'), (queryParams: ObjectHash, param: string) => {\r\n const kvp = param.split('=');\r\n const key = kvp[0];\r\n const value = kvp.length > 0 ? decodeURIComponent(kvp[1]) : '';\r\n\r\n if (!queryParams[key]) {\r\n queryParams[key] = value;\r\n return queryParams;\r\n }\r\n\r\n if (queryParams[key] instanceof Array) {\r\n queryParams[key].push(value);\r\n return queryParams;\r\n }\r\n\r\n queryParams[key] = [ queryParams[key], value ];\r\n return queryParams;\r\n }, {});\r\n },\r\n StartHistory(): void {\r\n if (History.started) history.stop();\r\n history.start({ pushState: true });\r\n },\r\n PageLoad(href: string, newTab: boolean = false): void {\r\n if (!newTab) {\r\n window.location.href = href;\r\n return;\r\n }\r\n\r\n window.open(href, '_blank');\r\n },\r\n Redirect(href: string, replace: boolean = true): void {\r\n const redirect = () => replace\r\n ? window.location.replace(href)\r\n : window.location.href = href;\r\n\r\n /**\r\n * If there is currently an applink executing, we wait till that\r\n * execution is over before redirecting.\r\n * \r\n * This will prevent the wrong url being replaced.\r\n */\r\n if (AppLinkUtility.hasActiveRoute())\r\n Radio.channel(CommonChannels.SHELL).once('routing:end', redirect);\r\n else\r\n redirect();\r\n },\r\n Reload(force: boolean = true): void {\r\n window.location.reload(force);\r\n },\r\n GetCurrentPath(): string {\r\n return window.location.pathname;\r\n },\r\n GetCurrentQueryString(): string {\r\n return window.location.search;\r\n },\r\n GetCurrentUrl(): string {\r\n return window.location.href;\r\n },\r\n GetCurrentReferrer(): string {\r\n return document.referrer;\r\n },\r\n SetPageTitle(title: string): void {\r\n document.title = title;\r\n }\r\n};\r\n\r\nexport { LocationUtils };","export interface MiddlewareNext<T> {\r\n (options: T): void;\r\n}\r\n\r\nexport interface MiddlewareFunction<T> {\r\n (options: T, next: MiddlewareNext<T>): void;\r\n}\r\n\r\nexport class Middleware<T> {\r\n public use(fn: MiddlewareFunction<T>): void {\r\n const wrapper = (stack: any) => {\r\n return (options: T, next: MiddlewareNext<T>) => {\r\n return stack(options, () => fn(options, next));\r\n };\r\n };\r\n\r\n this.go = wrapper(this.go);\r\n }\r\n\r\n public go(options: T, next: MiddlewareNext<T>): void {\r\n next(options);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseApplication } from './BaseApplication';\r\nimport { BaseAppRouterOptions } from './BaseAppRouter';\r\nimport { LayoutService } from './LayoutService';\r\nimport { AppLinkUtility, AppLink } from './AppLink';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { BaseError, ErrorHelper, CoreError } from './BaseError';\r\nimport { EventNames } from './EventNames';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { BaseLayoutView } from './BaseLayoutView';\r\nimport { Store } from 'redux';\r\n\r\ninterface RouteLookup {\r\n [name: string]: (eventArgs?: any[], params?: string | ObjectHash) => string;\r\n}\r\n\r\ninterface ErrorHandler {\r\n errorType: Function & { prototype: BaseError };\r\n handler: (error: BaseError) => void;\r\n}\r\n\r\n/**\r\n * Maintain high-level shell state that spans across multiple applications.\r\n * Do NOT hold any low-level application-specific state here, use the\r\n * ViewModelService instead.\r\n */\r\ninterface ShellState {\r\n navLock: boolean;\r\n activeRoute: boolean;\r\n currentAppLink: AppLink;\r\n}\r\n\r\ninterface InitializationStep {\r\n (shell: Shell, next: InitializationStep): void;\r\n}\r\n\r\ninterface StartUpSet {\r\n (shell: Shell, options: any, next: StartUpSet): void;\r\n}\r\n\r\n\r\nclass ApplicationMeta {\r\n private application: typeof BaseApplication;\r\n private options?: ObjectHash;\r\n\r\n constructor(application: typeof BaseApplication, options?: ObjectHash) {\r\n this.application = application;\r\n this.options = options || {};\r\n }\r\n\r\n public get Application(): typeof BaseApplication {\r\n return this.application;\r\n }\r\n\r\n public get Options(): ObjectHash {\r\n return this.options;\r\n }\r\n}\r\n\r\nexport interface ShellOptions extends Marionette.ApplicationOptions {}\r\n\r\nexport class Shell extends Marionette.Application {\r\n /**\r\n * Used to retreive and cache layout views.\r\n */\r\n private layoutService: LayoutService;\r\n\r\n private applications: ApplicationMeta[];\r\n private routeLookup: RouteLookup;\r\n\r\n private shellState: ShellState;\r\n\r\n public initialize(options?: ShellOptions): void {\r\n this.mergeOptions(options, ['layoutService']);\r\n\r\n this.applications = [];\r\n this.routeLookup = {};\r\n this.shellState = {\r\n navLock: false,\r\n activeRoute: false,\r\n currentAppLink: null\r\n };\r\n this.errorHandlers = [];\r\n }\r\n\r\n private bindListeners(): void {\r\n this.bindRouteLookup();\r\n this.bindNavLockListeners();\r\n this.bindAppLinkListeners();\r\n this.bindErrorHandlers();\r\n this.bindErrorListener();\r\n }\r\n\r\n private bindNavLockListeners(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.LOCK_NAV, () => this.shellState.navLock = true);\r\n this.listenTo(CommonChannels.SHELL, EventNames.UNLOCK_NAV, () => this.shellState.navLock = false);\r\n }\r\n\r\n private bindAppLinkListeners(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTING_START, () => this.shellState.activeRoute = true);\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTING_END, () => this.shellState.activeRoute = false);\r\n\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTE,\r\n (appLink: AppLink) => this.shellState.currentAppLink = appLink);\r\n\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.reply(EventNames.HAS_ACTIVE_ROUTE, _.bind(this.hasActiveRoute, this));\r\n channel.reply(EventNames.CURRENT_ROUTE, () => this.shellState.currentAppLink);\r\n }\r\n\r\n private bindErrorHandlers(): void {\r\n window.addEventListener('error', () => {\r\n /**\r\n * If an error is unintentially thrown within a route executing,\r\n * this error listener will make sure all the application's applinks\r\n * don't freeze up.\r\n */\r\n AppLinkUtility.routingEnded();\r\n });\r\n }\r\n\r\n private bindErrorListener(): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n this.listenTo(channel, EventNames.ERROR, this.handleError);\r\n }\r\n\r\n /**\r\n * Using all the routeLookups passed in during AppRouter initialization\r\n * we create a bunch of channel replies on the shell channel.\r\n * \r\n * Both Core.AppRouter and Core.View use this to reverse engineer\r\n * the application routes and regenerate urls with a list of arguments.\r\n * \r\n * These need to exist on the shell rather than on the Core.AppRouter\r\n * because consumers of this reply wont know which instance of Core.AppRoute\r\n * to call.\r\n */\r\n private bindRouteLookup(): void {\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n shellChannel.reply(\r\n EventNames.ROUTE_LOOKUP,\r\n (name: string, eventArgs: any[], params: string | ObjectHash): string => {\r\n if (this.routeLookup[name])\r\n return this.routeLookup[name](eventArgs, params);\r\n\r\n return '';\r\n },\r\n this\r\n );\r\n }\r\n\r\n public addRouteLookup(name: string, func: () => string): void {\r\n this.routeLookup[name] = func;\r\n }\r\n\r\n public registerApplication(application: typeof BaseApplication, options?: ObjectHash): this {\r\n this.applications.push(new ApplicationMeta(application, options));\r\n return this;\r\n }\r\n\r\n public getGlobalRadioChannels(): ObjectHash {\r\n return CommonChannels;\r\n }\r\n\r\n public isNavLocked(): boolean {\r\n return this.shellState.navLock;\r\n }\r\n\r\n public start(options?: any): void {\r\n /**\r\n * We ensure options is at least an empty object\r\n * so that any start up steps can add to it asyncronously\r\n * (For example adding the version number from a DataService)\r\n */\r\n options || (options = {});\r\n this.runInitializationSteps(this, (shell: Shell, next: InitializationStep) => {\r\n this.runStartUpSteps(this, options, (shell1: Shell, options1: any, next1: StartUpSet) => {\r\n super.start(options);\r\n });\r\n });\r\n }\r\n\r\n public hasActiveRoute(): boolean {\r\n return this.shellState.activeRoute;\r\n }\r\n\r\n /**\r\n * On Shell start up an instance of each Applications router is instantiated\r\n * so that it can listen to application events or route in the current page\r\n */\r\n public onStart(): void {\r\n _.each(this.applications, meta => {\r\n const options: BaseAppRouterOptions = {\r\n appConstructor: meta.Application,\r\n shell: this,\r\n appOptions: {\r\n /* For some reason region is not optional in \r\n * Marionette.ApplicationOptions when it should be */\r\n region: '',\r\n shell: this,\r\n layoutService: this.layoutService,\r\n ...meta.Options\r\n }\r\n };\r\n\r\n new meta.Application.router(options);\r\n });\r\n\r\n /**\r\n * During each AppRouters initialization, it will have added each of it's \r\n * routes to the route lookup via addRouteLookup(). So we now call \r\n * bindRouteLookup so that the View's appLinks and the AppRouter's\r\n * update route can generate urls.\r\n */\r\n this.bindListeners();\r\n\r\n LocationUtils.StartHistory();\r\n }\r\n\r\n /**\r\n * these are based on node/express middleware: \r\n * https://gist.github.com/darrenscerri/5c3b3dcbe4d370435cfa\r\n * \r\n * Initialization steps should be used to do stuff like register \r\n * services with the instance manager, register analytics clients\r\n * and enrichers, add any data provider middle ware and register layouts\r\n */\r\n public addInitializationStep(fn: InitializationStep): Shell {\r\n this.runInitializationSteps = ((stack: any) => (ev: any, next: any) =>\r\n stack(ev, () => fn(ev, next)))(this.runInitializationSteps);\r\n\r\n return this;\r\n }\r\n\r\n private runInitializationSteps(shell: Shell, next: any): void {\r\n next(shell);\r\n }\r\n\r\n public addStartUpStep(fn: StartUpSet): Shell {\r\n this.runStartUpSteps = ((stack: any) => (ev: any, options: any, next: any) =>\r\n stack(ev, options, () => fn(ev, options, next)))(this.runStartUpSteps);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Start up steps should be used to inject options into the shell\r\n * or run any other code that we want to run just before the application starts\r\n */\r\n private runStartUpSteps(shell: Shell, options: any, next: any): void {\r\n next(shell, options);\r\n }\r\n\r\n public registerLayout(name: string, layout: typeof BaseLayoutView): Shell {\r\n this.layoutService.registerLayout(name, layout);\r\n return this;\r\n }\r\n\r\n private errorHandlers: ErrorHandler[];\r\n\r\n public registerErrorHandler<T extends BaseError>(\r\n errorType: Function & { prototype: T }, handler: (error: T) => void\r\n ): Shell {\r\n if (!errorType) {\r\n ErrorHelper.throw(new CoreError('An error must have a name in order to register a handler for it.'));\r\n }\r\n\r\n if (_.any(this.errorHandlers, eh => eh.errorType === errorType))\r\n ErrorHelper.throw(new CoreError(`An error handler for ${errorType.prototype.name} has already been defined.`));\r\n\r\n this.errorHandlers.push({ errorType, handler });\r\n\r\n return this;\r\n }\r\n\r\n public handleError(error: BaseError): void {\r\n const errorHandler = _.find(this.errorHandlers, eh => error instanceof eh.errorType);\r\n if (errorHandler && errorHandler.handler)\r\n errorHandler.handler(error);\r\n }\r\n\r\n public store: Store;\r\n public registerStore(store: Store): void {\r\n this.store = store;\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","export { AppLink, AppLinkOptions, AppLinkHash, AppLinkHelper, AppLinkUtility } from './AppLink';\r\nexport { BaseApplication as Application } from './BaseApplication';\r\nexport { BaseAppRouter as AppRouter, ExecuteRouteOptions } from './BaseAppRouter';\r\nexport { BaseBehavior as Behavior } from './BaseBehavior';\r\nexport { BaseCollection as Collection } from './BaseCollection';\r\nexport {\r\n BaseCollectionView as CollectionView,\r\n BaseCollectionViewOptions as CollectionViewOptions,\r\n BaseCollectionView as ComponentCollection,\r\n BaseCollectionViewOptions as ComponentCollectionOptions,\r\n} from './BaseCollectionView';\r\nexport { BaseError as Error, ErrorHelper, SilentError } from './BaseError';\r\nexport { BaseLayoutView as LayoutView, BaseLayoutViewOptions as LayoutViewOptions } from './BaseLayoutView';\r\nexport {\r\n BaseNestedModel as NestedModel,\r\n BaseNestedModelOptions as NestedModelOptions\r\n} from './BaseNestedModel';\r\nexport {\r\n BaseService as Service,\r\n BaseServiceOptions as ServiceOptions\r\n} from './BaseService';\r\nexport { BaseModel as Model } from './BaseModel';\r\nexport {\r\n BaseView as View,\r\n BaseViewOptions as ViewOptions ,\r\n BaseComponent as Component,\r\n BaseViewOptions as ComponentOptions,\r\n RequiredResourceDefinition, RequiredResourceHash\r\n} from './BaseView';\r\nexport { EventNames } from './EventNames';\r\nexport { LayoutService, LayoutOptions } from './LayoutService';\r\nexport { Middleware, MiddlewareFunction, MiddlewareNext } from './Middleware';\r\nexport { LocationUtils } from './LocationUtils';\r\nexport { Shell } from './Shell';\r\nexport * from './Types';\r\n","export enum DataServiceErrorType {\r\n Unknown, // ??\r\n BadRequest, // 400\r\n Unauthorized, // 401\r\n Forbidden, // 403\r\n NotFound, // 404\r\n InternalServer // 500\r\n}","export enum HttpStatus {\r\n Ok = 200,\r\n NoContent = 204,\r\n BadRequest = 400,\r\n Unauthorized = 401,\r\n Forbidden = 403,\r\n NotFound = 404,\r\n Conflict = 409,\r\n InternalServer = 500\r\n}","export enum HttpVerbs {\r\n GET = 'GET',\r\n POST = 'POST',\r\n PUT = 'PUT',\r\n DELETE = 'DELETE'\r\n}\r\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\r\n\r\nexport class DevError extends BaseError {\r\n public get name(): string {\r\n return 'DevError';\r\n }\r\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\r\n\r\nexport class NotImplementedError extends BaseError {\r\n constructor() {\r\n super('Not Implemented');\r\n }\r\n\r\n public get name(): string {\r\n return 'NotImplementedError';\r\n }\r\n}","import * as Core from './core';\r\n\r\nexport { Core };\r\n","import { ObjectHash } from 'backbone';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\n\r\nexport interface BaseCollectionIdentifierOptions<T> {\r\n collectionPrefix?: string;\r\n id?: string;\r\n sort?: T;\r\n cursor?: string;\r\n}\r\n\r\nexport class BaseCollectionIdentifier<T = {}> {\r\n public id: string;\r\n public sort: T;\r\n public cursor: string;\r\n public collectionPrefix: string;\r\n\r\n constructor(options: BaseCollectionIdentifierOptions<T>) {\r\n this.setData(options);\r\n }\r\n\r\n protected setData(options: BaseCollectionIdentifierOptions<T>): void {\r\n const { collectionPrefix, id, sort, cursor } = options;\r\n\r\n if (id)\r\n this.id = id;\r\n\r\n if (sort)\r\n this.sort = sort;\r\n\r\n if (cursor)\r\n this.cursor = cursor;\r\n\r\n if (collectionPrefix)\r\n this.collectionPrefix = collectionPrefix;\r\n }\r\n\r\n public toString(): string {\r\n const params = [\r\n this.collectionPrefix,\r\n this.id,\r\n this.sort,\r\n this.cursor\r\n ];\r\n\r\n return params.filter(Boolean).join(':');\r\n }\r\n\r\n public toParams(): ObjectHash {\r\n const params: ObjectHash = {};\r\n\r\n if (this.sort)\r\n params.sort = this.getSortTypeParam().toLowerCase();\r\n\r\n if (this.cursor)\r\n params.cursor = this.cursor;\r\n\r\n return params;\r\n }\r\n\r\n protected getSortTypeParam(): string {\r\n ErrorHelper.throw(new DevError('getSortTypeParam must be implemented when extending BaseCollectionIdentifier'));\r\n\r\n return '';\r\n }\r\n}","import { DataServiceErrorType } from 'libs/common/backbone/enums/DataServiceErrorType';\r\n\r\nexport interface DataServiceError {\r\n type: DataServiceErrorType;\r\n message: string;\r\n code: number;\r\n}\r\n\r\nexport const DefaultDataServiceError: DataServiceError = {\r\n type: DataServiceErrorType.Unknown,\r\n message: '',\r\n code: 0\r\n};\r\n","export * from './BaseCollectionIdentifier';\r\nexport * from './ChainableDataService';\r\nexport * from './DataCache';\r\nexport * from './DataProvider';\r\nexport * from './DataServiceError';\r\nexport * from './DataServiceRequests';\r\nexport * from './Pagination';\r\nexport * from './StickitBinding';\r\nexport * from './Xhr';","import * as React from 'react';\r\nimport * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { AppLink } from 'libs/common/backbone/core/AppLink';\r\nimport { BaseView } from 'libs/common/backbone/core/BaseView';\r\nimport { BaseCollectionView } from 'libs/common/backbone/core/BaseCollectionView';\r\nimport { BaseCollection } from 'libs/common/backbone/core/BaseCollection';\r\nimport { BaseModel } from 'libs/common/backbone/core/BaseModel';\r\nimport { BaseComponent } from 'libs/common/backbone/core/BaseView';\r\nimport { ViewCtor } from 'libs/common/backbone/core/Types';\r\nimport { BaseService, BaseServiceOptions } from 'libs/common/backbone/core/BaseService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nexport enum AlertType {\r\n Success = 'success',\r\n Warning = 'warning',\r\n Fail = 'danger',\r\n Info = 'info'\r\n}\r\n\r\nexport enum DefaultAlertHeading {\r\n Success = 'Success! 🙌',\r\n Warning = 'Whoops...',\r\n Fail = 'Oops...',\r\n Info = 'FYI'\r\n}\r\n\r\nexport interface BaseAlert {\r\n id?: string;\r\n type: AlertType;\r\n heading: string;\r\n message?: string;\r\n appLink?: AppLink;\r\n appLinkText?: string;\r\n appLinkClassName?: string;\r\n timeout?: number;\r\n}\r\n\r\nexport interface DefaultAlertCallback {\r\n (message?: string, options?: ObjectHash): void;\r\n}\r\n\r\nexport interface BaseAlertOptions {\r\n useXHR: boolean;\r\n}\r\n\r\ntype View = BaseView | BaseCollectionView | BaseComponent;\r\n\r\ninterface AlertProps {\r\n alerts: BaseAlert[];\r\n removeAlert: (id: string) => void;\r\n}\r\n\r\nexport interface BaseAlertServiceOptions extends BaseServiceOptions {\r\n maxAlerts?: number;\r\n defaultSuccessAlert: BaseAlert;\r\n defaultErrorAlert: BaseAlert;\r\n alertViewCtor?: ViewCtor<View> | ((props: AlertProps) => React.ReactElement);\r\n}\r\n\r\nexport class BaseAlertService extends BaseService {\r\n private options: BaseAlertServiceOptions;\r\n private alertCollection: BaseCollection;\r\n\r\n public constructor(options: BaseAlertServiceOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.alertCollection = new BaseCollection();\r\n\r\n this.listenTo(CommonChannels.ALERT, 'remove:alert', this.removeAlert);\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public get name(): string {\r\n return CommonServices.ALERT;\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n maxAlerts: 3\r\n };\r\n }\r\n\r\n /**\r\n * As it's not known which application is currently in scope,\r\n * we emit a render event to construct the alert collection view\r\n * if required. If the current application already has a alert\r\n * view rendered, it will simply be ignored.\r\n */\r\n private showAlerts(): void {\r\n const channel = Radio.channel(CommonChannels.ALERT);\r\n\r\n let options = { collection: this.alertCollection };\r\n\r\n if (this.options.alertViewCtor)\r\n options = _.extend({}, options, { ctor: this.options.alertViewCtor });\r\n\r\n channel.trigger('show:alert', options);\r\n }\r\n\r\n public removeAlert(id: string): void {\r\n this.alertCollection.remove(id);\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public createAlert(alertData: BaseAlert): void {\r\n if (this.alertCollection.length === this.options.maxAlerts)\r\n this.alertCollection.shift();\r\n\r\n if (!alertData.id)\r\n alertData = _.extend({}, alertData, { id: this.generateUniqueAlertId() });\r\n\r\n this.alertCollection.push(new BaseModel(alertData));\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public clearAllAlerts(): void {\r\n this.alertCollection.reset(null);\r\n }\r\n\r\n public success(successAlert: string | BaseAlert | BaseAlertOptions): DefaultAlertCallback {\r\n // Construct alert object from string\r\n if (typeof successAlert === 'string')\r\n return _.bind(() =>\r\n this.createAlert(_.extend({}, this.options.defaultSuccessAlert, { message: successAlert })), this);\r\n\r\n // Construct alert object from our XHR response\r\n if ((successAlert as BaseAlertOptions).useXHR) {\r\n return _.bind((data: any, textStatus: any) =>\r\n this.createAlert(_.extend({}, this.options.defaultSuccessAlert, { message: textStatus })), this);\r\n }\r\n\r\n // Use alert passed as an argument \r\n return _.bind(() => this.createAlert(_.extend({}, this.options.defaultSuccessAlert, successAlert)), this);\r\n }\r\n\r\n public error(errorAlert: string | BaseAlert | BaseAlertOptions): DefaultAlertCallback {\r\n // Construct alert object from string\r\n if (typeof errorAlert === 'string')\r\n return _.bind(() =>\r\n this.createAlert(_.extend({}, this.options.defaultErrorAlert, { message: errorAlert })), this);\r\n\r\n // Construct alert object from our XHR response\r\n if ((errorAlert as BaseAlertOptions).useXHR) {\r\n return _.bind((error: DataServiceError) =>\r\n this.createAlert(_.extend({}, this.options.defaultErrorAlert, { message: error.message })), this);\r\n }\r\n\r\n // Use alert passed as an argument \r\n return _.bind(() => this.createAlert(_.extend({}, this.options.defaultErrorAlertIL_DEFAULT, errorAlert)), this);\r\n }\r\n\r\n private generateUniqueAlertId(): string {\r\n return _.uniqueId('alert_');\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Cursors, OffsetPagination, LegacyPagination } from 'libs/common/backbone/interfaces/Pagination';\r\nimport { DataProvider } from 'libs/common/backbone/interfaces/DataProvider';\r\nimport { DataServiceGetRequest, DataServiceCreateRequest, DataServiceUpdateRequest, DataServiceDeleteRequest } from 'libs/common/backbone/interfaces/DataServiceRequests';\r\nimport { DataCache } from 'libs/common/backbone/interfaces/DataCache';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\n\r\nimport { BaseDataServiceRequest, DataServiceCacheOptions, DataServiceRequestOptions, RequestSignatures, DataServiceClearAndGetRequest } from 'libs/common/backbone/interfaces/DataServiceRequests';\r\nimport { ChainableDataService } from 'libs/common/backbone/interfaces/ChainableDataService';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { BaseAlertService } from './BaseAlertService';\r\n\r\n\r\nexport interface BaseDataServiceOptions {\r\n dataProvider: DataProvider;\r\n cache: DataCache;\r\n bootstrapData?: ObjectHash;\r\n defaultErrorHandler?: (...args: any[]) => any;\r\n alertService: BaseAlertService;\r\n}\r\n\r\nexport class BaseDataService extends BaseService {\r\n private bootstrapData: ObjectHash;\r\n\r\n /**\r\n * This is what is used to actually fetch the data.\r\n * This can be an AjaxDataProvider, a SignalRDataProvider\r\n * or a LocalStorageDataProvider.\r\n */\r\n private dataProvider: DataProvider;\r\n\r\n /**\r\n * Store fetched data.\r\n */\r\n private cache: DataCache;\r\n\r\n /**\r\n * Maintain a hash of dataRequestSignatures to ensure\r\n * that we only bind listeners for the first data event\r\n * for a given eventprefix. \r\n */\r\n private dataRequestSignatures: RequestSignatures;\r\n\r\n /**\r\n * Default errorHandler attached as a callback to the errorEvent fired on the dataProvider's dataChannel.\r\n * Will not be bound if an alternative errorHandler is passed in as an option when making a data request\r\n * or if false is passed in as the errorHandler option.\r\n */\r\n private defaultErrorHandler: (...args: any[]) => any;\r\n\r\n /**\r\n * A reference to the consuming applications alert service.\r\n */\r\n protected alertService: BaseAlertService;\r\n\r\n /**\r\n * Specify the properties you want to be\r\n * taken from `options` and added to the context.\r\n */\r\n public props: string[];\r\n\r\n /**\r\n * The default properties that will be taken\r\n * from `options` and added to the context.\r\n */\r\n private get defaultProps(): string[] {\r\n return [ 'dataProvider', 'cache', 'bootstrapData', 'defaultErrorHandler', 'alertService' ];\r\n }\r\n\r\n constructor(options: BaseDataServiceOptions) {\r\n super(options);\r\n\r\n if (!_.result(this, 'name'))\r\n ErrorHelper.throw(new DevError(\r\n 'Must provide a name when extending BaseDataService'\r\n ));\r\n\r\n if (!_.result(this, 'channelName'))\r\n ErrorHelper.throw(new DevError(\r\n `Must provide a channelName for ${_.result(this, 'name')}`\r\n ));\r\n\r\n const props = [ ...this.defaultProps, ...(this.props || []) ];\r\n this.dataRequestSignatures = {};\r\n\r\n this.mergeOptions(options, props);\r\n }\r\n\r\n protected getCursors(cacheKey: string): Cursors {\r\n const cachedObj = this.cache.get(cacheKey);\r\n return cachedObj ? cachedObj.cursors : {};\r\n }\r\n\r\n protected clearCacheAndGet<T>(options: DataServiceClearAndGetRequest<T>): void {\r\n const {\r\n callback, errorCallback, eventPrefix\r\n } = options;\r\n\r\n const { syncEvent, errorEvent } = this.getEventNames(eventPrefix);\r\n\r\n const cachedObj = this.cache.get(eventPrefix);\r\n\r\n /**\r\n * If there is already an open request, simply bind the callback\r\n */\r\n if (cachedObj && cachedObj.openRequest) {\r\n\r\n const onSuccess = (data: any) => {\r\n if (_.isFunction(errorCallback))\r\n this.stopListening(this.getChannel(), errorEvent, errorCallback);\r\n\r\n _.isFunction(callback) && callback(data);\r\n };\r\n\r\n\r\n const onError = () => {\r\n if (_.isFunction(callback))\r\n this.stopListening(this.getChannel(), syncEvent, callback);\r\n\r\n _.isFunction(errorCallback) && errorCallback();\r\n };\r\n\r\n this.listenToOnce(this.getChannel(), syncEvent, onSuccess);\r\n this.listenToOnce(this.getChannel(), errorEvent, onError);\r\n\r\n return;\r\n }\r\n\r\n this.cache.remove(options.eventPrefix);\r\n this.get<T>(options);\r\n }\r\n\r\n protected get<T>(options: DataServiceGetRequest<T>): T {\r\n const {\r\n callback, errorCallback, eventPrefix, resource, formatData,\r\n expiryTime, successHandler, errorHandler, bootstrapName\r\n } = options;\r\n\r\n const {\r\n syncEvent, requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const timestamp = this.currentTimestamp();\r\n\r\n /**\r\n * If we have data bootstrapped in load it into the cache so \r\n * we don't fetch the first time\r\n */\r\n if (this.bootstrapData && this.bootstrapData[bootstrapName]) {\r\n this.cacheData(eventPrefix, this.bootstrapData[bootstrapName], formatData, { openRequest: false, timestamp });\r\n delete this.bootstrapData[bootstrapName];\r\n }\r\n\r\n const cachedObj = this.cache.get(eventPrefix);\r\n\r\n let cachedData: any;\r\n\r\n if (cachedObj)\r\n cachedData = cachedObj.data;\r\n\r\n const hasOpenRequest = cachedObj && cachedObj.openRequest;\r\n const isExpired = this.isExpired(eventPrefix, expiryTime);\r\n\r\n /**\r\n * If there is an open request for the current event prefix\r\n * bind a listener to fire the callback once we have our data.\r\n */\r\n if (hasOpenRequest) {\r\n const onSuccess = (data: any) => {\r\n if (_.isFunction(errorCallback))\r\n this.stopListening(this.getChannel(), errorEvent, errorCallback);\r\n\r\n _.isFunction(callback) && callback(data);\r\n };\r\n\r\n const onError = () => {\r\n if (_.isFunction(callback))\r\n this.stopListening(this.getChannel(), syncEvent, callback);\r\n\r\n _.isFunction(errorCallback) && errorCallback();\r\n };\r\n\r\n this.listenToOnce(channel, syncEvent, onSuccess);\r\n this.listenToOnce(channel, errorEvent, onError);\r\n }\r\n\r\n /**\r\n * If we have not yet requested the data, the data is stale, \r\n * or the data has been pushed out of our cache. We request the data.\r\n */\r\n if (!this.cache.has(eventPrefix) || isExpired) {\r\n\r\n channel.trigger(requestEvent);\r\n\r\n /**\r\n * Set up data listeners to trigger once the read call completes\r\n */\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n cacheOptions: { timestamp },\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n /**\r\n * We load the cache with the timestamp and the fact that \r\n * we have an open request, but with no data. This will let\r\n * other calls coming in while a request is open bind\r\n * to the sync event.\r\n */\r\n this.cacheData<T>(eventPrefix, null, null, { openRequest: true, timestamp });\r\n\r\n this.dataProvider.read<T>(resource, {\r\n channel: this.getTransportChannel(),\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n if (cachedData && _.isFunction(callback) && !isExpired)\r\n callback(cachedData);\r\n\r\n if (cachedData)\r\n return cachedData;\r\n }\r\n\r\n protected create<T>(options: DataServiceCreateRequest<T>): void {\r\n const {\r\n eventPrefix, resource, data, formatData, callback, errorCallback,\r\n invalidationKeys, successHandler, errorHandler\r\n } = options;\r\n\r\n const {\r\n requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(options.eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n\r\n channel.trigger(requestEvent);\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.create<T>(resource, data, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n protected update<T>(options: DataServiceUpdateRequest<T>): void {\r\n const {\r\n data, callback, errorCallback, resource, formatData, eventPrefix,\r\n invalidationKeys, errorHandler, successHandler\r\n } = options;\r\n\r\n const {\r\n requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(options.eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n\r\n channel.trigger(requestEvent);\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.update<T>(resource, data, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n protected delete(options: DataServiceDeleteRequest): void {\r\n const {\r\n eventPrefix, resource, callback, errorCallback, invalidationKeys, successHandler, errorHandler\r\n } = options;\r\n\r\n const { successEvent, errorEvent } = this.getEventNames(eventPrefix);\r\n\r\n const dataChannel = this.getTransportChannel();\r\n const cacheOptions: DataServiceCacheOptions = { noCache: true, clearCacheKey: true };\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n cacheOptions,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.delete(resource, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n private listenToResponse<T>(options: DataServiceRequestOptions): void {\r\n const {\r\n eventPrefix, formatData,\r\n callback, errorCallback,\r\n successHandler, errorHandler,\r\n invalidationKeys, cacheOptions = {}\r\n } = options;\r\n\r\n const {\r\n syncEvent, requestEvent,\r\n successEvent, errorEvent,\r\n successAlertEvent, errorAlertEvent\r\n } = this.getEventNames(eventPrefix);\r\n\r\n const appChannel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n const alertChannel = this.getAlertChannel();\r\n\r\n if (_.isFunction(callback))\r\n this.listenToOnce(appChannel, syncEvent, callback);\r\n\r\n if (_.isFunction(errorCallback))\r\n this.listenToOnce(appChannel, errorEvent, errorCallback);\r\n\r\n /**\r\n * Bind Alert handlers to the dataChannel\r\n */\r\n\r\n this.stopListening(alertChannel, successAlertEvent);\r\n this.stopListening(alertChannel, errorAlertEvent);\r\n\r\n if (_.isFunction(successHandler))\r\n this.listenToOnce(alertChannel, successAlertEvent, successHandler);\r\n\r\n if (_.isFunction(errorHandler))\r\n this.listenToOnce(alertChannel, errorAlertEvent, errorHandler);\r\n\r\n /**\r\n * AlertService.error({ useXHR: true }) will be bound as the errorHandler unless an\r\n * alternative error handler was passed in or if false is passed in.\r\n */\r\n if (!_.isFunction(errorHandler) && errorHandler !== false && _.isFunction(this.defaultErrorHandler))\r\n this.listenToOnce(alertChannel, errorAlertEvent, this.defaultErrorHandler);\r\n\r\n /**\r\n * Check whether we've already bound the request signature for the \r\n * current data event. We only need to setup the listeners for the first\r\n * request for a given eventprent.\r\n */\r\n if (this.hasRequestSignature(eventPrefix))\r\n return;\r\n\r\n /**\r\n * Subsequent data event requests that match the same\r\n * signature will only have the app-level events bound and will listen\r\n * to the transport channel event that was previously bound.\r\n */\r\n this.setRequestSignature(eventPrefix);\r\n\r\n /**\r\n * All request methods currently utilise this callback once the DataProvider\r\n * triggers the successEvent.\r\n */\r\n const onSuccess = (data: any, ...args: any[]) => {\r\n /**\r\n * Unbind errorCallback\r\n */\r\n this.stopListening(appChannel, errorEvent, errorCallback);\r\n\r\n alertChannel.trigger(successAlertEvent, data, ...args);\r\n\r\n const formattedData = cacheOptions.noCache\r\n ? this.formatData<T>(data, formatData)\r\n : this.cacheData<T>(eventPrefix, data, formatData);\r\n\r\n if (cacheOptions.clearCacheKey)\r\n this.cache.remove(eventPrefix);\r\n\r\n /**\r\n * Let everyone know their pie is ready.\r\n */\r\n appChannel.trigger(syncEvent, formattedData);\r\n\r\n if (invalidationKeys && invalidationKeys.length)\r\n this.cache.invalidate(invalidationKeys, (cacheKey: string) => appChannel.trigger(`${cacheKey}:invalidate`));\r\n };\r\n\r\n /**\r\n * All request methods will utilise this callback once the DataProvider\r\n * triggers the errorEvent.\r\n */\r\n const onError = (...args: any[]) => {\r\n /**\r\n * Unbind success callback\r\n */\r\n this.stopListening(appChannel, syncEvent, callback);\r\n\r\n const parsedError = this.dataProvider.parseError(...args);\r\n alertChannel.trigger(errorAlertEvent, parsedError);\r\n appChannel.trigger(errorEvent, parsedError);\r\n\r\n if (cacheOptions.noCache)\r\n return;\r\n\r\n /**\r\n * Cache the null response so that openRequest\r\n * will be updated from true to false.\r\n */\r\n this.cacheData<T>(eventPrefix, null, null);\r\n };\r\n\r\n /**\r\n * Listen on data channel for responses from our\r\n * data provider.\r\n */\r\n this.listenTo(dataChannel, successEvent, onSuccess);\r\n this.listenTo(dataChannel, errorEvent, onError);\r\n }\r\n\r\n private cacheData<T>(cacheKey: string, data: any,\r\n formatData: (data: any) => any, options: DataServiceCacheOptions = {}): T {\r\n\r\n let { openRequest = false, timestamp } = options;\r\n\r\n if (!timestamp)\r\n timestamp = this.currentTimestamp();\r\n\r\n const cursors = this.processPagination(data);\r\n\r\n /**\r\n * Format and cache out data.\r\n */\r\n const formattedData = this.formatData<T>(data, formatData);\r\n\r\n this.cache.set(cacheKey, {\r\n data: formattedData,\r\n timestamp,\r\n cursors,\r\n openRequest\r\n });\r\n\r\n return formattedData;\r\n }\r\n\r\n private processPagination(data: ObjectHash): Cursors {\r\n if (!data) return;\r\n\r\n const { pagination } = data;\r\n\r\n if (!pagination)\r\n return;\r\n\r\n if (pagination.cursors)\r\n return pagination.cursors;\r\n\r\n if (!_.isUndefined(pagination.offset) && !_.isUndefined(pagination.pageSize))\r\n return this.convertOffsetPaginationToCursors(pagination);\r\n\r\n if (pagination.page)\r\n return this.convertLegacyPaginationToCursors(pagination);\r\n }\r\n\r\n private formatData<T>(data: any, formatData: (data: any) => any): T {\r\n return _.isFunction(formatData) ? formatData(data) : data;\r\n }\r\n\r\n /**\r\n * Used to syncronously execute dataService operations.\r\n * This will mainly be used if we need to update a model\r\n * or collection after an api call.\r\n */\r\n protected chain(): ChainableDataService {\r\n /**\r\n * Used as a FIFO buffer with pop and shift.\r\n */\r\n const callbacks: Function[] = [];\r\n\r\n const safeRun = (callback: Function, data?: any) => {\r\n if (_.isFunction(callback))\r\n callback(data);\r\n };\r\n\r\n const base = (options: BaseDataServiceRequest, operation: string) => {\r\n\r\n const callback = () => {\r\n /**\r\n * Store reference to the original callback\r\n */\r\n const oldCallback = options.callback;\r\n\r\n /**\r\n * Replace the original callback with a callback\r\n * that calls both the orignal callback and the \r\n * next operation in the stack.\r\n */\r\n options.callback = (data: any) => {\r\n safeRun(oldCallback, data);\r\n safeRun(callbacks.shift());\r\n };\r\n\r\n /**\r\n * Run out operation with our new options\r\n */\r\n (this as any)[operation](options);\r\n };\r\n\r\n /**\r\n * Push operation into the FIFO stack\r\n */\r\n callbacks.push(callback);\r\n\r\n return chainable;\r\n };\r\n\r\n /**\r\n * We return this object at the end of each function\r\n * in order to enable continuous chaining\r\n */\r\n const chainable = {\r\n func(callback: any): ChainableDataService {\r\n callbacks.push(() => {\r\n callback(callbacks.shift() || (() => {}));\r\n });\r\n return chainable;\r\n },\r\n get<T>(options: DataServiceGetRequest<T>): ChainableDataService {\r\n return base(options, 'get');\r\n },\r\n create<T>(options: DataServiceCreateRequest<T>): ChainableDataService {\r\n return base(options, 'create');\r\n },\r\n update<T>(options: DataServiceUpdateRequest<T>): ChainableDataService {\r\n return base(options, 'update');\r\n },\r\n delete(options: DataServiceDeleteRequest): ChainableDataService {\r\n return base(options, 'delete');\r\n },\r\n\r\n /**\r\n * This should be the last thing called when using chain\r\n * and will simply kick off the first function in the FIFO buffer\r\n */\r\n run(): void {\r\n safeRun(callbacks.shift());\r\n }\r\n };\r\n\r\n return chainable;\r\n }\r\n\r\n protected invalidateCache(invalidationKeys?: string[]): void {\r\n if (!invalidationKeys || !invalidationKeys.length)\r\n return;\r\n\r\n this.cache.invalidate(invalidationKeys);\r\n }\r\n\r\n private currentTimestamp(): number {\r\n return new Date().valueOf();\r\n }\r\n\r\n private isExpired(key: string, expiryTime: number): boolean {\r\n if (!expiryTime)\r\n return false;\r\n\r\n const cachedObj = this.cache.get(key);\r\n\r\n if (!cachedObj || !cachedObj.timestamp) return true;\r\n\r\n const millisecondMultiplier = 1000;\r\n\r\n const lastTime = cachedObj.timestamp;\r\n const expiryTimeMilliseconds = expiryTime * millisecondMultiplier;\r\n\r\n return lastTime < (this.currentTimestamp() - expiryTimeMilliseconds);\r\n }\r\n\r\n private getEventNames(eventPrefix: string): {[key: string]: string} {\r\n return {\r\n syncEvent: `${eventPrefix}:sync`,\r\n requestEvent: `${eventPrefix}:request`,\r\n successEvent: `${eventPrefix}:success`,\r\n errorEvent: `${eventPrefix}:error`,\r\n successAlertEvent: `${eventPrefix}:success:alert`,\r\n errorAlertEvent: `${eventPrefix}:error:alert`,\r\n };\r\n }\r\n\r\n private getTransportChannel(): Radio.Channel {\r\n return Radio.channel(`${this.channelName}:transport`);\r\n }\r\n\r\n private getAlertChannel(): Radio.Channel {\r\n return Radio.channel(`${this.channelName}:alert`);\r\n }\r\n\r\n private setRequestSignature(signature: string): void {\r\n this.dataRequestSignatures[signature] = signature;\r\n }\r\n\r\n private hasRequestSignature(signature: string): boolean {\r\n return !!this.dataRequestSignatures[signature];\r\n }\r\n\r\n private convertOffsetPaginationToCursors(pagination: OffsetPagination): Cursors {\r\n const { offset, pageSize, totalItems } = pagination;\r\n\r\n const nextPage = totalItems > 0 && offset < totalItems && offset + pageSize;\r\n const prevPage = totalItems > 0 && offset > 0 && Math.max(offset - pageSize, 0);\r\n\r\n let cursors: ObjectHash = {};\r\n\r\n if (nextPage && nextPage < totalItems)\r\n cursors.next = nextPage.toString();\r\n\r\n if (_.isNumber(prevPage))\r\n cursors.previous = prevPage.toString();\r\n\r\n if (_.isEmpty(cursors))\r\n return;\r\n\r\n return cursors as Cursors;\r\n }\r\n\r\n private convertLegacyPaginationToCursors(pagination: LegacyPagination): Cursors {\r\n const { page, totalPages } = pagination;\r\n\r\n const nextPage = _.isNumber(page) && page > 0 && page < totalPages && page + 1;\r\n const prevPage = _.isNumber(page) && page > 1 && page - 1;\r\n\r\n let cursors: ObjectHash = {};\r\n\r\n if (nextPage && nextPage <= totalPages)\r\n cursors.next = nextPage.toString();\r\n\r\n if (prevPage)\r\n cursors.previous = prevPage.toString();\r\n\r\n if (_.isEmpty(cursors))\r\n return;\r\n\r\n return cursors as Cursors;\r\n }\r\n}\r\n","import { ObjectHash } from 'backbone';\r\n\r\nclass StaticEnvironmentVariables {\r\n private static instance: StaticEnvironmentVariables;\r\n private variables: ObjectHash;\r\n\r\n constructor() {\r\n this.variables = {};\r\n }\r\n\r\n public static get Instance(): StaticEnvironmentVariables {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public get name(): string {\r\n return 'EnvironmentVariables';\r\n }\r\n\r\n public get isDevelopment(): boolean {\r\n return this.variables.isDevelopment;\r\n }\r\n\r\n public get(name: string): any {\r\n return this.variables[name];\r\n }\r\n\r\n public setUpVariables(variables: ObjectHash): void {\r\n this.variables = variables;\r\n }\r\n}\r\n\r\nexport const EnvironmentVariables = StaticEnvironmentVariables.Instance;","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseDataServiceOptions, BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { BaseAlertService } from './BaseAlertService';\r\n\r\ninterface DataServiceConstructor {\r\n new (options: BaseDataServiceOptions): BaseDataService;\r\n}\r\n\r\ninterface DataServiceInstanceOptions {\r\n cache: string;\r\n dataProvider: string;\r\n bootstrapData?: ObjectHash;\r\n defaultErrorHandler?: (...args: any[]) => any;\r\n alertService: BaseAlertService;\r\n}\r\n\r\nclass StaticInstanceManager extends BaseService {\r\n private static instance: StaticInstanceManager;\r\n\r\n private constructors: {[name: string]: () => Marionette.Object};\r\n private destructors: {[name: string]: () => void};\r\n private instances: {[name: string]: any};\r\n private singletonInstances: {[name: string]: any};\r\n private referenceCounts: {[name: string]: number};\r\n\r\n private constructor() {\r\n super();\r\n\r\n this.constructors = {};\r\n this.destructors = {};\r\n this.instances = {};\r\n this.singletonInstances = {};\r\n this.referenceCounts = {};\r\n }\r\n\r\n public get name(): string {\r\n return 'InstanceManager';\r\n }\r\n\r\n public static get Instance(): StaticInstanceManager {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public registerDataService(\r\n ctor: DataServiceConstructor, options: DataServiceInstanceOptions\r\n ): this {\r\n this.validateConstructor(ctor);\r\n\r\n const name = ctor.prototype.name;\r\n\r\n this.referenceCounts[name] = 0;\r\n this.constructors[name] = () => new ctor({\r\n dataProvider: this.getInstance(options.dataProvider),\r\n cache: this.getInstance(options.cache),\r\n bootstrapData: options.bootstrapData,\r\n defaultErrorHandler: options.defaultErrorHandler,\r\n alertService: options.alertService\r\n });\r\n this.destructors[name] = () => {\r\n if (this.instances[name])\r\n this.instances[name].destroy();\r\n else\r\n ErrorHelper.throw(new DevError(`Trying to destroy a ${name} instance that has already been destroyed`));\r\n\r\n this.releaseInstance(options.dataProvider);\r\n this.releaseInstance(options.cache);\r\n };\r\n\r\n return this;\r\n }\r\n\r\n public registerInstance<TInstanceOptions>(ctor: new(...args: any[]) => any, options?: TInstanceOptions): this {\r\n this.validateConstructor(ctor);\r\n\r\n const name = ctor.prototype.name;\r\n\r\n this.referenceCounts[name] = 0;\r\n this.constructors[name] = () => new ctor(options);\r\n this.destructors[name] = () => _.isFunction(this.instances[name].destroy) && this.instances[name].destroy();\r\n\r\n return this;\r\n }\r\n\r\n public registerSingleton(instance: any): this {\r\n const name = instance.name;\r\n\r\n this.singletonInstances[name] = instance;\r\n\r\n return this;\r\n }\r\n\r\n public getInstance<T>(name: string, owner?: Backbone.Events): T {\r\n if (this.singletonInstances[name])\r\n return this.singletonInstances[name];\r\n\r\n if (!this.constructors[name])\r\n ErrorHelper.throw(new DevError(`${name} was not registered with ${this.name}`));\r\n\r\n this.referenceCounts[name]++;\r\n\r\n if (owner)\r\n this.listenTo(owner, 'destroy', () => this.releaseInstance(name));\r\n\r\n if (!this.instances[name]) {\r\n this.instances[name] = this.constructors[name]();\r\n }\r\n\r\n return this.instances[name];\r\n }\r\n\r\n public releaseInstance(name: string): this {\r\n if (!this.instances[name])\r\n return;\r\n\r\n /**\r\n * In scenarios where an application redirects to another application\r\n * within one execution cycle, an instance may be initialized, used to fetch\r\n * data and disposed of, before the instance is requested again, which will leave\r\n * a hanging open fetch request.\r\n *\r\n * By wrapping the below in a setTimeout we ensure any instance clean up\r\n * will always happen at the end of any execution cycle.\r\n */\r\n window.setTimeout(() => {\r\n this.referenceCounts[name]--;\r\n\r\n if (this.referenceCounts[name] < 1) {\r\n this.destructors[name]();\r\n delete this.instances[name];\r\n }\r\n }, 0);\r\n\r\n return this;\r\n }\r\n\r\n private validateConstructor(ctor: new(...args: any[]) => any): void {\r\n const name = ctor.prototype.name;\r\n\r\n if (!name)\r\n ErrorHelper.throw(new DevError(`Classes registered with ${this.name} must have a unique name property.`));\r\n\r\n if (this.constructors[name]) {\r\n ErrorHelper.throw(\r\n new DevError(`A class with the name: ${name} has already been registered with ${this.name}`)\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const InstanceManager = StaticInstanceManager.Instance;","import * as Polyglot from 'node-polyglot';\r\nimport * as _ from 'underscore';\r\nimport * as DOMPurify from 'dompurify';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\n\r\ninterface LanguageInterpolationOptions {\r\n smartCount?: number;\r\n [propName: string]: any;\r\n}\r\n\r\ninterface LanguageConfig {\r\n locale: string;\r\n phrases: ObjectHash;\r\n}\r\n\r\nclass StaticLanguageService extends BaseService {\r\n private static instance: StaticLanguageService;\r\n private polyglot: Polyglot;\r\n\r\n private cache: ObjectHash;\r\n\r\n public static get Instance(): StaticLanguageService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public get name(): string {\r\n return CommonServices.LANGUAGE;\r\n }\r\n\r\n public setConfig(config: LanguageConfig): void {\r\n this.polyglot = new Polyglot({\r\n locale: config.locale,\r\n // TODO: Loading from rootElement is a temp fix. Figure out why this is broke. \r\n phrases: config.phrases.rootElement || config.phrases\r\n });\r\n\r\n this.cache = {};\r\n }\r\n\r\n public getPhrase(namespace: string, phraseKey: string, options?: LanguageInterpolationOptions): string {\r\n const fullKey = `${namespace}.${phraseKey}`;\r\n\r\n /**\r\n * Error handling\r\n */\r\n if (!this.polyglot)\r\n ErrorHelper.throw(new DevError('LanguageService config must be set.'));\r\n\r\n if (!this.polyglot.has(fullKey)) {\r\n if (!EnvironmentVariables.isDevelopment) {\r\n const trackJs = (window as any).trackJs;\r\n\r\n // Log language service errors to track js in production without throwing an execution-breaking error\r\n if (trackJs)\r\n trackJs.console.error(`No phrase set for ${fullKey} in language config`);\r\n\r\n return '';\r\n }\r\n\r\n ErrorHelper.throw(new DevError(`No phrase set for ${fullKey} in language config.`));\r\n }\r\n\r\n if (!options || _.isEmpty(options)) {\r\n const cachedPhrase = this.cache[fullKey];\r\n\r\n if (cachedPhrase)\r\n return cachedPhrase;\r\n\r\n const phrase = this.polyglot.t(fullKey);\r\n this.cache[fullKey] = phrase;\r\n return phrase;\r\n }\r\n\r\n const interpolationOptions = _.omit(options, 'smartCount');\r\n\r\n let sanitizedInterpolationOptions: ObjectHash = {};\r\n for (let key in interpolationOptions) {\r\n sanitizedInterpolationOptions[key] = DOMPurify.sanitize(interpolationOptions[key]);\r\n }\r\n\r\n if (_.isNumber(options.smartCount))\r\n sanitizedInterpolationOptions.smart_count = options.smartCount;\r\n\r\n const cacheKey = `${fullKey}:${_.values({ ...sanitizedInterpolationOptions }).join(':')}`;\r\n const cachedText = this.cache[cacheKey];\r\n\r\n if (cachedText)\r\n return cachedText;\r\n\r\n const text = this.polyglot.t(fullKey, sanitizedInterpolationOptions);\r\n this.cache[cacheKey] = text;\r\n return text;\r\n }\r\n\r\n public encloseNamespace(namespace: string): Function {\r\n return (phraseKey: string, options?: LanguageInterpolationOptions): string => {\r\n return this.getPhrase(namespace, phraseKey, options);\r\n };\r\n }\r\n}\r\n\r\nexport const LanguageService = StaticLanguageService.Instance;","import * as _ from 'underscore';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { BehaviorChannels } from 'libs/common/backbone/constants/BehaviorChannels';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { EventNames } from 'libs/common/backbone/core/EventNames';\r\n\r\nexport class ScrollService extends BaseService {\r\n private preventScroll: boolean;\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTING_END, this.scrollTop);\r\n\r\n /**\r\n * If a popup renders during the app route,\r\n * cancel the scroll top.\r\n */\r\n this.listenTo(BehaviorChannels.POPUP, 'popup:render', this.cancelScrollTop);\r\n this.listenTo(CommonChannels.POPUP, 'popup:render', this.cancelScrollTop);\r\n }\r\n\r\n public get name(): string {\r\n return CommonServices.SCROLL;\r\n }\r\n\r\n /**\r\n * In places of the application where we would not\r\n * like an appLink to scroll to the top, call this\r\n * method. This will typically be done in an `onBeforeRender`\r\n * or 'onClick' handler.\r\n */\r\n public cancelScrollTop(): void {\r\n this.preventScroll = true;\r\n }\r\n\r\n /**\r\n * Once the route change has completed, we check to see\r\n * if the page should scroll to the top based on the check\r\n * done by validateAppLink\r\n */\r\n public scrollTop(): void {\r\n if (this.preventScroll) {\r\n this.preventScroll = false;\r\n return;\r\n }\r\n\r\n $(window).scrollTop(0);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { StorageType, StorageHelper, LocalStorageHelper, SessionStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { BaseModel } from 'libs/common/backbone/core/BaseModel';\r\nimport { BaseNestedModel } from 'libs/common/backbone/core/BaseNestedModel';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\n\r\ninterface ViewModel extends BaseModel {}\r\ninterface ViewNestedModel extends BaseNestedModel {}\r\n\r\ntype ViewData = ViewModel | ViewNestedModel;\r\n\r\nexport type ViewModelData = ObjectHash | ObjectHash[];\r\n\r\ninterface ViewModelHash {\r\n [prop: string]: ViewData;\r\n}\r\n\r\nexport interface ViewModelStorage {\r\n /**\r\n * Auto-persist properties when a change event occurs\r\n */\r\n persistProps: string | string[];\r\n type: StorageType;\r\n}\r\n\r\nexport interface ViewModelOptions<TData> {\r\n update?: boolean;\r\n ctor?: { new(vals: ViewModelData, options?: ObjectHash): TData };\r\n storage?: ViewModelStorage;\r\n}\r\n\r\nclass StaticViewModelService extends BaseService {\r\n private static instance: StaticViewModelService;\r\n private viewObjects: ViewModelHash;\r\n\r\n private constructor() {\r\n super();\r\n this.viewObjects = {};\r\n }\r\n\r\n public static get Instance(): StaticViewModelService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public get name(): string {\r\n return 'ViewModelService';\r\n }\r\n\r\n /**\r\n * Update the view model attributes to include defaults, only where they haven't already\r\n * been set previously on the model.\r\n * \r\n * Note: Checking model instance type is deliberate for Model & NestedModel, otherwise the type system\r\n * doesn't know which set() is being invoked. ¯\\_(ツ)_/¯ \r\n */\r\n private updateViewModel<TData extends ViewData>(viewData: ViewData, defaultValues: ObjectHash): TData {\r\n const data = this.mergeData(defaultValues, viewData.toJSON());\r\n\r\n if (viewData instanceof BaseNestedModel) {\r\n viewData.set(data, { silent: true });\r\n }\r\n\r\n if (viewData instanceof BaseModel && !(viewData instanceof BaseNestedModel)) {\r\n viewData.set(data, { silent: true });\r\n }\r\n\r\n return viewData as TData;\r\n }\r\n\r\n public get<TData extends ViewData>(key: string, defaultValues: ViewModelData = {},\r\n options: ViewModelOptions<TData> = {}): TData {\r\n\r\n const { update = false } = options;\r\n\r\n // Get existing cached object\r\n const viewData = this.viewObjects[key] as TData;\r\n\r\n if (viewData && update)\r\n return this.updateViewModel(viewData, defaultValues);\r\n\r\n if (viewData)\r\n return viewData;\r\n\r\n // When there is no cached view model, check to see if we have any locally persisted data\r\n const savedData = this.getLocalData<TData>(key, options);\r\n\r\n // Create a new view model along with defaults and any locally saved data\r\n return this.set<TData>(key, defaultValues, savedData, options);\r\n }\r\n\r\n private set<TData extends ViewData>(key: string, defaultValues: ViewModelData = {},\r\n existingData?: any,\r\n options?: ViewModelOptions<TData>): TData {\r\n\r\n const { ctor, storage } = options;\r\n\r\n const data = this.mergeData(defaultValues, existingData);\r\n\r\n const viewModel = ctor ? new ctor(data) : new BaseModel(data);\r\n\r\n this.viewObjects[key] = viewModel;\r\n\r\n // Use local storage to store the initial values of the view model\r\n if (storage && !existingData) {\r\n this.setLocalData(key, viewModel, null, options);\r\n this.setupChangeListeners(key, viewModel, options);\r\n\r\n // If we have restored the view model using local storage, we do not need\r\n // to set it again (until a subsequent change occurs)\r\n } else if (storage && existingData) {\r\n this.setupChangeListeners(key, viewModel, options);\r\n }\r\n\r\n return viewModel as TData;\r\n }\r\n\r\n public clear(key: string): boolean {\r\n const viewModel = this.viewObjects[key];\r\n\r\n if (!viewModel)\r\n return false;\r\n\r\n this.stopListening(viewModel);\r\n viewModel.trigger('destroy');\r\n delete this.viewObjects[key];\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Retrieve any data we've previous stored within local storage\r\n */\r\n private getLocalData<TData extends ViewData>(key: string, options: ViewModelOptions<TData>): any {\r\n const { storage } = options;\r\n if (!storage) return;\r\n\r\n const storageHelper = this.getStorageHelper(storage.type);\r\n return storageHelper.get(key);\r\n }\r\n\r\n /**\r\n * Store changed properties in local storage\r\n * \r\n * It is not possible to blindly save entire models, instead, specific model properties must be passed\r\n * via the storage persistProps. These props will all be set together, even if only one has changed, this\r\n * saves us from unncessarily polluting local storage with single props. \r\n * \r\n * @param key \r\n * @param viewData \r\n * @param value \r\n * @param options \r\n */\r\n private setLocalData<TData extends ViewData>(key: string, viewData: ViewData,\r\n value: string, options: ViewModelOptions<TData>): any {\r\n\r\n const { storage } = options;\r\n if (!storage || (storage && !storage.persistProps)) return;\r\n\r\n if (typeof storage.persistProps === 'string')\r\n storage.persistProps = [storage.persistProps];\r\n\r\n let data;\r\n\r\n if (viewData instanceof BaseModel)\r\n data = viewData.pick(storage.persistProps);\r\n\r\n const storageHelper = this.getStorageHelper(storage.type);\r\n storageHelper.set(key, data);\r\n }\r\n\r\n /**\r\n * Setup model listeners to store changes to local storage automatically\r\n */\r\n private setupChangeListeners<TData extends ViewData>(key: string, viewData: ViewData,\r\n options: ViewModelOptions<TData>): any {\r\n\r\n const { storage } = options;\r\n if (!storage || (storage && !storage.persistProps)) return;\r\n\r\n if (typeof storage.persistProps === 'string')\r\n storage.persistProps = [storage.persistProps];\r\n\r\n _.each(storage.persistProps, (prop: string) => {\r\n this.listenTo(viewData, `change:${prop}`, _.partial(this.setLocalData, key, _, _, options));\r\n });\r\n }\r\n\r\n private mergeData(defaultValues: ViewModelData, existingData?: any): any {\r\n if (!existingData)\r\n return defaultValues;\r\n\r\n if (_.isObject(defaultValues) && _.isObject(existingData))\r\n return _.extend(defaultValues, existingData);\r\n\r\n ErrorHelper.throw(new DevError('defaultValues and existingData are not of the same datatype and cannot be merged'));\r\n }\r\n\r\n private getStorageHelper(type: StorageType): StorageHelper {\r\n switch (type) {\r\n case StorageType.LocalStorage:\r\n return LocalStorageHelper;\r\n\r\n case StorageType.SessionStorage:\r\n return SessionStorageHelper;\r\n }\r\n }\r\n}\r\n\r\nexport const ViewModelService = StaticViewModelService.Instance;","import * as _ from 'underscore';\r\n\r\nimport { ObjectHash } from 'backbone';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { DataCache } from 'libs/common/backbone/interfaces/DataCache';\r\nimport { Caches } from 'libs/common/backbone/constants/Caches';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\n\r\ninterface FifoMemoryCacheOptions {\r\n size: number;\r\n}\r\n\r\nexport class FifoMemoryCache extends BaseService implements DataCache {\r\n private size: number;\r\n private cache: ObjectHash;\r\n private cachedkeys: string[];\r\n\r\n constructor(options: FifoMemoryCacheOptions) {\r\n super();\r\n\r\n this.size = options.size;\r\n this.cache = {};\r\n this.cachedkeys = [];\r\n }\r\n\r\n public get name(): string {\r\n return Caches.Fifo;\r\n }\r\n\r\n private removeCacheKey(cacheKey: string): void {\r\n this.cachedkeys = _.without(this.cachedkeys, cacheKey);\r\n }\r\n\r\n public has(cacheKey: string): boolean {\r\n return !!this.cache[cacheKey];\r\n }\r\n\r\n public get(cacheKey: string): any {\r\n return this.cache[cacheKey];\r\n }\r\n\r\n public set(cacheKey: string, value: any): void {\r\n if (!cacheKey || !value) {\r\n ErrorHelper.throw(new DevError('Must provide a cache key and a value to cache in FifoMemoryCache.'));\r\n }\r\n\r\n /**\r\n * Calling set on an existing key should move it to the front\r\n * of the buffer again.\r\n */\r\n if (this.has(cacheKey))\r\n this.removeCacheKey(cacheKey);\r\n\r\n this.cachedkeys.push(cacheKey);\r\n\r\n this.cache[cacheKey] = value;\r\n\r\n if (this.cachedkeys.length > this.size)\r\n delete this.cache[this.cachedkeys.shift()];\r\n }\r\n\r\n public getOrSet(cacheKey: string, getter: () => any): any {\r\n if (this.has(cacheKey))\r\n return this.get(cacheKey);\r\n\r\n const value = getter();\r\n this.set(cacheKey, value);\r\n return value;\r\n }\r\n\r\n public remove(cacheKey: string): boolean {\r\n if (!this.has(cacheKey))\r\n return false;\r\n\r\n delete this.cache[cacheKey];\r\n this.removeCacheKey(cacheKey);\r\n return true;\r\n }\r\n\r\n public invalidate(cacheKeys: string[], callback?: (cacheKey: string) => void): void {\r\n // Create a an object hash of all the cached keys\r\n const keyHash: ObjectHash = _.object(this.cachedkeys, this.cachedkeys);\r\n let invalidationSet: string[] = [];\r\n\r\n _.each(cacheKeys, (ck: string) => {\r\n // Direct match on the key\r\n if (keyHash[ck])\r\n invalidationSet.push(ck);\r\n\r\n // Find all matches against the given cache key regex\r\n const regex = new RegExp(ck, 'i');\r\n const keysToInvalidate = _.filter(keyHash, (k: string) => regex.test(k));\r\n\r\n // Merge regex matches with direct matches\r\n invalidationSet.push(...keysToInvalidate);\r\n });\r\n\r\n if (!invalidationSet.length)\r\n return;\r\n\r\n invalidationSet = _.uniq(invalidationSet);\r\n\r\n // Delete all matches and remove cache keys\r\n _.each(invalidationSet, ik => {\r\n delete this.cache[ik];\r\n\r\n if (_.isFunction(callback))\r\n callback(ik);\r\n });\r\n\r\n this.cachedkeys = _.without(this.cachedkeys, ...invalidationSet);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { DataServiceError, DefaultDataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\nimport { DataProvider, DataProviderResponseOptions } from 'libs/common/backbone/interfaces/DataProvider';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { DataServiceErrorType } from 'libs/common/backbone/enums/DataServiceErrorType';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\nimport { DataServiceErrorHelper } from 'libs/common/backbone/utils/DataServiceErrorHelper';\r\n\r\ninterface MiddlewareCallback {\r\n (data: any, textStatus: any, jqXHR: any): any;\r\n}\r\n\r\ninterface MiddlewareHash {\r\n [name: string]: MiddlewareCallback;\r\n}\r\n\r\ninterface AjaxDataProviderOptions {\r\n dataServiceErrorMessageMappings: ObjectHash;\r\n defaultErrorMessageKey: string;\r\n}\r\n\r\nexport class AjaxDataProvider extends Marionette.Object implements DataProvider {\r\n private successMiddleware: MiddlewareHash;\r\n private errorMiddleware: MiddlewareHash;\r\n private dataServiceErrorMessageMappings: ObjectHash;\r\n private defaultErrorMessageKey: string;\r\n\r\n constructor(options?: AjaxDataProviderOptions) {\r\n super(options);\r\n\r\n $.ajaxSetup({\r\n cache: false,\r\n contentType: 'application/json; charset=utf-8'\r\n });\r\n\r\n this.successMiddleware = {};\r\n this.errorMiddleware = {};\r\n this.dataServiceErrorMessageMappings = options.dataServiceErrorMessageMappings;\r\n this.defaultErrorMessageKey = options.defaultErrorMessageKey;\r\n }\r\n\r\n public get name(): string {\r\n return DataProviders.Ajax;\r\n }\r\n\r\n private parseUrl(url: string): HTMLAnchorElement {\r\n const a = document.createElement('a');\r\n a.href = url;\r\n\r\n if (a.host === '') a.href = a.href;\r\n\r\n return a;\r\n }\r\n\r\n private makeHttps(url: string): string {\r\n const fullUrl = this.parseUrl(url);\r\n\r\n if (fullUrl.protocol === 'http:') fullUrl.protocol = 'https:';\r\n\r\n return fullUrl.href;\r\n }\r\n\r\n private base<T>(\r\n resource: string,\r\n data: T,\r\n method: string,\r\n opts: ObjectHash = {}\r\n ): JQuery.Promise<T> {\r\n method || (method = HttpVerbs.GET);\r\n\r\n const o = _.defaults(opts, { forceHttps: false });\r\n\r\n const options: ObjectHash = {\r\n url: resource,\r\n method: method,\r\n type: method\r\n };\r\n\r\n if (data) {\r\n options.data =\r\n method === HttpVerbs.POST || method === HttpVerbs.PUT\r\n ? JSON.stringify(data)\r\n : data;\r\n }\r\n\r\n if (o.forceHttps) options.url = this.makeHttps(options.url);\r\n\r\n if (o.traditional) options.traditional = o.traditional;\r\n\r\n /** \r\n * jQuery.jqXHR does inherit from JQuery.Promise, but the typings in \r\n * definitelytyped's jQuery are so messed up that casting to any \r\n * is just easier. \r\n * \r\n * I mean there is a JQuery.Promise, JQuery.Promise1, JQuery.Promise2 & JQuery.Promise. Jesus... 🙏\r\n */\r\n const promise = $.ajax(options);\r\n\r\n if (_.keys(this.successMiddleware).length)\r\n promise.done(_.values(this.successMiddleware));\r\n\r\n if (_.keys(this.errorMiddleware).length)\r\n promise.fail(_.values(this.errorMiddleware));\r\n\r\n return promise as any;\r\n }\r\n\r\n public create<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, obj, HttpVerbs.POST)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public read<T>(resource: string, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, null, HttpVerbs.GET)\r\n .done((data: any, textStatus: any, jqXHR: any) => {\r\n channel.trigger(successEvent, data, textStatus, jqXHR);\r\n })\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) => {\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown);\r\n });\r\n }\r\n\r\n public update<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, obj, HttpVerbs.PUT)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public delete(resource: string, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base(resource, null, HttpVerbs.DELETE)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public useMiddleware(name: string, callback: MiddlewareCallback): void {\r\n if (this.successMiddleware[name])\r\n return;\r\n\r\n this.successMiddleware[name] = callback;\r\n }\r\n\r\n public useErrorMiddleware(name: string, callback: MiddlewareCallback): void {\r\n if (this.errorMiddleware[name])\r\n return;\r\n\r\n this.errorMiddleware[name] = callback;\r\n }\r\n\r\n public parseError(jqXHR: JQuery.jqXHR, textStatus: string, errorThrown: any): DataServiceError {\r\n const response = jqXHR.responseJSON;\r\n\r\n const error = DefaultDataServiceError;\r\n\r\n error.code = jqXHR.status;\r\n\r\n error.message = DataServiceErrorHelper.parseErrorMessage(\r\n this.dataServiceErrorMessageMappings, this.defaultErrorMessageKey, response);\r\n\r\n switch (jqXHR.status) {\r\n case 400:\r\n error.type = DataServiceErrorType.BadRequest;\r\n break;\r\n case 401:\r\n error.type = DataServiceErrorType.Unauthorized;\r\n break;\r\n case 403:\r\n error.type = DataServiceErrorType.Forbidden;\r\n break;\r\n case 404:\r\n error.type = DataServiceErrorType.NotFound;\r\n break;\r\n case 500:\r\n error.type = DataServiceErrorType.InternalServer;\r\n break;\r\n }\r\n\r\n return error;\r\n }\r\n}","import * as Marionette from 'backbone.marionette';\r\nimport { ObjectHash } from 'backbone';\r\nimport * as SignalR from '@microsoft/signalr';\r\n\r\nimport { DataProvider, DataProviderResponseOptions } from 'libs/common/backbone/interfaces/DataProvider';\r\nimport { DataServiceError, DefaultDataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\nimport { UrlHelper } from '../../utils/UrlHelper';\r\n\r\nexport interface SignalRDataProviderOptions {\r\n hubName: string;\r\n endpoint: string;\r\n authEndpoint: string;\r\n subscribeEvent?: string;\r\n logging?: boolean;\r\n lazy?: boolean;\r\n reconnectTimeout?: number;\r\n reconnectAttempts?: number;\r\n}\r\n\r\nexport interface SocketToken {\r\n Token: string;\r\n}\r\n\r\nexport abstract class SignalRDataProvider extends Marionette.Object implements DataProvider {\r\n private connection: SignalR.HubConnection;\r\n private connectionState: SignalR.HubConnectionState;\r\n private authEndpoint: string;\r\n\r\n private subscribeEvent: string = 'subscribe';\r\n private reconnectTimeout: number = 5000;\r\n private reconnectAttempts: number = 100;\r\n private reconnectTries: number = 0;\r\n\r\n public constructor(options: SignalRDataProviderOptions) {\r\n super();\r\n\r\n this.connection = this.createConnection(options);\r\n this.authEndpoint = options.authEndpoint;\r\n\r\n this.setProviderOptions(options);\r\n this.attachSocketEvents();\r\n\r\n if (options.lazy === false)\r\n this.openConnection();\r\n }\r\n\r\n private setProviderOptions(options: SignalRDataProviderOptions): void {\r\n if (options.subscribeEvent)\r\n this.subscribeEvent = options.subscribeEvent;\r\n\r\n if (options.reconnectTimeout)\r\n this.reconnectTimeout = options.reconnectTimeout;\r\n\r\n if (options.reconnectAttempts)\r\n this.reconnectAttempts = options.reconnectAttempts;\r\n }\r\n\r\n public openConnection(): JQueryPromise<any> {\r\n if (this.isConnectedOrConnecting())\r\n return;\r\n\r\n this.setConnectionState(SignalR.HubConnectionState.Connecting);\r\n\r\n return this.connect();\r\n }\r\n\r\n public connect(): JQueryPromise<any> {\r\n /**\r\n * Fetch an auth token and open the WS concurrently\r\n */\r\n const connectionPromise = $.when(\r\n this.getConnectionToken(),\r\n this.connection.start()\r\n );\r\n\r\n /**\r\n * Deliberately using then() to ensure we correctly subscribe before\r\n * any data events are triggered.\r\n */\r\n return connectionPromise.then(\r\n (successResponse: any) => this.start.apply(this, successResponse),\r\n (failResponse: any) => this.onConnectionError.apply(this, failResponse)\r\n );\r\n }\r\n\r\n public start(data: any): Promise<any> {\r\n return this.connection.invoke(this.subscribeEvent, data.token)\r\n .then(() => this.setConnectionState(SignalR.HubConnectionState.Connected))\r\n .catch((err: any) => this.onConnectionError(err));\r\n }\r\n\r\n public stop(): Promise<void> {\r\n if (!this.isConnectedOrConnecting())\r\n return;\r\n\r\n return this.connection.stop();\r\n }\r\n\r\n private attachSocketEvents(): void {\r\n this.connection.onclose(() => this.onConnectionError);\r\n this.connection.onreconnected(() => this.onReconnect);\r\n }\r\n\r\n private onReconnect(): void {\r\n this.reconnectTries = 0;\r\n }\r\n\r\n private onConnectionError(error?: any): any {\r\n if (error)\r\n console.log(`Connection Error. Reason: ${error}`);\r\n else\r\n console.log('Connection Error.');\r\n\r\n this.setConnectionState(SignalR.HubConnectionState.Disconnected);\r\n\r\n if (!this.reconnectAttempts || this.reconnectTries >= this.reconnectAttempts)\r\n return;\r\n\r\n setTimeout(() => {\r\n this.reconnectTries++;\r\n return this.openConnection();\r\n }, this.reconnectTimeout || 5000);\r\n }\r\n\r\n private createConnection(options: SignalRDataProviderOptions): SignalR.HubConnection {\r\n const hubConnection = new SignalR.HubConnectionBuilder();\r\n\r\n const endpoint = UrlHelper.removeTrailingSlash(options.endpoint);\r\n const hubEndpoint = `${endpoint}/hubs/${options.hubName}`;\r\n\r\n const connectionOptions: SignalR.IHttpConnectionOptions = {\r\n logger: SignalR.LogLevel.Error\r\n };\r\n\r\n if (options.logging)\r\n connectionOptions.logger = SignalR.LogLevel.Debug;\r\n\r\n return hubConnection\r\n .withUrl(hubEndpoint, connectionOptions)\r\n .build();\r\n }\r\n\r\n private getConnectionToken(): JQueryXHR {\r\n const options: ObjectHash = {\r\n url: this.authEndpoint,\r\n method: 'POST',\r\n type: 'POST'\r\n };\r\n\r\n return $.ajax(options);\r\n }\r\n\r\n private setConnectionState(nextState: SignalR.HubConnectionState): void {\r\n if (nextState === SignalR.HubConnectionState.Connected)\r\n console.log('Connected!');\r\n\r\n if (nextState === SignalR.HubConnectionState.Disconnected)\r\n console.log('Disconnected!');\r\n\r\n this.connectionState = nextState;\r\n }\r\n\r\n private isConnectedOrConnecting(): boolean {\r\n return this.connectionState === SignalR.HubConnectionState.Connecting ||\r\n this.connectionState === SignalR.HubConnectionState.Connected ||\r\n this.connectionState === SignalR.HubConnectionState.Reconnecting;\r\n }\r\n\r\n public create<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n this.openConnection();\r\n this.rpc<T>(resource, obj, options);\r\n }\r\n\r\n public read<T>(resource: string, options: DataProviderResponseOptions): void {\r\n this.openConnection();\r\n this.subscribe<T>(resource, options);\r\n }\r\n\r\n public update<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n this.openConnection();\r\n this.rpc<T>(resource, obj, options);\r\n }\r\n\r\n public delete(resource: string, options: DataProviderResponseOptions): void {\r\n this.openConnection();\r\n this.rpc(resource, null, options);\r\n }\r\n\r\n public parseError(...args: any[]): DataServiceError {\r\n return DefaultDataServiceError;\r\n }\r\n\r\n private rpc<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.connection.invoke(resource, obj)\r\n .then((args: any[]) =>\r\n channel.trigger(successEvent, ...args))\r\n .catch((args: any[]) =>\r\n channel.trigger(errorEvent, ...args));\r\n }\r\n\r\n private subscribe<T>(resource: string, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.connection.on(resource, (...args: any[]) => {\r\n channel.trigger(successEvent, ...args);\r\n });\r\n }\r\n}","/**\r\n * Not really for concurrency 😂\r\n * But useful in circumstances where we need to manually wait for\r\n * a sequence of callbacks or other resources to execute and don't \r\n * want the overhead of promises.\r\n */\r\nexport class ConcurrencyHelper {\r\n private value: number;\r\n\r\n constructor(initialValue: number) {\r\n this.value = initialValue;\r\n }\r\n\r\n public increment(): void {\r\n this.value += 1;\r\n }\r\n\r\n public decrement(): void {\r\n this.value -= 1;\r\n }\r\n\r\n public getValue(): number {\r\n return this.value;\r\n }\r\n}\r\n","import { ObjectHash } from 'backbone';\r\n\r\ninterface ApiErrorResponse {\r\n errorCode: string;\r\n errorSubCode: string;\r\n requestUrl: string;\r\n detailedMessage: string;\r\n requestId: string;\r\n data: ObjectHash;\r\n}\r\n\r\nexport const DataServiceErrorHelper: ObjectHash = {\r\n parseErrorMessage(errorMessageMappings: ObjectHash, defaultErrorCode: string, error: ApiErrorResponse): string {\r\n if (!error || !error.errorCode)\r\n return errorMessageMappings[defaultErrorCode];\r\n\r\n let errorMessageKey = `${error.errorCode}`;\r\n\r\n if (error.errorSubCode)\r\n errorMessageKey += `.${error.errorSubCode}`;\r\n\r\n return errorMessageMappings[errorMessageKey] || errorMessageMappings[defaultErrorCode];\r\n }\r\n};","import * as _ from 'underscore';\r\n\r\nexport const FunctionHelper = {\r\n debounce<T extends Function>(fn: T, wait: number, immediate?: boolean): T & _.Cancelable {\r\n return _.debounce<T>(fn, wait, immediate);\r\n },\r\n\r\n throttle<T extends Function>(fn: T, wait: number, options?: _.ThrottleSettings): T & _.Cancelable {\r\n return _.throttle<T>(fn, wait, options);\r\n },\r\n\r\n isFunction(object: any): object is Function {\r\n return _.isFunction(object);\r\n },\r\n\r\n useIdentity<T>(): (...args: any[]) => T {\r\n return _.identity;\r\n },\r\n\r\n memoize<T = Function>(fn: T, hashFn?: (...args: any[]) => string): T {\r\n return _.memoize(fn, hashFn);\r\n }\r\n};","export enum StorageType {\r\n LocalStorage = 'localStorage',\r\n SessionStorage = 'sesstionStorage'\r\n}\r\n\r\nexport interface StorageHelper {\r\n get(key: string): any;\r\n set(key: string, data: any): boolean;\r\n remove(key: string): any;\r\n length(): number;\r\n clear(): any;\r\n\r\n cacheSet(key: string, data: any, expire?: number): any;\r\n cacheGet(key: string): any;\r\n cacheExists(key: string): boolean;\r\n cacheRemove(key: string): any;\r\n cacheFlush(): void;\r\n}\r\n\r\ninterface CacheItem {\r\n time: number;\r\n data: any;\r\n}\r\n\r\ninterface StaticBaseStorageHelperOptions {\r\n type: StorageType;\r\n}\r\n\r\nabstract class StaticBaseStorageHelper implements StorageHelper {\r\n private cachePrefix: string = '_cv:';\r\n private expireTime: number = 3600;\r\n\r\n private hasSupport: boolean;\r\n private storage: Storage;\r\n protected type: StorageType;\r\n\r\n protected constructor(options: StaticBaseStorageHelperOptions) {\r\n this.hasSupport = this.hasBrowserSupport();\r\n\r\n this.type = options.type;\r\n\r\n if (!this.hasSupport) return;\r\n this.storage = (window as any)[this.type];\r\n }\r\n\r\n public get(key: string): any {\r\n if (!this.hasSupport) return;\r\n\r\n const item = this.storage.getItem(key);\r\n\r\n // Try and deserialize, if it fails its probably a string\r\n try {\r\n return JSON.parse(item);\r\n } catch (e) {\r\n return item;\r\n }\r\n }\r\n\r\n public set(key: string, data: any): boolean {\r\n if (!this.hasSupport) return;\r\n\r\n try {\r\n this.storage.removeItem(key);\r\n\r\n // localstorage doesn't support objects yet\r\n if (typeof data !== 'string') {\r\n this.storage.setItem(key, JSON.stringify(data));\r\n return true;\r\n }\r\n\r\n this.storage.setItem(key, data);\r\n return true;\r\n } catch (e) {\r\n // setItem() may throw an exception if the storage is full\r\n // Safari sets quota to 0 bytes in private mode\r\n return false;\r\n }\r\n }\r\n\r\n public remove(key: string): void {\r\n if (!this.hasSupport) return;\r\n return this.storage.removeItem(key);\r\n }\r\n\r\n public length(): number {\r\n if (!this.hasSupport) return;\r\n return this.storage.length;\r\n }\r\n\r\n public clear(): void {\r\n if (!this.hasSupport) return;\r\n return this.storage.clear();\r\n }\r\n\r\n /**\r\n * Caching Ops\r\n */\r\n\r\n public cacheSet(key: string, data: any, expire: number = this.expireTime): boolean {\r\n this.cacheClean();\r\n\r\n const item: CacheItem = {\r\n time: this.getCurrentTime() + (expire * 1000),\r\n data: typeof data !== 'undefined' && data !== null && data\r\n };\r\n\r\n return this.set(`${this.cachePrefix}${key}` , item);\r\n }\r\n\r\n public cacheGet(key: string): any {\r\n const cacheKey = `${this.cachePrefix}${key}`;\r\n const item: CacheItem = this.get(cacheKey);\r\n\r\n if (!item) return null;\r\n\r\n if (this.isExpired(item)) {\r\n this.remove(cacheKey);\r\n return null;\r\n }\r\n\r\n return item.data;\r\n }\r\n\r\n public cacheExists(key: string): boolean {\r\n const cacheKey = `${this.cachePrefix}${key}`;\r\n const item: CacheItem = this.get(cacheKey);\r\n\r\n if (!item) return false;\r\n\r\n if (this.isExpired(item)) {\r\n this.remove(cacheKey);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public cacheRemove(key: string): void {\r\n return this.remove(`${this.cachePrefix}${key}`);\r\n }\r\n\r\n public cacheFlush(): void {\r\n this.cacheClean();\r\n }\r\n\r\n /**\r\n * Privates\r\n */\r\n\r\n private cacheClean(): void {\r\n if (!this.hasSupport) return;\r\n\r\n for (let i = 0; i < this.storage.length; i++) {\r\n const key = this.storage.key(i);\r\n\r\n if (key.indexOf(this.cachePrefix) === 0) {\r\n const data: CacheItem = this.get(key);\r\n\r\n if (data && data.time) {\r\n if (this.isExpired(data)) {\r\n this.remove(key);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private isExpired(d: CacheItem): boolean {\r\n return d.time < this.getCurrentTime();\r\n }\r\n\r\n private getCurrentTime(): number {\r\n return new Date().getTime();\r\n }\r\n\r\n private hasBrowserSupport(): boolean {\r\n try {\r\n return this.type in window && (window as any)[this.type] !== null;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nclass StaticLocalStorageHelper extends StaticBaseStorageHelper {\r\n protected static instance: StaticLocalStorageHelper;\r\n\r\n public static get Instance(): StaticLocalStorageHelper {\r\n return this.instance || (this.instance = new this({ type: StorageType.LocalStorage }));\r\n }\r\n}\r\n\r\nclass StaticSessionStorageHelper extends StaticBaseStorageHelper {\r\n protected static instance: StaticSessionStorageHelper;\r\n\r\n public static get Instance(): StaticSessionStorageHelper {\r\n return this.instance || (this.instance = new this({ type: StorageType.SessionStorage }));\r\n }\r\n}\r\n\r\nexport const LocalStorageHelper = StaticLocalStorageHelper.Instance;\r\nexport const SessionStorageHelper = StaticSessionStorageHelper.Instance;","import { ObjectHash } from 'backbone';\r\nimport * as _ from 'underscore';\r\n\r\ninterface FilterParams {\r\n limit?: number;\r\n cursor?: string;\r\n before?: string; // dateCreated upper limit\r\n}\r\n\r\n/**\r\n * Removes trailing slashes. A more efficient way of\r\n * doing .endsWith('/')\r\n */\r\nconst trailingSlashMatcher = /\\/$/;\r\n\r\nexport const UrlHelper = {\r\n urlBuilder(base: string, queryStringObj: ObjectHash): string {\r\n const qsValues = _.map(queryStringObj, (value, key) => {\r\n if (key && Array.isArray(value)) {\r\n const params = value.map(v => `${key}=${encodeURIComponent(v)}`);\r\n return params.join('&');\r\n }\r\n\r\n if (key && typeof value !== 'undefined')\r\n return `${key}=${encodeURIComponent(value)}`;\r\n\r\n return '';\r\n });\r\n\r\n const qs = _.reduce(qsValues, (memo, value) => {\r\n if (!value)\r\n return memo;\r\n\r\n if (!memo)\r\n return value;\r\n\r\n return `${memo}&${value}`;\r\n });\r\n\r\n if (qs)\r\n return `${base}?${qs}`;\r\n\r\n return base;\r\n },\r\n\r\n buildFilter(params: FilterParams): string {\r\n let filters: string[] = [];\r\n\r\n if (params.limit)\r\n filters.push(`limit:${params.limit}`);\r\n\r\n if (params.cursor)\r\n filters.push(`page:${params.cursor}`);\r\n\r\n if (params.before)\r\n filters.push(`dateCreated:...${params.before}`);\r\n\r\n if (!filters.length)\r\n return;\r\n\r\n return filters.join(',');\r\n },\r\n\r\n makeHttps(url: string): string {\r\n if (!_.isString(url))\r\n return url;\r\n\r\n if (url.indexOf('http://') === -1) return url;\r\n\r\n url = url.replace('http://', 'https://');\r\n\r\n return url;\r\n },\r\n\r\n safeUrlConcat(baseUrl: string, path: string): string {\r\n if (!baseUrl) return;\r\n\r\n let url = baseUrl;\r\n\r\n if (!baseUrl.endsWith('/'))\r\n url += '/';\r\n\r\n if (!path) return url;\r\n\r\n url += path.startsWith('/')\r\n ? path.slice(1)\r\n : path;\r\n\r\n return url;\r\n },\r\n\r\n removeTrailingSlash(baseUrl: string): string {\r\n if (typeof baseUrl !== 'string')\r\n return;\r\n\r\n return baseUrl.replace(trailingSlashMatcher, '');\r\n }\r\n};","import { ObjectHash } from 'backbone';\r\n\r\nconst UARegex = {\r\n mobileDevice: /Mobi/i,\r\n\r\n // Mobile device regex\r\n iphone: /iphone/i,\r\n ipad: /ipad/i,\r\n android: /android/i,\r\n blackberry: /blackberry/i,\r\n windowsPhone: /windows phone/i,\r\n\r\n // Mobile versions\r\n iosVersion: /OS\\s+([\\d_.-:]+)\\s/i,\r\n androidVersion: /android\\s+([\\d_.-\\/]+)[\\s;:,\\)]/i,\r\n blackberryVersion: /(blackberry|version)\\s?\\d*\\/([\\d.]+)/i,\r\n windowsPhoneVersion: /windows\\sphone.*?([\\d_.-\\/]+)[\\s;:,\\)]/i,\r\n\r\n // OS regex\r\n mac: /Mac/i,\r\n unix: /X11/i,\r\n linux: /Linux/i,\r\n windows: /Win/i,\r\n\r\n // Win OS Version \r\n win2000: /nt 5.0/i,\r\n winXP: /nt 5.1/i,\r\n winVista: /nt 6.0/i,\r\n win7: /nt 6.1/i,\r\n win8: /nt 6.2/i,\r\n win81: /nt 6.3/i,\r\n win10: /nt 10.0/i,\r\n\r\n // OS X Version\r\n osxVersion: /OS\\sX\\s([\\d_.]+)/i,\r\n\r\n // Browsers\r\n chrome: /^(?!.*Edge).*Chrome/i,\r\n safari: /^(?!.*(?:Chrome|Edge)).*Safari/i,\r\n edge: /edge/i,\r\n ie: /(msie|trident)/i,\r\n opera: /(opr|opera)/i,\r\n firefox: /firefox/i,\r\n\r\n generalVersion: /(chrome|firefox|version)\\/(\\d+.*?)(\\s|$)/i,\r\n operaVersion: /(opr|opera)\\/(\\d+).*?(\\s|$)/i,\r\n ieVersion: /MSIE\\s+(\\d+).*?/i,\r\n edgeVersion: /(edge)\\/(\\d+).*?(\\s|$)/i,\r\n};\r\n\r\nconst UA_DEFAULT = 'Unknown';\r\n\r\nfunction getBrowserVersion(browserName: string, regex: RegExp, ua: string): ObjectHash {\r\n const result: string[] = regex.exec(ua) || [];\r\n\r\n let [ joined, name, version ] = result;\r\n\r\n if (!version) version = UA_DEFAULT;\r\n\r\n return { browser: browserName, version: version };\r\n}\r\n\r\n/**\r\n * Attempt to extract the OS version from the UA string\r\n */\r\nfunction getOSVersion(osName: string, regex: RegExp, ua: string): ObjectHash {\r\n if (!regex)\r\n return { os: osName, version: UA_DEFAULT };\r\n\r\n const match = regex.exec(ua);\r\n const version = match && match.length ? match[0].trim() : UA_DEFAULT;\r\n\r\n return { os: osName, version: version };\r\n}\r\n\r\n/**\r\n * For windows machines, we'll attempt to extract the version\r\n * and map it against the corresponding Win cononical name for convenience.\r\n */\r\nfunction getWindowsVersion(osName: string, ua: string): ObjectHash {\r\n const os: ObjectHash = { os: osName };\r\n\r\n if (UARegex.win2000.test(ua)) os.version = '2000';\r\n if (UARegex.winXP.test(ua)) os.version = 'XP';\r\n if (UARegex.winVista.test(ua)) os.version = 'Vista';\r\n if (UARegex.win7.test(ua)) os.version = '7';\r\n if (UARegex.win8.test(ua)) os.version = '8';\r\n if (UARegex.win81.test(ua)) os.version = '8.1';\r\n if (UARegex.win10.test(ua)) os.version = '10';\r\n\r\n if (!os.version) os.version = UA_DEFAULT;\r\n\r\n return os;\r\n}\r\n\r\n\r\nexport const UserAgentHelper = {\r\n getDeviceType(): string {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (!UARegex.mobileDevice.test(ua))\r\n return 'Desktop';\r\n\r\n if (UARegex.iphone.test(ua)) return 'iPhone';\r\n if (UARegex.ipad.test(ua)) return 'iPad';\r\n if (UARegex.android.test(ua)) return 'Android';\r\n if (UARegex.blackberry.test(ua)) return 'Blackberry';\r\n if (UARegex.windowsPhone.test(ua)) return 'Windows Phone';\r\n\r\n return UA_DEFAULT;\r\n },\r\n\r\n getOperatingSystem(): ObjectHash {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (UARegex.android.test(ua))\r\n return getOSVersion('Android', UARegex.androidVersion, ua);\r\n\r\n if (UARegex.iphone.test(ua) || UARegex.ipad.test(ua))\r\n return getOSVersion('iOS', UARegex.iosVersion, ua);\r\n\r\n if (UARegex.linux.test(ua))\r\n return getOSVersion('Linux', null, ua);\r\n\r\n if (UARegex.unix.test(ua))\r\n return getOSVersion('Unix', null, ua);\r\n\r\n if (UARegex.mac.test(ua))\r\n return getOSVersion('Macintosh', UARegex.osxVersion, ua);\r\n\r\n if (UARegex.windows.test(ua))\r\n return getWindowsVersion('Windows', ua);\r\n\r\n if (UARegex.blackberry.test(ua))\r\n return getOSVersion('BlackBerry', UARegex.blackberryVersion, ua);\r\n\r\n if (UARegex.windowsPhone.test(ua))\r\n return getOSVersion('Windows Phone', UARegex.windowsPhoneVersion, ua);\r\n\r\n return { os: UA_DEFAULT, version: UA_DEFAULT };\r\n },\r\n\r\n getBrowser(): ObjectHash {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (UARegex.chrome.test(ua))\r\n return getBrowserVersion('Chrome', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.firefox.test(ua))\r\n return getBrowserVersion('Firefox', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.safari.test(ua))\r\n return getBrowserVersion('Safari', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.ie.test(ua))\r\n return getBrowserVersion('Internet Explorer', UARegex.ieVersion, ua);\r\n\r\n if (UARegex.edge.test(ua))\r\n return getBrowserVersion('Edge', UARegex.edgeVersion, ua);\r\n\r\n if (UARegex.opera.test(ua))\r\n return getBrowserVersion('Opera', UARegex.operaVersion, ua);\r\n\r\n return { browser: UA_DEFAULT, version: UA_DEFAULT };\r\n },\r\n\r\n isTouchScreen(): boolean {\r\n return !!('ontouchstart' in window || navigator.maxTouchPoints);\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { BaseView, BaseComponent } from 'libs/common/backbone/core/BaseView';\r\nimport { useRenderBackboneView } from 'libs/common/react/hooks/UseRenderBackboneView';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { useSetPageTitle } from 'libs/common/react/hooks/UseSetPageTitle';\r\n\r\ninterface BackboneViewWrapperProps {\r\n view: new(options: HashObject) => (BaseView | BaseComponent);\r\n options?: HashObject;\r\n className?: string;\r\n}\r\n\r\nexport function BackboneViewWrapper(props: BackboneViewWrapperProps): JSX.Element {\r\n const { view, options = {}, className = '' } = props;\r\n\r\n const viewInstance = React.useMemo(() => new view(options), [options]);\r\n\r\n useSetPageTitle(viewInstance.title);\r\n\r\n const ref = useRenderBackboneView(viewInstance, [viewInstance]);\r\n\r\n if (!view)\r\n return <></>;\r\n\r\n return <div ref={ref} className={className} />;\r\n}\r\n","export const ViewModelActions = {\r\n UPDATE: 'UPDATE_VIEW_MODEL'\r\n};","import * as React from 'react';\r\nimport { PageTitleHelper } from 'libs/common/react/utils/PageTitleHelper';\r\n\r\ninterface IPageTitleContext {\r\n setPageTitle?: (title: string) => void;\r\n revertPageTitle?: () => void;\r\n}\r\n\r\nexport const PageTitleContext = React.createContext<IPageTitleContext>({});\r\n\r\ntype PageTitleContextProviderProps = React.PropsWithChildren<{\r\n defaultTitle?: string;\r\n}>;\r\n\r\nexport const PageTitleContextProvider = (props: PageTitleContextProviderProps): React.ReactElement => {\r\n const { children, defaultTitle = '' } = props;\r\n\r\n const [ currentPageTitle, setCurrentPageTitle ] = React.useState(defaultTitle);\r\n const [ previousPageTitle, setPreviousPageTitle ] = React.useState(defaultTitle);\r\n\r\n const setPageTitle = (title: string) => {\r\n if (title === currentPageTitle)\r\n return;\r\n\r\n if (currentPageTitle !== previousPageTitle)\r\n setPreviousPageTitle(currentPageTitle);\r\n\r\n setCurrentPageTitle(title);\r\n };\r\n\r\n const revertPageTitle = () => {\r\n setCurrentPageTitle(previousPageTitle);\r\n };\r\n\r\n React.useEffect(() => PageTitleHelper.setPageTitle(currentPageTitle), [currentPageTitle]);\r\n\r\n return (\r\n <PageTitleContext.Provider value={{ setPageTitle, revertPageTitle }}>\r\n {children}\r\n </PageTitleContext.Provider>\r\n );\r\n};","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { BaseApplication } from 'libs/common/backbone/core/BaseApplication';\r\nimport { LayoutOptions } from 'libs/common/backbone/core/LayoutService';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from './ReactLayoutView';\r\n\r\nexport class ReactApplication extends BaseApplication {\r\n protected layout: ReactLayoutView;\r\n protected layoutOptions: LayoutOptions<ReactLayoutViewOptions>;\r\n\r\n protected onShowAlert(options: ObjectHash): void {\r\n if (!this.layoutOptions.options.alertRegion)\r\n return;\r\n\r\n const { ctor: AlertList, collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(this.layoutOptions.options.alertRegion,\r\n <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport { BaseLayoutViewOptions, BaseLayoutView } from 'libs/common/backbone/core/BaseLayoutView';\r\n\r\nexport interface ReactLayoutViewOptions extends BaseLayoutViewOptions {\r\n alertRegion?: string;\r\n}\r\n\r\nexport class ReactLayoutView extends BaseLayoutView {\r\n protected options: ReactLayoutViewOptions;\r\n\r\n private isReactComponent(component: any): boolean {\r\n return React && React.isValidElement(component);\r\n }\r\n\r\n public showChildView(regionName: string, component: any): void {\r\n if (this.isReactComponent(component)) {\r\n this.showChildReactComponent(regionName, component);\r\n return;\r\n }\r\n }\r\n\r\n private showChildReactComponent(regionName: string, component: any): void {\r\n if (this.isAttached()) {\r\n this.renderChildReactComponent(regionName, component);\r\n return;\r\n }\r\n\r\n this.listenToOnce(this, 'attach', () => this.renderChildReactComponent(regionName, component));\r\n }\r\n\r\n private renderChildReactComponent(regionName: string, component: any): void {\r\n const region = this.getRegion(regionName);\r\n\r\n const el = this.$el.find(region.el);\r\n\r\n if (!el || !el.length)\r\n return;\r\n\r\n /**\r\n * Trigger 'before:show' on region.\r\n */\r\n region.trigger('before:show');\r\n\r\n /**\r\n * Trigger 'show' on region once the component has been rendered.\r\n */\r\n ReactDOM.render(component, el[0], () => region.trigger('show'));\r\n\r\n this.listenToOnce(this, `unmount:${regionName}`, () => ReactDOM.unmountComponentAtNode(el[0]));\r\n\r\n this.listenToOnce(this, 'before:destroy', () => ReactDOM.unmountComponentAtNode(el[0]));\r\n }\r\n\r\n protected wrapWithStore(child: React.ReactElement): React.ReactElement {\r\n return (\r\n <Provider store={this.options.store}>\r\n {child}\r\n </Provider>\r\n );\r\n }\r\n}","import { useDispatch, useSelector } from 'react-redux';\r\nimport { OutputSelector, defaultMemoize, createSelectorCreator, createSelector } from 'reselect';\r\nimport { TimeHelper } from 'libs/common/react/utils/TimeHelper';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { Actions } from './constants';\r\nimport { Request, Response, Dispatch, Resources, NormalizedEntities, Resource } from './interfaces';\r\nimport { denormalize } from './normalizer';\r\nimport { RequestStatus } from './enums';\r\nimport { useMemo } from 'react';\r\n\r\ninterface ObjOptions<T> {\r\n status: RequestStatus;\r\n statusCode?: HttpStatus;\r\n requestTime?: number;\r\n cacheDuration?: number;\r\n data?: T;\r\n}\r\n\r\nclass FlightObj<T> implements Response<T> {\r\n private requestTime: number;\r\n private cacheDuration: number;\r\n\r\n public status: RequestStatus;\r\n public statusCode: HttpStatus;\r\n public data: T;\r\n\r\n constructor(options: ObjOptions<T>) {\r\n this.status = options.status;\r\n this.requestTime = options.requestTime;\r\n this.cacheDuration = options.cacheDuration;\r\n this.data = options.data;\r\n this.statusCode = options.statusCode;\r\n }\r\n\r\n public get shouldFetch(): boolean {\r\n if (this.status === RequestStatus.None)\r\n return true;\r\n\r\n return this.isExpired;\r\n }\r\n\r\n public get isExpired(): boolean {\r\n return TimeHelper.isExpired(this.requestTime, this.cacheDuration);\r\n }\r\n\r\n public get isFetching(): boolean {\r\n return this.status === RequestStatus.Fetching;\r\n }\r\n\r\n public get hasError(): boolean {\r\n return this.status === RequestStatus.Error;\r\n }\r\n\r\n public get isComplete(): boolean {\r\n return this.status === RequestStatus.Success || this.status === RequestStatus.Error;\r\n }\r\n}\r\n\r\nfunction makeGetOptimizedResponse<T>(\r\n key: string\r\n): OutputSelector<ApplicationState, Response<T>, (r: Resource, e: NormalizedEntities) => Response<T>> {\r\n\r\n const getResource = (state: ApplicationState) => state.flightData.resources[key];\r\n\r\n const getEntities = (state: ApplicationState) => {\r\n const resource = state.flightData.resources[key];\r\n\r\n if (!resource?.entityIds) return {};\r\n\r\n return resource.entityIds.reduce((obj: any, id: string) => {\r\n obj[id] = state.flightData.entities[id];\r\n return obj;\r\n }, {});\r\n };\r\n\r\n const isEqual = (currentVal: any, previousVal: any) => {\r\n const omitValues = [ 'response', 'request' ];\r\n return ObjectHelper.isEqual(\r\n ObjectHelper.omit(currentVal, omitValues), ObjectHelper.omit(previousVal, omitValues)\r\n );\r\n };\r\n\r\n const selectorCreator = createSelectorCreator(defaultMemoize, isEqual);\r\n\r\n return selectorCreator(\r\n getResource,\r\n getEntities,\r\n (resource: Resource, entities: NormalizedEntities) => {\r\n return getResponseInternal(key, resource, entities);\r\n }\r\n );\r\n}\r\n\r\nfunction makeGetResponse<T>(\r\n key: string\r\n): OutputSelector<ApplicationState, Response<T>, (r: Resource, e: NormalizedEntities) => Response<T>> {\r\n return createSelector(\r\n (state: ApplicationState) => state.flightData.resources[key],\r\n (state: ApplicationState) => state.flightData.entities,\r\n (resource: Resource, entities: NormalizedEntities) => {\r\n return getResponseInternal(key, resource, entities);\r\n }\r\n );\r\n}\r\n\r\n\r\nfunction getResponseInternal<T>(key: string, resource: Resource, entities: NormalizedEntities): Response<T> {\r\n if (!key || !resource) {\r\n return emptyResponse();\r\n }\r\n\r\n let data = resource.response as T;\r\n if (resource.request.normalize !== false)\r\n data = denormalize(resource.response, entities) as T;\r\n\r\n return new FlightObj<T>({\r\n status: resource.status,\r\n statusCode: resource.statusCode,\r\n requestTime: resource.timestamp,\r\n cacheDuration: resource.request.expiryTime,\r\n data\r\n });\r\n}\r\n\r\nexport function emptyResponse<T>(): Response<T> {\r\n return new FlightObj<T>({\r\n status: RequestStatus.None\r\n });\r\n}\r\n\r\nexport function getResponse<T>(state: ApplicationState, key: string): Response<T> {\r\n return getResponseInternal(key, state.flightData.resources[key], state.flightData.entities);\r\n}\r\n\r\nexport function getFetch(dispatch: Dispatch, request: Request): () => void {\r\n return () => {\r\n fetch(dispatch, request);\r\n };\r\n}\r\n\r\nexport function fetch(dispatch: Dispatch, request: Request): void {\r\n dispatch({\r\n type: Actions.API_REQUEST,\r\n request\r\n });\r\n}\r\n\r\nexport function dataServiceFetch(dispatch: Dispatch, state: ApplicationState, request: Request): void {\r\n const response: Response<any> = getResponse(state, request?.key);\r\n\r\n if (request && response.shouldFetch) {\r\n fetch(dispatch, request);\r\n return;\r\n }\r\n\r\n if (response.hasError) {\r\n request.error?.(null);\r\n request.always?.();\r\n } else {\r\n request.success?.(response.data);\r\n request.always?.();\r\n }\r\n}\r\n\r\nexport function useGetFetch(request: Request): () => void {\r\n const dispatch = useDispatch();\r\n return getFetch(dispatch, request);\r\n}\r\n\r\ninterface GetResponseOptions {\r\n optimize: boolean;\r\n}\r\n\r\nexport function useGetResponse<T>(key: string, options?: GetResponseOptions): Response<T> {\r\n const memoizedGetResponse = useMemo(() => {\r\n return options?.optimize ? makeGetOptimizedResponse<T>(key) : makeGetResponse<T>(key);\r\n }, [key]);\r\n return useSelector((state: ApplicationState) => {\r\n return memoizedGetResponse(state);\r\n });\r\n}\r\n\r\nexport function useBasicFetch<T>(request: Request, options?: GetResponseOptions): Response<T> {\r\n const dispatch = useDispatch();\r\n const response = useGetResponse<T>(request && request.key, options);\r\n const fetchData = getFetch(dispatch, request);\r\n\r\n if (request && response.shouldFetch)\r\n fetchData();\r\n\r\n return response;\r\n}","import { Dispatch, Middleware, MiddlewareAPI, AnyAction } from 'redux';\r\n\r\nimport { TimeHelper } from 'libs/common/react/utils/TimeHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\n\r\nimport {\r\n Request,\r\n NormalizedData,\r\n ResponseAction,\r\n ErrorAction,\r\n InvalidateAction,\r\n HttpRequest,\r\n Action,\r\n UpdateAction,\r\n UpdateStateOptions\r\n} from './interfaces';\r\nimport { RequestStatus } from './enums';\r\nimport { Actions } from './constants';\r\nimport { normalize, denormalize } from './normalizer';\r\nimport { StateHelper, SimulatorHelper } from './utils';\r\n\r\ntype FlightMiddlewareApi = MiddlewareAPI<Dispatch<AnyAction>, ApplicationState>;\r\n\r\ntype FlightMiddlewareResponse = (next: Dispatch<AnyAction>) => (action: Action) => void;\r\n\r\ninterface MiddlewareOptions {\r\n fetchData: HttpRequest;\r\n bootstrappedData?: HashObject;\r\n defaultExpiryTime?: number;\r\n}\r\n\r\nexport function createMiddleware(options: MiddlewareOptions): Middleware<{}, ApplicationState, Dispatch<AnyAction>> {\r\n const { fetchData, bootstrappedData, defaultExpiryTime } = options;\r\n\r\n const FLIGHT_REQUEST_DEFAULTS = Object.freeze<Request>({\r\n key: null,\r\n url: null,\r\n type: HttpVerbs.GET,\r\n normalize: true,\r\n formatData: d => d,\r\n expiryTime: defaultExpiryTime\r\n });\r\n\r\n return function FlightMiddleware(store: FlightMiddlewareApi): FlightMiddlewareResponse {\r\n return (next: Dispatch<AnyAction>) => (action: Action) => {\r\n /**\r\n * This middleware only applies to API_REQUEST actions\r\n */\r\n if (action.type !== Actions.API_REQUEST) {\r\n next(action);\r\n return;\r\n }\r\n\r\n const state = store.getState();\r\n const {\r\n success,\r\n error,\r\n always,\r\n formatData,\r\n ...request } = Object.assign({}, FLIGHT_REQUEST_DEFAULTS, action.request);\r\n\r\n /**\r\n * As soon as next() is called on the first API_REQUEST for a particular resource\r\n * the status will be set to RequestStatus.Fetching.\r\n * For this reason we need to pull the existing resource out of the state before\r\n * we call next() so we can accurately test existing.status before it is manipulated\r\n * by this dispatch call\r\n */\r\n const existing = state.flightData.resources[request.key];\r\n\r\n next(action);\r\n\r\n /** \r\n * If our request exists and is currently fetching we do nothing\r\n */\r\n if (existing && existing.status === RequestStatus.Fetching) {\r\n return;\r\n }\r\n\r\n /**\r\n * Pull data from bootstrapped data if it's there\r\n */\r\n if (request.bootstrapName && bootstrappedData[action.request.bootstrapName]) {\r\n onSuccess(bootstrappedData[action.request.bootstrapName]);\r\n onAlways();\r\n delete bootstrappedData[action.request.bootstrapName];\r\n return;\r\n }\r\n\r\n const httpRequestOptions = {\r\n resource: request.url,\r\n type: request.type,\r\n data: request.data,\r\n success: onSuccess,\r\n error: onError,\r\n always: onAlways\r\n };\r\n\r\n /**\r\n * Call our data layer\r\n */\r\n if (SimulatorHelper.isSimulated(request))\r\n SimulatorHelper.simulateFetchData(httpRequestOptions, request);\r\n else\r\n fetchData(httpRequestOptions);\r\n\r\n /**\r\n * Middleware ends here, all functions below are simply enclosing variables from above\r\n */\r\n return;\r\n\r\n /**\r\n * Format and normalize our data before dispatching API_RESPONSE\r\n */\r\n function onSuccess(data: HashObject, xhr?: Xhr): void {\r\n const formatted = formatData(data);\r\n let response: NormalizedData = {\r\n result: formatted,\r\n entities: {}\r\n };\r\n\r\n if (request.normalize)\r\n response = normalize(formatted, request.normalizeOptions);\r\n\r\n store.dispatch<ResponseAction>({\r\n type: Actions.API_REPONSE,\r\n result: response.result,\r\n entities: response.entities,\r\n request: request,\r\n timestamp: TimeHelper.currentTimestamp(),\r\n xhr\r\n });\r\n\r\n if (request.updateState) {\r\n const updateOptions = Array.isArray(request.updateState)\r\n ? request.updateState\r\n : [request.updateState];\r\n\r\n updateOptions.forEach((u: UpdateStateOptions) => {\r\n updateState(u);\r\n });\r\n }\r\n\r\n /**\r\n * If we have any invalidation keys dispatch INVALIDATE\r\n */\r\n if (request.invalidationKeys) {\r\n store.dispatch<InvalidateAction>({\r\n type: Actions.INVALIDATE,\r\n keys: request.invalidationKeys,\r\n request\r\n });\r\n }\r\n\r\n if (!success) return;\r\n\r\n let successObj = response.result as HashObject | HashObject[];\r\n if (request.normalize) {\r\n successObj = denormalize(response.result, {\r\n ...state.flightData.entities, ...response.entities\r\n });\r\n }\r\n success(successObj);\r\n }\r\n\r\n /**\r\n * Build out our error response before dispatching API_RESPONSE\r\n */\r\n function onError(xhr?: Xhr): void {\r\n store.dispatch<ErrorAction>({\r\n type: Actions.API_ERROR,\r\n errorResponse: xhr.responseJSON,\r\n request: action.request,\r\n timestamp: TimeHelper.currentTimestamp(),\r\n xhr\r\n });\r\n\r\n /**\r\n * If we have any invalidation keys dispatch INVALIDATE\r\n */\r\n if (request.invalidationKeys) {\r\n store.dispatch<InvalidateAction>({\r\n type: Actions.INVALIDATE,\r\n keys: request.invalidationKeys,\r\n request\r\n });\r\n }\r\n\r\n error && error(xhr);\r\n }\r\n\r\n function onAlways(): void {\r\n always && always();\r\n }\r\n\r\n function updateState(updateStateOptions: UpdateStateOptions): void {\r\n const keyMap = StateHelper.getMatchingKeyMap(state.flightData, updateStateOptions.keys);\r\n\r\n /**\r\n * Filter out state to update using keyMap and denormalize where applicable. \r\n */\r\n const dataToUpdate: HashObject = {\r\n ...Object.keys(state.flightData.resources)\r\n .filter(key => keyMap[key])\r\n .reduce((obj: HashObject, key) => {\r\n const resource = state.flightData.resources[key];\r\n\r\n let data = resource.response;\r\n\r\n if (resource.request.normalize)\r\n data = denormalize(resource.response, state.flightData.entities);\r\n\r\n obj[key] = data;\r\n return obj;\r\n }, {})\r\n };\r\n\r\n const updatedData = updateStateOptions.updateData(dataToUpdate);\r\n\r\n /**\r\n * Dispatch update actions with updated data.\r\n */\r\n Object.keys(updatedData)\r\n .forEach(key => {\r\n const resource = state.flightData.resources[key];\r\n const updatedResult = updatedData[key];\r\n\r\n let data: NormalizedData = {\r\n result: updatedResult,\r\n entities: {}\r\n };\r\n\r\n if (resource.request.normalize)\r\n data = normalize(updatedResult, resource.request.normalizeOptions);\r\n\r\n store.dispatch<UpdateAction>({\r\n type: Actions.UPDATE,\r\n result: data.result,\r\n entities: data.entities,\r\n request: resource.request\r\n });\r\n });\r\n }\r\n };\r\n };\r\n}\r\n\r\n","import {\r\n FlightState,\r\n RequestAction,\r\n ResponseAction,\r\n ErrorAction,\r\n InvalidateAction,\r\n Action,\r\n UpdateAction,\r\n NormalizedEntities\r\n} from './interfaces';\r\nimport { Actions } from './constants';\r\nimport { RequestStatus } from './enums';\r\nimport { StateHelper } from './utils';\r\n\r\nfunction mergeEntitites(existingEntities: NormalizedEntities, newEntities: NormalizedEntities): NormalizedEntities {\r\n const entities = { ...existingEntities };\r\n\r\n Object.keys(newEntities).forEach(key => {\r\n if (!existingEntities[key]) {\r\n entities[key] = newEntities[key];\r\n return;\r\n }\r\n\r\n entities[key] = { ...existingEntities[key], ...newEntities[key] };\r\n });\r\n\r\n return entities;\r\n}\r\n\r\nfunction ApiRequestReducer(state: FlightState, action: RequestAction): FlightState {\r\n const request = state.resources[action.request.key];\r\n\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Fetching,\r\n response: request ? request.response : null,\r\n entityIds: request ? request.entityIds : null\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction ApiResponseReducer(state: FlightState, action: ResponseAction): FlightState {\r\n const entityIds = action.entities ? Object.keys(action.entities) : [];\r\n\r\n return {\r\n entities: mergeEntitites(state.entities, action.entities),\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Success,\r\n response: action.result,\r\n timestamp: action.timestamp,\r\n statusCode: action.xhr?.status,\r\n entityIds\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction ApiErrorReducer(state: FlightState, action: ErrorAction): FlightState {\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Error,\r\n errorResponse: action.errorResponse,\r\n timestamp: action.timestamp,\r\n statusCode: action.xhr?.status\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction InvalidateReducer(state: FlightState, action: InvalidateAction): FlightState {\r\n const invalidationMap = StateHelper.getMatchingKeyMap(state, action.keys, action.request?.key);\r\n\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n ...Object.keys(state.resources)\r\n .filter(key => invalidationMap[key])\r\n .reduce((obj: any, key) => {\r\n const resource = state.resources[key];\r\n obj[key] = Object.assign({}, resource, {\r\n status: RequestStatus.None,\r\n });\r\n return obj;\r\n }, {})\r\n }\r\n };\r\n}\r\n\r\nfunction UpdateReducer(state: FlightState = defaultState, action: UpdateAction): FlightState {\r\n const entityIds = action.entities ? Object.keys(action.entities) : [];\r\n\r\n return {\r\n entities: mergeEntitites(state.entities, action.entities),\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n ...state.resources[action.request.key],\r\n request: action.request,\r\n response: action.result,\r\n entityIds\r\n }\r\n }\r\n };\r\n}\r\n\r\nconst defaultState: FlightState = {\r\n resources: {},\r\n entities: {}\r\n};\r\n\r\nexport function FlightReducer(state: FlightState = defaultState, action: Action): FlightState {\r\n switch (action.type) {\r\n case Actions.API_REQUEST:\r\n return ApiRequestReducer(state, action as RequestAction);\r\n case Actions.API_REPONSE:\r\n return ApiResponseReducer(state, action as ResponseAction);\r\n case Actions.API_ERROR:\r\n return ApiErrorReducer(state, action as ErrorAction);\r\n case Actions.INVALIDATE:\r\n return InvalidateReducer(state, action as InvalidateAction);\r\n case Actions.UPDATE:\r\n return UpdateReducer(state, action as UpdateAction);\r\n }\r\n\r\n return state;\r\n}","import { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\n/**\r\n * We might need to pontentially expant this in the future\r\n * so that options can be passed in, but I'll leave it like this\r\n * for now - Sha\r\n */\r\nconst options = {\r\n idProperty: 'id'\r\n};\r\n\r\nfunction write(name: string, items: HashObject[]): HashObject[] {\r\n localStorage.setItem(name, JSON.stringify(items));\r\n return items;\r\n}\r\n\r\nfunction read(name: string): HashObject[] {\r\n const item = localStorage.getItem(name);\r\n\r\n if (!item)\r\n return null;\r\n\r\n return JSON.parse(item);\r\n}\r\n\r\nfunction getId(): string {\r\n return (Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1).toString();\r\n}\r\n\r\n/**\r\n * This is a very basic implementation and we almost definitely will\r\n * need to extend upon this, so please don't be afraid to add to it.\r\n */\r\nexport const Simulator = {\r\n getAll(name: string, init?: HashObject[]): HashObject[] {\r\n let items = read(name);\r\n\r\n if (items && items.length)\r\n return items;\r\n\r\n if (!items && init) {\r\n init.forEach(item => Simulator.create(name, item));\r\n return read(name);\r\n }\r\n\r\n return [];\r\n },\r\n\r\n get(name: string, id: string): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return null;\r\n\r\n return items.find(i => i[options.idProperty] === id);\r\n },\r\n\r\n create(name: string, item: HashObject): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n const newItem = {\r\n ...item,\r\n [options.idProperty]: item[options.idProperty] || getId()\r\n };\r\n\r\n items.push(newItem);\r\n write(name, items);\r\n return newItem;\r\n },\r\n\r\n update(name: string, item: HashObject): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return item;\r\n\r\n const itemIndex = items.findIndex(i => i[options.idProperty] === item[options.idProperty]);\r\n items[itemIndex] = item;\r\n write(name, items);\r\n return item;\r\n },\r\n\r\n delete(name: string, ids: string | string[]): void {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n if (!Array.isArray(ids))\r\n ids = [ids];\r\n\r\n ids.forEach(id => {\r\n const itemIndex = items.findIndex(i => i[options.idProperty] === id);\r\n items.splice(itemIndex, 1);\r\n });\r\n\r\n write(name, items);\r\n },\r\n\r\n /**\r\n * \r\n * @param objectName - the name your object can be found under in local storage (e.g. `classrooms`).\r\n * @param objectId - the id of the object you want to associate something to.\r\n * @param assocName - the field name of your assoc, which will go on your object (e.g. `students`).\r\n * @param flightSimName - the name your assoc objects will be created under (e.g. `school:students`).\r\n * @param assocObject - the object you're creating and associating.\r\n * \r\n * Having a difficult time coming up with good param names here. Feel free to update, ty\r\n */\r\n assoc(\r\n objectName: string, objectId: string, assocName: string, flightSimName: string, assocObjects: any | any[]\r\n ): any | any[] {\r\n const isAssoccingMany = Array.isArray(assocObjects);\r\n\r\n let assocObjectsArray = isAssoccingMany ? assocObjects : [assocObjects];\r\n\r\n // If we're passing in ids instead of objects, find the objects in local storage\r\n if (typeof ArrayHelper.first(assocObjectsArray) === 'string') {\r\n assocObjectsArray = Simulator.getAll(flightSimName).filter(obj => assocObjectsArray.includes(obj.id));\r\n }\r\n\r\n // Get the full assoc objects from local storage, OR create brand new ones if they don't exist yet.\r\n const createdAssocObjects = assocObjectsArray.map((obj: any) => {\r\n if (obj.id)\r\n return obj;\r\n\r\n return Simulator.create(flightSimName, obj);\r\n });\r\n\r\n let items = Simulator.getAll(objectName);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n let item = items.find(_item => _item.id === objectId);\r\n\r\n if (!item)\r\n return;\r\n\r\n // Actually associate our objects to each other\r\n createdAssocObjects.forEach((assoc: any) => {\r\n if (!item[assocName]) {\r\n item[assocName] = isAssoccingMany ? [assoc] : assoc;\r\n\r\n return;\r\n }\r\n\r\n if (Array.isArray(item[assocName])) {\r\n // Don't re-assoc if assoc already exists\r\n if (item[assocName].find((existingAssoc: any) => existingAssoc.id === assoc.id))\r\n return;\r\n\r\n item[assocName].push(assoc);\r\n\r\n return;\r\n }\r\n\r\n item[assocName] = assoc;\r\n });\r\n\r\n // Prepare to write changes to local storage\r\n items = items.map(oldItem => {\r\n if (oldItem.id !== item.id)\r\n return oldItem;\r\n\r\n return item;\r\n });\r\n\r\n write(objectName, items);\r\n\r\n // Return the object(s) we've just assocced\r\n return isAssoccingMany ? createdAssocObjects : ArrayHelper.first(createdAssocObjects);\r\n },\r\n\r\n dissoc(objectName: string, objectId: string, assocName: string, ids: string | string[]): HashObject[] {\r\n let items = Simulator.getAll(objectName);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n let item = items.find(_item => _item.id === objectId);\r\n\r\n if (!item)\r\n return;\r\n\r\n let assoc = item[assocName as any];\r\n\r\n if (!assoc)\r\n return;\r\n\r\n if (!Array.isArray(ids))\r\n ids = [ids];\r\n\r\n if (!Array.isArray(assoc))\r\n assoc = [assoc];\r\n\r\n ids.forEach(id => {\r\n const assoccedItemIndex = assoc.findIndex((a: HashObject) => a.id === id);\r\n assoc.splice(assoccedItemIndex, 1);\r\n });\r\n\r\n item[assocName as any] = assoc;\r\n items = items.map(oldItem => {\r\n if (oldItem.id !== item.id)\r\n return oldItem;\r\n\r\n return item;\r\n });\r\n\r\n write(objectName, items);\r\n\r\n return items;\r\n }\r\n};","export const Actions = {\r\n API_REQUEST: 'API_REQUEST',\r\n API_REPONSE: 'API_RESPONSE',\r\n API_ERROR: 'API_ERROR',\r\n INVALIDATE: 'INVALIDATE',\r\n UPDATE: 'UPDATE'\r\n};","export * from './Actions';","import { HttpRequestOptions } from '../interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\n\r\nfunction formatXhr(jqXHR: JQuery.jqXHR): Xhr {\r\n const { getResponseHeader, responseJSON, status } = jqXHR;\r\n\r\n return { getResponseHeader, responseJSON, status };\r\n}\r\n\r\nconst dataMethods = [ HttpVerbs.POST, HttpVerbs.PUT ];\r\n\r\nexport function ajaxRequest(options: HttpRequestOptions): void {\r\n const {\r\n resource,\r\n type,\r\n success,\r\n error,\r\n always\r\n } = options;\r\n\r\n const ajaxOptions: JQuery.AjaxSettings = {\r\n url: resource,\r\n method: type\r\n };\r\n\r\n if (dataMethods.includes(type) && options.data) {\r\n ajaxOptions.data = JSON.stringify(options.data);\r\n }\r\n\r\n $.ajax(ajaxOptions)\r\n .done((responseData: any, textStatus: any, jqXHR: JQuery.jqXHR) => {\r\n success && success(responseData, formatXhr(jqXHR));\r\n })\r\n .fail((jqXHR: JQuery.jqXHR, textStatus: any, errorThrown: any) => {\r\n error && error(formatXhr(jqXHR));\r\n })\r\n .always(() => {\r\n always && always();\r\n });\r\n}\r\n","export * from './AjaxRequest';","export enum RequestStatus {\r\n None = 'None',\r\n Fetching = 'Fetching',\r\n Success = 'Success',\r\n Error = 'Error'\r\n}","export * from './RequestStatus';","\r\nexport * from './constants';\r\nexport * from './enums';\r\nexport * from './interfaces';\r\nexport * from './data-layers';\r\nexport * from './normalizer';\r\nexport * from './FlightHelpers';\r\nexport * from './FlightMiddleware';\r\nexport * from './FlightReducer';\r\nexport * from './FlightSimulator';","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { NormalizedEntities, Normalized } from '../interfaces';\r\n\r\nfunction denormalizeString(id: string, collection: NormalizedEntities, visited: HashObject): HashObject {\r\n if (visited[id])\r\n return visited[id];\r\n\r\n visited[id] = {};\r\n const denormalized = _denormalize(collection[id], collection, visited);\r\n Object.assign(visited[id], denormalized);\r\n\r\n if (ObjectHelper.isEmpty(visited[id]))\r\n delete visited[id];\r\n\r\n return visited[id];\r\n}\r\n\r\nfunction _denormalize(\r\n data: Normalized, collection: NormalizedEntities, visited: HashObject\r\n): HashObject | HashObject[] {\r\n if (!data)\r\n return;\r\n\r\n if (typeof data === 'string') {\r\n return denormalizeString(data, collection, visited);\r\n }\r\n\r\n if (Array.isArray(data)) {\r\n return (data as HashObject[]).map(d => _denormalize(d, collection, visited));\r\n }\r\n\r\n if (typeof data === 'object') {\r\n const obj: HashObject = {};\r\n Object.keys(data).forEach(key => {\r\n obj[key] = _denormalize(data[key], collection, visited) || data[key];\r\n });\r\n return obj;\r\n }\r\n}\r\n\r\nexport function denormalize(\r\n ids: Normalized, collection: NormalizedEntities\r\n): HashObject | HashObject[] {\r\n return _denormalize(ids, collection, {});\r\n}","import { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { NormalizeOptions, NormalizedData } from '../interfaces';\r\nimport { ErrorHelper } from 'libs/common/backbone/core';\r\n\r\nconst ID_ATTRIBUTE = 'id';\r\n\r\nfunction getNormalizedId(data: HashObject, options: NormalizeOptions = {}): string {\r\n const { idAttribute = ID_ATTRIBUTE, namespace = '' } = options;\r\n\r\n if (!data[idAttribute]) {\r\n ErrorHelper.throw(new DevError('There was an issue during normalization. Object did not have an id attribute.'));\r\n }\r\n return `${namespace}__${data[idAttribute]}`;\r\n}\r\n\r\nfunction normalizeArray(data: HashObject[], collection: HashObject, options: NormalizeOptions = {}): string[] {\r\n const { idAttribute = ID_ATTRIBUTE } = options;\r\n\r\n const ids: string[] = [];\r\n data.forEach((v: HashObject) => {\r\n if (v[idAttribute])\r\n ids.push(getNormalizedId(v, options));\r\n\r\n _normalize(v, collection, options);\r\n });\r\n\r\n return ids;\r\n}\r\n\r\nfunction normalizeObject(\r\n data: HashObject, collection: HashObject, options: NormalizeOptions = {}\r\n): string | HashObject {\r\n const { idAttribute = ID_ATTRIBUTE } = options;\r\n\r\n const orig: HashObject = { ...data };\r\n\r\n Object.keys(data).forEach(key => {\r\n const value = data[key];\r\n\r\n if (!value)\r\n return;\r\n\r\n if (Array.isArray(value)) {\r\n var ids = normalizeArray(value, collection, options);\r\n if (ids.length) orig[key] = ids;\r\n return;\r\n }\r\n\r\n if (typeof value === 'object') {\r\n var result = normalizeObject(value, collection, options);\r\n\r\n if (value[idAttribute]) {\r\n orig[key] = getNormalizedId(value, options);\r\n } else {\r\n orig[key] = result;\r\n }\r\n }\r\n });\r\n\r\n if (data[idAttribute]) {\r\n const id = getNormalizedId(data, options);\r\n collection[id] = orig;\r\n return id;\r\n }\r\n\r\n return orig;\r\n}\r\n\r\nfunction _normalize(\r\n data: HashObject | HashObject[], collection: HashObject, options: NormalizeOptions = {}\r\n): string | string [] | HashObject {\r\n if (!data)\r\n return;\r\n\r\n if (Array.isArray(data))\r\n return normalizeArray(data, collection, options);\r\n\r\n if (typeof data === 'object')\r\n return normalizeObject(data, collection, options);\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * This is a pure function, while normalize() above is not.\r\n * normalize() manipulates it's parameters. If we ever write unit tests for this\r\n * only test this function, not the above ones.\r\n */\r\nexport function normalize(data: HashObject | HashObject[], options?: NormalizeOptions): NormalizedData {\r\n\r\n const collection = {};\r\n\r\n return {\r\n result: _normalize(data, collection, options),\r\n entities: collection\r\n };\r\n}","export * from './Normalizer';\r\nexport * from './Denormalizer';","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\nimport { Request, SimulatedRequest, HttpRequestOptions } from '../interfaces';\r\n\r\n/**\r\n * Timeout has a 50% variability. So if you pass in 200\r\n * your response will happen anywhere between 100ms and 200ms\r\n */\r\nfunction getTimeout(request: Request): number {\r\n const simulatorRequest = request as SimulatedRequest;\r\n const base = simulatorRequest.timeout || 300;\r\n return base / 2 + (Math.floor(Math.random() * base / 2) + 1);\r\n}\r\n\r\nexport const SimulatorHelper = {\r\n isSimulated(request: Request): boolean {\r\n /**\r\n * If the request has the successResponse, errorResponse or noResponse properties\r\n * the SimulatedRequest interface has been used as the user\r\n * wants the requests to be simulated\r\n */\r\n const simulatorRequest = request as SimulatedRequest;\r\n return !!(simulatorRequest.successResponse\r\n || simulatorRequest.errorResponse\r\n || simulatorRequest.noResponse);\r\n },\r\n\r\n simulateFetchData(options: HttpRequestOptions, request: Request): void {\r\n const {\r\n success,\r\n error,\r\n always\r\n } = options;\r\n\r\n const simulatorRequest = request as SimulatedRequest;\r\n\r\n window.setTimeout(() => {\r\n if (simulatorRequest.noResponse)\r\n return;\r\n\r\n if (simulatorRequest.successResponse)\r\n success(simulatorRequest.successResponse(), {\r\n status: HttpStatus.Ok,\r\n getResponseHeader: (name: string) => ''\r\n });\r\n else if (simulatorRequest.errorResponse)\r\n error(simulatorRequest.errorResponse() as Xhr);\r\n\r\n always();\r\n }, getTimeout(request));\r\n }\r\n};","import { FlightState } from '../interfaces';\r\n\r\nexport const StateHelper = {\r\n /**\r\n * Returns a map of keys state.resources which match the keys param.\r\n * \r\n * @param state FlightState.\r\n * @param keys a key or array of keys to match on.\r\n * @param requestKey optionally include the current request key to exclude it from the map.\r\n */\r\n getMatchingKeyMap(state: FlightState, keys: string | string[], requestKey?: string): any {\r\n const keyArray = Array.isArray(keys) ? keys : [keys];\r\n\r\n let matchingKeys: string[] = [];\r\n\r\n keyArray.forEach(key => {\r\n const regex = new RegExp(key, 'i');\r\n const matches = Object.keys(state.resources).filter(k => regex.test(k));\r\n matchingKeys.push(...matches);\r\n });\r\n\r\n if (requestKey)\r\n matchingKeys = matchingKeys.filter(k => k !== requestKey);\r\n\r\n return matchingKeys.reduce((obj: any, key) => {\r\n obj[key] = true;\r\n return obj;\r\n }, {});\r\n }\r\n};","export * from './StateHelper';\r\nexport * from './SimulatorHelper';","import * as React from 'react';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\n/**\r\n * Hook to retrieve an instance from InstanceManager.\r\n * It handles releasing the instance in the cleanup function.\r\n * @param instanceName \r\n */\r\nexport function useInstance<T>(instanceName: string): T {\r\n const instance = InstanceManager.getInstance<T>(instanceName);\r\n\r\n React.useEffect(() => {\r\n return () => InstanceManager.releaseInstance(instanceName);\r\n }), [];\r\n\r\n return instance;\r\n}","import * as React from 'react';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\n/**\r\n * The ref returned from useRenderBackboneView must be\r\n * set on the element that the view is to be rendered\r\n * into, e.g. <div ref={ref} />.\r\n * The ref allows us to access to the DOM (https://reactjs.org/docs/refs-and-the-dom.html)\r\n * \r\n * @param view an instance of a Backbone view\r\n */\r\nexport function useRenderBackboneView(view: any, dependencies: any[] = []): React.MutableRefObject<any> {\r\n const ref = React.useRef<HTMLElement>(null);\r\n\r\n React.useEffect(() => {\r\n if (!view)\r\n return;\r\n\r\n const node = ref.current;\r\n\r\n view.render();\r\n\r\n /**\r\n * Where the DOM node already has a child, we'll replace it.\r\n * This should not be a common scenario though, as the return callback\r\n * should be cleaning up the view by calling close.\r\n */\r\n node.hasChildNodes()\r\n ? node.replaceChild(view.el, node.firstChild)\r\n : node.appendChild(view.el);\r\n\r\n view.trigger('rendered');\r\n\r\n /**\r\n * On unmounting, dispose of our view.\r\n */\r\n return () => {\r\n if (FunctionHelper.isFunction(view.close))\r\n view.close();\r\n else if (FunctionHelper.isFunction(view.destroy))\r\n view.destroy();\r\n };\r\n }, [...dependencies]);\r\n\r\n return ref;\r\n}","import { BaseService } from 'libs/common/backbone/core/BaseService';\r\n\r\nimport { useInstance } from './UseInstance';\r\n\r\nexport function useService<T extends BaseService>(serviceName: string): T {\r\n const service = useInstance<T>(serviceName);\r\n\r\n return service;\r\n}","import * as React from 'react';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { PageTitleContext } from 'libs/common/react/context/PageTitleContext';\r\n\r\n/**\r\n * Hook function to set the page title using the useEffect hook.\r\n * @param title - value to set the page title to.\r\n * @param dependencies - values from the component (e.g. state, props and functions) that are used \r\n * inside the effect hook.\r\n */\r\nexport function useSetPageTitle(title: string | boolean, dependencies: any[] = []): void {\r\n const { setPageTitle } = React.useContext(PageTitleContext);\r\n\r\n React.useEffect(() => {\r\n if (typeof title === 'boolean' || !FunctionHelper.isFunction(setPageTitle))\r\n return;\r\n\r\n if (!title)\r\n title = '';\r\n\r\n setPageTitle(title);\r\n }, [ title, ...dependencies ]);\r\n}","import { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { ViewModelActions } from 'libs/common/react/constants/ViewModelActions';\r\nimport { ApplicationState } from 'libs/common/react/interfaces';\r\n\r\ntype IUseViewModel<T> = [\r\n T, // State\r\n (dataOrKey: T | keyof T, keyData?: any) => void // Dispatch\r\n];\r\n\r\nexport const useViewModel = <T = any>(viewModelKey: string, initialState?: T): IUseViewModel<T> => {\r\n const dispatch = useDispatch();\r\n const currentState = useSelector((state: ApplicationState) => {\r\n return state.viewModelData[viewModelKey];\r\n });\r\n\r\n // If there is an initial state and there is no current state, set the initial state\r\n if (initialState !== undefined && currentState === undefined)\r\n setState(initialState);\r\n\r\n // Accepts either just a full state object, or a key + value if the data is an object.\r\n function setState(dataOrKey: T | keyof T, keyData?: any): void {\r\n dispatch({\r\n type: ViewModelActions.UPDATE,\r\n payload: {\r\n viewModelKey,\r\n dataOrKey,\r\n keyData\r\n }\r\n });\r\n }\r\n\r\n return [ currentState, setState ];\r\n};","import * as Flight from './flight';\r\n\r\nexport { Flight };","import { Dispatch, Middleware, MiddlewareAPI, AnyAction } from 'redux';\r\n\r\nimport { Actions, Action, ResponseAction } from '../flight';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { BaseError, ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\n\r\ntype ApplicationMiddlewareApi = MiddlewareAPI<Dispatch<AnyAction>, ApplicationState>;\r\n\r\ntype ApplicationMiddlewareResponse = (next: Dispatch<AnyAction>) => (action: Action) => void;\r\n\r\ninterface MiddlewareOptions {\r\n oldVersionError?: BaseError;\r\n authenticationError?: BaseError;\r\n}\r\n\r\nexport function createApplicationMiddleware(\r\n options: MiddlewareOptions\r\n): Middleware<{}, ApplicationState, Dispatch<AnyAction>> {\r\n const { oldVersionError, authenticationError } = options;\r\n\r\n return function ApplicationMiddleware(store: ApplicationMiddlewareApi): ApplicationMiddlewareResponse {\r\n return (next: Dispatch<AnyAction>) => (action: Action) => {\r\n /**\r\n * This middleware only applies to API_REPONSE actions\r\n */\r\n if (action.type !== Actions.API_REPONSE) {\r\n next(action);\r\n return;\r\n }\r\n\r\n const responseAction = (action as ResponseAction);\r\n\r\n const state = store.getState();\r\n\r\n const currentVersion = state.applicationData.version;\r\n const newVersion = responseAction?.xhr?.getResponseHeader('X-App-Version');\r\n\r\n if (oldVersionError && currentVersion && newVersion && newVersion !== currentVersion)\r\n ErrorHelper.throw(oldVersionError);\r\n\r\n if (authenticationError && responseAction?.xhr?.status === HttpStatus.Unauthorized)\r\n ErrorHelper.throw(authenticationError);\r\n\r\n next(action);\r\n };\r\n };\r\n}","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { ApplicationData } from 'libs/common/react/interfaces/ApplicationData';\r\n\r\nimport { ResponseAction, Action } from 'libs/common/react/flight/interfaces';\r\nimport { Actions } from 'libs/common/react/flight/constants/Actions';\r\n\r\nfunction ApiResponseReducer(state: ApplicationData, action: ResponseAction): ApplicationData {\r\n if (!ObjectHelper.isObject(action.xhr))\r\n return state;\r\n\r\n return {\r\n ...state,\r\n version: action.xhr.getResponseHeader('X-App-Version')\r\n };\r\n}\r\n\r\nconst defaultState: ApplicationData = {\r\n version: null\r\n};\r\n\r\nexport function ApplicationDataReducer(state: ApplicationData = defaultState, action: Action): ApplicationData {\r\n switch (action.type) {\r\n case Actions.API_REPONSE:\r\n return ApiResponseReducer(state, action as ResponseAction);\r\n }\r\n\r\n return state;\r\n}","import { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ViewModelActions } from 'libs/common/react/constants/ViewModelActions';\r\nimport { ViewModelAction } from 'libs/common/react/interfaces/ViewModelAction';\r\n\r\nfunction UpdateViewModel(state: HashObject, action: ViewModelAction): HashObject {\r\n // If setState has been called with key-value arguments\r\n if (typeof action.payload.dataOrKey === 'string' && action.payload.keyData !== undefined) {\r\n return {\r\n ...state,\r\n [action.payload.viewModelKey]: {\r\n ...state[action.payload.viewModelKey],\r\n [action.payload.dataOrKey]: action.payload.keyData\r\n }\r\n };\r\n }\r\n\r\n return {\r\n ...state,\r\n [action.payload.viewModelKey]: action.payload.dataOrKey\r\n };\r\n}\r\n\r\nexport function ViewModelReducer(state: HashObject = {}, action: ViewModelAction): HashObject {\r\n switch (action.type) {\r\n case ViewModelActions.UPDATE:\r\n return UpdateViewModel(state, action);\r\n }\r\n\r\n return state;\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHelper } from './ObjectHelper';\r\n\r\ntype Iterator<T, TResult = T> = (value: T, index: number, list: T[]) => TResult;\r\n\r\nexport const ArrayHelper = {\r\n first<T>(arr: T[]): T {\r\n return _.first(arr);\r\n },\r\n\r\n firstFew<T>(arr: T[], count: number): T[] {\r\n return _.first(arr, count);\r\n },\r\n\r\n last<T>(arr: T[]): T {\r\n return _.last(arr);\r\n },\r\n\r\n lastFew<T>(arr: T[], count: number): T[] {\r\n return _.last(arr, count);\r\n },\r\n\r\n max<T, TResult = T>(arr: T[], iterator?: Iterator<T, TResult>): T {\r\n return _.max(arr, iterator);\r\n },\r\n\r\n cloneAndReplaceAtIdx<T>(arr: T[], idx: number, newVal: T, defaultValue: any = null): T[] {\r\n let newArr = !!arr && arr.length ? arr.slice() : [];\r\n\r\n /**\r\n * If idx is out of bounds, fill array\r\n * with defaultValue up to idx.\r\n */\r\n if (idx + 1 > newArr.length)\r\n newArr = [ ...newArr, ...Array(idx + 1 - newArr.length).fill(defaultValue) ];\r\n\r\n newArr.splice(idx, 1, newVal);\r\n\r\n return newArr;\r\n },\r\n\r\n moveItem<T>(arr: T[], fromIdx: number, toIdx: number): T[] {\r\n const newArray = arr.slice();\r\n\r\n newArray.splice(toIdx, 0, newArray.splice(fromIdx, 1)[0]);\r\n\r\n return newArray;\r\n },\r\n\r\n isEmpty<T>(arr: T[]): boolean {\r\n return arr && !arr.length;\r\n },\r\n\r\n findIndex<T>(arr: T[], predicate: (item: T) => boolean): number {\r\n return _.findIndex(arr, predicate);\r\n },\r\n\r\n findWhere<T, U extends {}>(arr: T[], properties: U): T {\r\n return _.findWhere(arr, properties);\r\n },\r\n\r\n where<T, U extends {}>(arr: T[], properties: U): T[] {\r\n return _.where(arr, properties);\r\n },\r\n\r\n groupBy<T>(arr: T[], property: string): { [index: string]: T[]} {\r\n return _.groupBy(arr, property);\r\n },\r\n\r\n flatten<T>(arr: T[], shallow?: boolean): T[] {\r\n return _.flatten(arr, shallow);\r\n },\r\n\r\n intersection<T>(...arrays: T[][]): T[] {\r\n return _.intersection(...arrays);\r\n },\r\n\r\n /**\r\n * Add a value to an array, or if it is already in the array, remove it.\r\n * \r\n * @param arr array of values\r\n * @param value value to be added or removed.\r\n */\r\n addOrRemove<T = string | number>(arr: T[], value: T): T[] {\r\n const idxOfValue = arr.indexOf(value);\r\n\r\n if (idxOfValue === -1)\r\n arr.push(value);\r\n else\r\n arr.splice(idxOfValue, 1);\r\n\r\n return arr;\r\n },\r\n\r\n /**\r\n * This is the same addOrRemove function above, except it doesn't mutate the array in the argument\r\n * and returns a branch new array.\r\n */\r\n addOrRemoveImmutable<T>(arr: T[], value: T): T[] {\r\n const idxOfValue = arr.indexOf(value);\r\n\r\n const clonedArr = ObjectHelper.deepClone(arr);\r\n\r\n if (idxOfValue === -1)\r\n return [ ...clonedArr, value ];\r\n else\r\n return [ ...clonedArr.slice(0, idxOfValue), ...clonedArr.slice(idxOfValue + 1) ];\r\n },\r\n\r\n /**\r\n * Returns a (stably) sorted copy of list, ranked in ascending order \r\n * by the results of running each value through iteratee.\r\n * \r\n * @param arr array of values\r\n * @param iteratee an iterator function or a string name of the property to sort by.\r\n */\r\n sortBy<T extends {}, TSort = T>(arr: T[], iteratee?: Iterator<T, TSort> | keyof T): T[] {\r\n return _.sortBy<T, TSort>(arr, iteratee as Iterator<T, TSort>);\r\n },\r\n\r\n chunk<T>(array: _.Collection<T>, count: number): T[][] {\r\n return _.chunk(array, count) as T[][];\r\n },\r\n\r\n uniq<T>(array: _.List<T>): T[] {\r\n return _.uniq(array);\r\n }\r\n};","import * as _ from 'underscore';\r\n\r\nexport const ObjectHelper = {\r\n isEmpty(obj: any): boolean {\r\n return _.isEmpty(obj);\r\n },\r\n\r\n values(obj: any): any[] {\r\n return _.values(obj);\r\n },\r\n\r\n keys(obj: any): string[] {\r\n return _.keys(obj);\r\n },\r\n\r\n deepClone(obj: any): any {\r\n const mapFn = _.isArray(obj) ? _.map : _.mapObject;\r\n\r\n return mapFn(obj, item => {\r\n if (_.isObject(item) || _.isArray(item))\r\n return ObjectHelper.deepClone(item);\r\n\r\n return item;\r\n });\r\n },\r\n\r\n getEnumKeys(obj: any): any[] {\r\n return Object.keys(obj).filter(x => !(parseInt(x) >= 0));\r\n },\r\n\r\n isObject(obj: any): boolean {\r\n return _.isObject(obj);\r\n },\r\n\r\n isEqual(obj1: any, obj2: any): boolean {\r\n return _.isEqual(obj1, obj2);\r\n },\r\n\r\n omit(obj: any, keys: string[]): any {\r\n return _.omit(obj, keys);\r\n }\r\n};","import { Core } from 'libs/common/core';\r\n\r\nconst TITLE_LENGTH = 60;\r\nconst SUFFIX = ' - ClickView';\r\n\r\nconst trimTitle = (title: string): string => {\r\n if (title.length + SUFFIX.length <= TITLE_LENGTH)\r\n return title + SUFFIX;\r\n\r\n return title.substring(0, TITLE_LENGTH - 3) + '...' + SUFFIX;\r\n};\r\n\r\nexport const PageTitleHelper = {\r\n setPageTitle(title: string): void {\r\n if (!title)\r\n return;\r\n\r\n Core.LocationUtils.SetPageTitle(trimTitle(title));\r\n }\r\n};","export const RandomHelper = {\r\n getRandomInt(max: number = 10000): number {\r\n return Math.floor(Math.random() * Math.floor(max));\r\n }\r\n};","import * as _ from 'underscore';\r\nimport linkifyStr from 'linkifyjs/string';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nconst AMPERSAND_REGEX = /&/g;\r\nconst NON_ALPHANUMERIC_REGEX = /[\\W]+/g;\r\nconst WHITESPACE_REGEX = /\\s+/g;\r\n\r\nconst BaseLinkifyOptions = {\r\n className: 'info-link'\r\n};\r\n\r\nexport const TextHelper = {\r\n escapeExpression(text: string): string {\r\n return (window as any).Handlebars.escapeExpression(text);\r\n },\r\n\r\n escapeRegExp(str: string): string {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\r\n },\r\n\r\n slugify(str: string): string {\r\n if (!str) return;\r\n\r\n return str\r\n .toLowerCase()\r\n .replace(AMPERSAND_REGEX, 'and')\r\n .replace(NON_ALPHANUMERIC_REGEX, ' ')\r\n .trim()\r\n .replace(WHITESPACE_REGEX, '-')\r\n .substr(0, 80);\r\n },\r\n\r\n linkifyText(text: string, options?: ObjectHash): string {\r\n if (!text) return;\r\n const ops = options ? _.extend({}, BaseLinkifyOptions, options) : BaseLinkifyOptions;\r\n return linkifyStr(text, ops);\r\n },\r\n\r\n isEqual(str1: string | number, str2: string | number): boolean {\r\n return !!str1 && !!str2 && str1.toString() === str2.toString();\r\n },\r\n\r\n toTitleCase(str: string): string {\r\n return str\r\n .split(' ')\r\n .map(word => {\r\n const firstChar = word[0] ? word[0].toUpperCase() : '';\r\n const remainingWord = word.substr(1) ? word.substr(1).toLowerCase() : '';\r\n\r\n return firstChar + remainingWord;\r\n })\r\n .join(' ');\r\n }\r\n};\r\n","const MILLISECOND_MULTIPLIER = 1000;\r\n\r\n// Time of day boundaries (in 24hr adult time)\r\nconst AFTERNOON_START = 12; // 12pm \r\nconst EVENING_START = 18; // 6pm\r\n\r\ntype TimeOfDay = 'morning' | 'afternoon' | 'evening';\r\n\r\nexport const TimeHelper = {\r\n currentTimestamp(): number {\r\n return new Date().valueOf();\r\n },\r\n\r\n isExpired(timestamp: number, cacheDuration: number): boolean {\r\n if (!cacheDuration)\r\n return false;\r\n\r\n const expiryTimeMilliseconds = cacheDuration * MILLISECOND_MULTIPLIER;\r\n\r\n return timestamp < (TimeHelper.currentTimestamp() - expiryTimeMilliseconds);\r\n },\r\n\r\n currentTimeOfDay(currentTime?: Date): TimeOfDay {\r\n if (!currentTime)\r\n currentTime = new Date();\r\n\r\n const currentHour = currentTime.getHours();\r\n\r\n if (currentHour >= AFTERNOON_START && currentHour < EVENING_START)\r\n return 'afternoon';\r\n\r\n if (currentHour >= EVENING_START)\r\n return 'evening';\r\n\r\n return 'morning';\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Notification } from 'libs/shared/apps/notifications/models/Notification';\r\n\r\n/**\r\n * @Backbone\r\n */\r\nexport class NotificationCollection extends Core.Collection<Notification> {\r\n public get model(): Core.ModelCtor<Notification> {\r\n return Notification;\r\n }\r\n\r\n public parse(response: any): any {\r\n return response.data || response;\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \" <span class=\\\"text-right pl-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.actionText : stack1), depth0))\n + \"\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.actionText : stack1), depth0))\n + \"</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.icon : stack1), depth0))\n + \" \"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.iconClass : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.icon : stack1), depth0)) != null ? stack1 : \"\")\n + \"</div><div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.contentContainer : stack1), depth0))\n + \"\\\">\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.content : stack1), depth0))\n + \" pl-1\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.content : stack1), depth0))\n + \"</div>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.showActionText : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \" <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.notificationTime : stack1), depth0))\n + \" pl-1\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.notificationTime : stack1), depth0))\n + \"</div>\\r\\n</div>\";\n},\"useData\":true});","import { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport * as moment from 'moment';\r\n\r\nimport { SvgHelper } from 'libs/shared/utils/SvgHelper';\r\nimport { SharedAppChannels } from 'libs/shared/constants/RadioChannels';\r\n\r\nimport { NotificationsHelper } from 'libs/shared/apps/notifications/utils/NotificationsHelper';\r\nimport { NotificationStatus } from 'libs/shared/apps/notifications/enums/NotificationStatus';\r\nimport { NotificationActions } from 'libs/shared/apps/notifications/enums/NotificationActions';\r\nimport { NotificationAlertType } from 'libs/shared/apps/notifications/enums/NotificationAlertType';\r\nimport { NotificationAppLinkHelper } from 'libs/shared/apps/notifications/utils/NotificationAppLinkHelper';\r\n\r\nimport styles from './notification-item.scss';\r\nimport NotificationItemTemplate from './NotificationItem.hbs';\r\n\r\ninterface NotificationItemOptions extends Core.ComponentOptions {\r\n showActionText?: boolean;\r\n}\r\n\r\nexport class NotificationItemComponent extends Core.Component {\r\n public options: NotificationItemOptions;\r\n\r\n constructor(options: NotificationItemOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(this.model, 'change:notificationStatus', this.updateReadStatus);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationItemComponent';\r\n }\r\n\r\n public get template(): any {\r\n return NotificationItemTemplate;\r\n }\r\n\r\n public get tagName(): string {\r\n return 'a';\r\n }\r\n\r\n public get attributes(): any {\r\n if (this.getAppLink())\r\n return {};\r\n\r\n return {\r\n href: this.model.get('link'),\r\n target: '_blank'\r\n };\r\n }\r\n\r\n public get className(): string {\r\n return `notification ${styles.item} px-1 py-2 ${this.getReadStatus()}`;\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n click: 'onClick',\r\n };\r\n }\r\n\r\n private onClick(e: JQueryEventObject): boolean {\r\n /**\r\n * TODO: This shouldn't be using the notifications application channel\r\n */\r\n Radio.channel(SharedAppChannels.NOTIFICATIONS)\r\n .trigger(NotificationActions.Read, this.model.get('id'));\r\n\r\n this.model.set('notificationStatus', NotificationStatus.Read);\r\n\r\n return true;\r\n }\r\n\r\n public get appLinks(): Core.AppLinkHash {\r\n const appLink = this.getAppLink();\r\n\r\n if (!appLink)\r\n return {};\r\n\r\n return {\r\n '[this]': appLink\r\n };\r\n }\r\n\r\n private getAppLink(): Core.AppLink {\r\n const rawAppLink = this.model.get('appLink');\r\n\r\n if (!rawAppLink)\r\n return null;\r\n\r\n const type = this.model.get('notificationType');\r\n\r\n if (!NotificationAppLinkHelper.canBuildAppLink(type))\r\n return null;\r\n\r\n return NotificationAppLinkHelper.parseAppLink(rawAppLink, type);\r\n }\r\n\r\n private updateReadStatus(): void {\r\n this.$el.removeClass('unread read').addClass(this.getReadStatus());\r\n }\r\n\r\n private getReadStatus(): string {\r\n const status = this.model.get('notificationStatus');\r\n\r\n switch (status) {\r\n case NotificationStatus.Read:\r\n return 'read';\r\n default:\r\n case NotificationStatus.Received:\r\n return 'unread';\r\n }\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n const iconColorClass = NotificationsHelper.getIconColorByNotificationType(this.model.get('notificationType'))\r\n || NotificationsHelper.getIconColor(this.model.get('alertType'));\r\n\r\n const iconType = NotificationsHelper.getIconByNotificationType(this.model.get('notificationType'))\r\n || NotificationsHelper.getIcon(this.model.get('alertType'));\r\n\r\n return {\r\n content: this.model.get('body') || this.model.get('name'),\r\n notificationTime: moment(this.model.get('dateCreated')).fromNow(),\r\n icon: SvgHelper.getSvg(iconType),\r\n iconClass: `text-${iconColorClass}`,\r\n styles,\r\n showActionText: this.options.showActionText && this.model.get('alertType') !== NotificationAlertType.Warning,\r\n actionText: NotificationsHelper.getNotificationAction(this.model.get('notificationType')),\r\n };\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"item\":\"cv--item--3CmnQ\",\"icon\":\"cv--icon--YYvWW\",\"contentContainer\":\"cv--contentContainer--1w1Jg\",\"notificationTime\":\"cv--notificationTime--11n-Y\",\"content\":\"cv--content--3JkbY\",\"actionText\":\"cv--actionText--3D1fr\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.icon : stack1), depth0))\n + \" partial-loading-background\\\"></div><div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.contentContainer : stack1), depth0))\n + \"\\\">\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.content : stack1), depth0))\n + \" partial-loading-background ml-1 mt-1\\\"></div>\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.notificationTime : stack1), depth0))\n + \" partial-loading-background ml-1 mt-1\\\"></div>\\r\\n</div>\";\n},\"useData\":true});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"cv--icon--1FlbK\",\"contentContainer\":\"cv--contentContainer--1RJPc\",\"content\":\"cv--content--4fHKQ\",\"notificationTime\":\"cv--notificationTime--3hBwJ\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"notifications-region\\\"></div>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { EmptyStateBehavior } from 'libs/shared/legacy/behaviors/empty-state/EmptyStateBehavior';\r\nimport { SharedEmptyState } from 'libs/shared/legacy/enums/EmptyState';\r\nimport { EmptyStateComponents } from 'libs/shared/legacy/constants/empty-state-components/EmptyStateComponents';\r\n\r\nimport { NotificationItemComponent } from 'libs/shared/apps/notifications/components/notification-items/notification-item/NotificationItemComponent';\r\n\r\nimport NotificationListTemplate from './NotificationList.hbs';\r\n\r\ntype NotificationComponentType = Core.ModelCtor<NotificationItemComponent>;\r\n\r\nexport enum NotificationChildType {\r\n Default = 0,\r\n Popover\r\n}\r\n\r\nexport interface NotificationComponentCollectionOptions extends Core.ComponentCollectionOptions {\r\n childType: NotificationChildType;\r\n isPopover?: boolean;\r\n}\r\n\r\nclass NotificationComponentCollection extends Core.ComponentCollection {\r\n protected options: NotificationComponentCollectionOptions;\r\n\r\n public constructor(options: NotificationComponentCollectionOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationComponentCollection';\r\n }\r\n\r\n public get className(): string {\r\n return this.options.isPopover && 'popover-list-body-sm';\r\n }\r\n\r\n public get childView(): NotificationComponentType {\r\n return NotificationItemComponent;\r\n }\r\n\r\n public get childViewOptions(): ObjectHash {\r\n return {\r\n showActionText: !this.options.isPopover\r\n };\r\n }\r\n}\r\n\r\ninterface NotificationListComponentOptions extends Core.ComponentOptions {\r\n childType: NotificationChildType;\r\n isPopover?: boolean;\r\n}\r\n\r\nexport class NotificationListComponent extends Core.Component {\r\n public options: NotificationListComponentOptions;\r\n\r\n public constructor(options: NotificationListComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationListComponent';\r\n }\r\n\r\n public get template(): string {\r\n return NotificationListTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'notifications.notificationList';\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n notifications: {\r\n el: '.notifications-region',\r\n replaceElement: true\r\n }\r\n };\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: EmptyStateBehavior,\r\n region: 'notifications',\r\n type: SharedEmptyState.Notifications,\r\n componentOptions: this.getEmptyStateComponentOptions(),\r\n emptyStateComponents: EmptyStateComponents\r\n }\r\n ];\r\n }\r\n\r\n private getEmptyStateComponentOptions(): ObjectHash {\r\n if (!this.options.isPopover) return {\r\n noNotificationsText: LanguageService.getPhrase(this.lang, 'noNotifications')\r\n };\r\n\r\n return {\r\n customClass: 'px-0 py-3',\r\n imageSize: 'sm',\r\n noNotificationsText: LanguageService.getPhrase(this.lang, 'noNotifications')\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.showChildView('notifications', new NotificationComponentCollection(this.options));\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<span class=\\\"badge badge-danger badge-pill \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.unreadCount : stack1), depth0))\n + \"\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.unreadCount : stack1), depth0))\n + \"</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return ((stack1 = container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.unreadCount : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport NotificationStatusTemplate from './NotificationStatus.hbs';\r\nimport styles from './notification-status.scss';\r\n\r\ninterface NotificationStatusComponentOptions extends Core.ComponentOptions {\r\n color: 'light' | 'dark';\r\n}\r\n\r\nexport class NotificationStatusComponent extends Core.Component {\r\n public options: NotificationStatusComponentOptions;\r\n\r\n public constructor(options: NotificationStatusComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationStatusComponent';\r\n }\r\n\r\n public get className(): string {\r\n return `notification-status mx-2 ${styles.notificationIcon} ${styles[this.options.color]}`;\r\n }\r\n\r\n public get template(): any {\r\n return NotificationStatusTemplate;\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(this.model, 'change:unreadCount', this.render);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n svg: SvgHelper.getSvg(cvSvgLibrary.Bell),\r\n unreadCount: this.model.get('unreadCount')\r\n };\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notificationIcon\":\"cv--notificationIcon--3SkbQ\",\"light\":\"cv--light--2TvQg\",\"dark\":\"cv--dark--3taGb\",\"unreadCount\":\"cv--unreadCount--1u6ig\"};","export enum AppLinkReferrer {\r\n Notification = 'notification'\r\n}","export enum NotificationActions {\r\n Read = 'notification:read'\r\n}","export enum NotificationAlertType {\r\n Other = 0,\r\n Alert = 1,\r\n Warning = 2,\r\n Info = 3,\r\n Success = 4\r\n}","export enum NotificationAppLinkModules {\r\n Video = 'video',\r\n Url = 'url',\r\n Module = 'module',\r\n App = 'app',\r\n StaffRequest = 'staff_request'\r\n}","export enum NotificationModules {\r\n LibraryReview = 'libraryreview',\r\n ContentUpdates = 'newcontent'\r\n}","export enum NotificationStatus {\r\n Received = 1,\r\n Seen = 2,\r\n Read = 3\r\n}","export enum NotificationType {\r\n ExchangeVideoAvailable = 'exchange-video-available',\r\n WorkspaceVideoAvailable = 'workspace-video-available',\r\n Marketing = 'marketing',\r\n EditedVideoAvailable = 'edited-video-available',\r\n VideoRequestAvailable = 'pay-tv-video-available',\r\n VideoRequestDenied = 'pay-tv-video-denied',\r\n VideoReviewReminder = 'term-update-review-reminder',\r\n VideoReviewAddedToLibrary = 'term-update-review-videos-added-to-library',\r\n CustomLibraryVideoAvailable = 'custom-library-video-available',\r\n VideoProcessingFailed = 'video-processing-failed',\r\n StaffRequest = 'new-staff-request',\r\n StaffRequestFulfilled = 'staff-request-fulfilment',\r\n ChapterMergeSuccess = 'media-concatenate-success',\r\n SuggestEdit = 'suggest-an-edit'\r\n}","import { Core } from 'libs/common/core';\r\n\r\n/**\r\n * @Backbone\r\n */\r\nexport class Notification extends Core.Model {}","import * as moment from 'moment';\r\n\r\nimport { Cursors } from 'libs/common/backbone/interfaces';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\n\r\nimport { NotificationStatus } from 'libs/shared/apps/notifications/enums/NotificationStatus';\r\nimport { NotificationCollectionRequest } from 'libs/shared/apps/notifications/interfaces';\r\nimport { NotificationCollection } from 'libs/shared/apps/notifications/collections/NotificationCollection';\r\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nconst endpoints = {\r\n getNotifications: (userId: string, requestParams?: NotificationCollectionRequest) => {\r\n let url = `/api/domain/v2/objects/${userId}/notifications?query={orderbydesc:datecreated}`;\r\n\r\n if (!requestParams) return url;\r\n\r\n const { limit, cursor, before } = requestParams;\r\n\r\n const params: string[] = [];\r\n\r\n const filter = UrlHelper.buildFilter({ limit, before });\r\n\r\n if (filter) params.push(`filter=${filter}`);\r\n if (cursor) params.push(`cursor=${cursor}`);\r\n\r\n if (!params.length) return url;\r\n\r\n return `${url}&${params.join('&')}`;\r\n },\r\n markRead: (id: string) => `/api/notifications/v1/notifications/${id}`,\r\n markSeen: `/api/notifications/v1/notifications`,\r\n sendNotification: `/api/domain/v1/notifications`\r\n};\r\n\r\nexport class NotificationDataService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.Notification;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.NOTIFICATIONS;\r\n }\r\n\r\n public get lang(): string {\r\n return 'notifications.services';\r\n }\r\n\r\n public getNotifications(userId: string, params: NotificationCollectionRequest,\r\n collectionIdentifier: string,\r\n callback?: (data?: any) => any): NotificationCollection {\r\n\r\n return this.get<NotificationCollection>({\r\n resource: endpoints.getNotifications(userId, params),\r\n expiryTime: CacheDurations.STANDARD,\r\n eventPrefix: collectionIdentifier,\r\n formatData: (data: any) => new NotificationCollection(data, { parse: true }),\r\n callback\r\n });\r\n }\r\n\r\n public markRead(id: string, callback?: (data?: any) => any): void {\r\n return this.update<Notification>({\r\n callback,\r\n data: { notificationStatus: NotificationStatus.Read },\r\n resource: endpoints.markRead(id),\r\n eventPrefix: `${SharedDataPrefixes.NOTIFICATIONS}:read`\r\n });\r\n }\r\n\r\n public markSeen(callback?: () => any): void {\r\n const lastSeen = moment().utc().toISOString();\r\n\r\n return this.update<Notification>({\r\n callback,\r\n data: { notificationStatus: NotificationStatus.Seen },\r\n resource: `${endpoints.markSeen}?to=${lastSeen}¬ificationStatus=${NotificationStatus.Received}`,\r\n eventPrefix: `${SharedDataPrefixes.NOTIFICATIONS}:seen`\r\n });\r\n }\r\n\r\n public getNotificationsCursors(collectionIdentifier: string): Cursors {\r\n return this.getCursors(collectionIdentifier);\r\n }\r\n\r\n public suggestEdit(data: any, callback?: (data: any) => void): any {\r\n return this.create({\r\n resource: `${endpoints.sendNotification}`,\r\n eventPrefix: `${SharedDataPrefixes.SUGGEST_EDIT}`,\r\n callback,\r\n data,\r\n successHandler: this.alertService.success(LanguageService.getPhrase(this.lang, 'suggestEditSubmit')),\r\n errorHandler: this.alertService.error({ useXHR: true })\r\n });\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { Cursors } from 'libs/common/backbone/interfaces';\r\n\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\nimport { User } from 'libs/shared/interfaces';\r\nimport { SharedDataServices, SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataChannels, SharedAppChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { CollectionIdentifier } from 'libs/shared/legacy/interfaces';\r\n\r\nimport { NotificationCollectionRequest } from 'libs/shared/apps/notifications/interfaces';\r\nimport { NotificationCollection } from 'libs/shared/apps/notifications/collections/NotificationCollection';\r\nimport { Notification } from 'libs/shared/apps/notifications/models/Notification';\r\nimport { NotificationActions } from 'libs/shared/apps/notifications/enums/NotificationActions';\r\nimport { NotificationDataService } from 'libs/shared/apps/notifications/services/NotificationDataService';\r\nimport { NotificationSocketService } from 'libs/shared/apps/notifications/services/NotificationSocketService';\r\n\r\nexport class NotificationService extends Core.Service {\r\n private notificationDataService: NotificationDataService;\r\n private notificationSocketService: NotificationSocketService;\r\n private userDataService: UserDataService;\r\n\r\n public constructor() {\r\n super();\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.Notification;\r\n }\r\n\r\n private initDataServices(): void {\r\n this.notificationDataService = InstanceManager.getInstance(SharedDataServices.Notification, this);\r\n this.notificationSocketService = InstanceManager.getInstance(SharedDataServices.NotificationSocket, this);\r\n this.userDataService = InstanceManager.getInstance(SharedDataServices.User, this);\r\n\r\n this.bindSocketListeners();\r\n this.bindAppListeners();\r\n }\r\n\r\n private bindSocketListeners(): void {\r\n const prefix = SharedDataPrefixes.NOTIFICATIONS;\r\n\r\n this.listenTo(SharedDataChannels.NOTIFICATIONS_SOCKET, `${prefix}:new:sync`, this.addNewNotification);\r\n this.listenTo(SharedDataChannels.NOTIFICATIONS_SOCKET, `${prefix}:count:sync`, this.updateUnreadCount);\r\n\r\n this.listenTo(SharedDataChannels.NOTIFICATIONS, `${prefix}:seen`, this.updateUnreadCount);\r\n }\r\n\r\n private bindAppListeners(): void {\r\n /**\r\n * TODO: This shouldnt be using the Notification Application channel\r\n */\r\n this.listenTo(SharedAppChannels.NOTIFICATIONS, NotificationActions.Read, this.markNotificationRead);\r\n }\r\n\r\n private getDataServices(): boolean {\r\n if (this.dataServicesExist())\r\n return;\r\n\r\n this.initDataServices();\r\n }\r\n\r\n private dataServicesExist(): boolean {\r\n return !!this.notificationSocketService && !!this.notificationDataService;\r\n }\r\n\r\n /**\r\n * On receiving a new notification via signalr, add the model to the top of the\r\n * first page's collection.\r\n */\r\n private addNewNotification(newNotification: Notification): void {\r\n this.userDataService.getCurrentUser((user: Core.Model | User) => {\r\n\r\n /**\r\n * Deliberately passing null for params, to ensure that if we need to retrieve\r\n * the collection, it fetches the first page. The non-dynamic eventPrefix is\r\n * used to ensure that we can retrieve the collection from the cache if it already\r\n * exists (without any cursors). \r\n */\r\n this.notificationDataService.getNotifications(user.id, null, SharedDataPrefixes.NOTIFICATIONS,\r\n (collection: NotificationCollection) => {\r\n collection.add(newNotification, { at: 0 });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Triggered by signalr callback event when loading notifications in the top bar\r\n */\r\n private updateUnreadCount(unreadCount: number = 0): void {\r\n const model: Core.Model = ViewModelService.get(SharedDataPrefixes.NOTIFICATIONS);\r\n model.set('unreadCount', unreadCount);\r\n }\r\n\r\n public getNotifications(params: NotificationCollectionRequest,\r\n collectionIdentifier: CollectionIdentifier,\r\n callback?: (data?: any) => any): void {\r\n\r\n this.getDataServices();\r\n\r\n\r\n // Listen for new notifications\r\n this.notificationSocketService.receiveLatestNotifications();\r\n\r\n this.userDataService.getCurrentUser((user: Core.Model | User) => {\r\n this.notificationDataService.getNotifications(user.id, params, collectionIdentifier.toString(), callback);\r\n });\r\n }\r\n\r\n /**\r\n * Retrive current unread notification count\r\n */\r\n public getNotificationsMetadata(): Core.Model {\r\n this.getDataServices();\r\n\r\n this.notificationSocketService.receiveUnreadNotificationCount();\r\n return ViewModelService.get(SharedDataPrefixes.NOTIFICATIONS);\r\n }\r\n\r\n public markNotificationsSeen(): void {\r\n this.notificationDataService.markSeen();\r\n }\r\n\r\n public markNotificationRead(id: string): void {\r\n this.notificationDataService.markRead(id);\r\n }\r\n\r\n public getNotificationsCursors(collectionIdentifier: CollectionIdentifier): Cursors {\r\n return this.notificationDataService.getNotificationsCursors(collectionIdentifier.toString());\r\n }\r\n}","import { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\n\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { Notification } from 'libs/shared/apps/notifications/models/Notification';\r\n\r\nexport class NotificationSocketService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.NotificationSocket;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.NOTIFICATIONS_SOCKET;\r\n }\r\n\r\n public receiveLatestNotifications(callback?: (notification: Notification) => any): Notification {\r\n return this.get<Notification>({\r\n callback,\r\n formatData: (data: any) => new Notification(data),\r\n resource: `notify`,\r\n eventPrefix: `${SharedDataPrefixes.NOTIFICATIONS}:new`\r\n });\r\n }\r\n\r\n public receiveUnreadNotificationCount(callback?: (unreadCount: number) => any): number {\r\n return this.get<number>({\r\n callback,\r\n resource: `notifyCount`,\r\n eventPrefix: `${SharedDataPrefixes.NOTIFICATIONS}:count`\r\n });\r\n }\r\n}","import { SignalRDataProvider } from 'libs/common/backbone/services/data-providers/SignalRDataProvider';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\n\r\nexport class NotificationsSocketDataProvider extends SignalRDataProvider {\r\n public get name(): string {\r\n return DataProviders.Notifications;\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { BaseNotificationsAppVariables } from 'libs/shared/interfaces';\r\n\r\nimport { AppLinkReferrer } from 'libs/shared/apps/notifications/enums/AppLinkReferrer';\r\nimport { NotificationModules } from 'libs/shared/apps/notifications/enums/NotificationModules';\r\nimport { NotificationAppLinkModules } from 'libs/shared/apps/notifications/enums/NotificationAppLinkModules';\r\nimport { NotificationType } from 'libs/shared/apps/notifications/enums/NotificationType';\r\n\r\nfunction getAppVariables(): BaseNotificationsAppVariables {\r\n return InstanceManager.getInstance(AppVariables.NOTIFICATIONS, this);\r\n}\r\n\r\n/**\r\n * Move this logic back to library editor\r\n */\r\nfunction getModuleAppLink(moduleType: string, id: string): Core.AppLink {\r\n const appVariables = getAppVariables();\r\n\r\n if (id === NotificationModules.ContentUpdates)\r\n return appVariables.appLinks.pastReleases;\r\n\r\n if (id === NotificationModules.LibraryReview)\r\n return appVariables.appLinks.awaitingReview;\r\n}\r\n\r\nfunction getVideoAppLink(module: string, id: string, notificationType: string): Core.AppLink {\r\n /**\r\n * The empty string passed to the appLink arguments here is necessary for now until we add a way to the\r\n * app router to filter our optional arguments that have not been passed in. The empty string argument\r\n * is for the \"slug\" in the video appLink used by Lite. If we do not pass this in, the slug is `undefined`,\r\n * and it appears in the URL as `primary.clickview.com/video/9213942/:slug`, which is very ugly.\r\n */\r\n return {\r\n ...getAppVariables().appLinks.videoDetails,\r\n args: [ id, '' ]\r\n };\r\n}\r\n\r\nfunction getStaffRequestAppLink(module: string, id: string, notificationType: string): Core.AppLink {\r\n return {\r\n ...getAppVariables().appLinks.editStaffRequest,\r\n args: [id],\r\n params: { referrer: AppLinkReferrer.Notification }\r\n };\r\n}\r\n\r\nfunction mapModuleToAppLink(moduleType: string, id: string, notificationType: string): Core.AppLink {\r\n if (moduleType === NotificationAppLinkModules.Module)\r\n return getModuleAppLink(moduleType, id);\r\n\r\n if (moduleType === NotificationAppLinkModules.Video)\r\n return getVideoAppLink(moduleType, id, notificationType);\r\n\r\n if (moduleType === NotificationAppLinkModules.StaffRequest)\r\n return getStaffRequestAppLink(moduleType, id, notificationType);\r\n}\r\n\r\nexport const NotificationAppLinkHelper = {\r\n\r\n /**\r\n * Determine if the current notificationType is supported within the project so that\r\n * we can construct an AppLink. Where it is not supported, we will just use the link. \r\n */\r\n canBuildAppLink: (Notificationtype: NotificationType): boolean => {\r\n return _.contains(getAppVariables().notificationTypesWithAppLinks, Notificationtype);\r\n },\r\n\r\n parseAppLink: (appLink: string, type: string): Core.AppLink => {\r\n if (!appLink || !type) return;\r\n\r\n const [ rawModule, rawId ] = appLink.split(':');\r\n\r\n return mapModuleToAppLink(rawModule, rawId, type);\r\n }\r\n};\r\n","import * as _ from 'underscore';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { NotificationType } from 'libs/shared/apps/notifications/enums/NotificationType';\r\nimport { NotificationAlertType } from 'libs/shared/apps/notifications/enums/NotificationAlertType';\r\n\r\nconst lang = 'notifications.utils';\r\n\r\nconst MarketingNotification = /^marketing-/;\r\n\r\nexport const NotificationsHelper = {\r\n getIconColor: (type: NotificationAlertType) => {\r\n switch (type) {\r\n\r\n case NotificationAlertType.Success:\r\n return 'success';\r\n\r\n case NotificationAlertType.Alert:\r\n return 'danger';\r\n\r\n case NotificationAlertType.Warning:\r\n return 'warning';\r\n\r\n case NotificationAlertType.Info:\r\n case NotificationAlertType.Other:\r\n default:\r\n return 'dark';\r\n }\r\n },\r\n\r\n getIcon: (type: NotificationAlertType) => {\r\n switch (type) {\r\n\r\n case NotificationAlertType.Success:\r\n return cvSvgLibrary.CheckCircle;\r\n\r\n case NotificationAlertType.Alert:\r\n case NotificationAlertType.Warning:\r\n return cvSvgLibrary.Warning;\r\n\r\n case NotificationAlertType.Info:\r\n case NotificationAlertType.Other:\r\n default:\r\n return cvSvgLibrary.Info;\r\n }\r\n },\r\n\r\n /**\r\n * This is a manual override based on the notification type. This is only\r\n * temporary as some noitifications don't have the correct alert type.\r\n */\r\n getIconColorByNotificationType: (type: NotificationType) => {\r\n if (type === NotificationType.VideoProcessingFailed ||\r\n type === NotificationType.VideoRequestDenied)\r\n return 'danger';\r\n\r\n if (type.match(MarketingNotification))\r\n return 'warning';\r\n },\r\n\r\n /**\r\n * This is a manual override based on the notification type.\r\n * Using this to detect marketing notifications as they don't have a fixed\r\n * type atm.\r\n */\r\n getIconByNotificationType: (type: NotificationType) => {\r\n if (type.match(MarketingNotification))\r\n return cvSvgLibrary.Star;\r\n },\r\n\r\n getNotificationAction: (type: NotificationType): string => {\r\n switch (type) {\r\n case NotificationType.VideoReviewAddedToLibrary:\r\n case NotificationType.WorkspaceVideoAvailable:\r\n case NotificationType.ExchangeVideoAvailable:\r\n case NotificationType.EditedVideoAvailable:\r\n return LanguageService.getPhrase(lang, 'viewVideo');\r\n\r\n case NotificationType.VideoReviewReminder:\r\n return LanguageService.getPhrase(lang, 'reviewVideos');\r\n\r\n case NotificationType.VideoReviewAddedToLibrary:\r\n return LanguageService.getPhrase(lang, 'viewNewContent');\r\n\r\n case NotificationType.CustomLibraryVideoAvailable:\r\n return LanguageService.getPhrase(lang, 'viewVideoDetails');\r\n\r\n case NotificationType.StaffRequest:\r\n return LanguageService.getPhrase(lang, 'reviewVideo');\r\n\r\n default:\r\n return LanguageService.getPhrase(lang, 'seeNow');\r\n }\r\n }\r\n};\r\n","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<div id=\\\"notificationsDropdown\\\" class=\\\"notifications-status-region\\\" data-toggle=\\\"dropdown\\\"></div>\\r\\n<div aria-labelledby=\\\"notificationsDropdown\\\" class=\\\"notifications-region dropdown-menu dropdown-menu-right dropdown-arrow p-0 \"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.notificationsContainer : stack1), depth0))\n + \"\\\"></div>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { BaseNotificationsAppVariables } from 'libs/shared/interfaces';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nimport { NotificationStatusComponent } from 'libs/shared/apps/notifications/components/notification-status/NotificationStatusComponent';\r\nimport { NotificationChildType } from 'libs/shared/apps/notifications/components/notification-list/NotificationListComponent';\r\nimport { NotificationService } from 'libs/shared/apps/notifications/services/NotificationService';\r\nimport { NotificationsPopoverView } from 'libs/shared/apps/notifications/views/popover/NotificationsPopoverView';\r\n\r\nimport NotificationHeaderTemplate from './NotificationHeader.hbs';\r\nimport styles from './notification-header.scss';\r\n\r\nexport class NotificationHeaderView extends Core.View {\r\n private appVariables: BaseNotificationsAppVariables;\r\n\r\n public initialize(): void {\r\n this.appVariables = InstanceManager.getInstance(AppVariables.NOTIFICATIONS);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationHeaderView';\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get className(): string {\r\n return 'd-flex align-items-center position-relative';\r\n }\r\n\r\n public get template(): any {\r\n return NotificationHeaderTemplate;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n status: {\r\n el: '.notifications-status-region',\r\n replaceElement: false\r\n },\r\n notifications: {\r\n el: '.notifications-region',\r\n replaceElement: false\r\n }\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .notifications-status-region': 'renderNotificationList'\r\n };\r\n }\r\n\r\n private renderNotificationList(): void {\r\n const view = new NotificationsPopoverView({\r\n childType: NotificationChildType.Popover\r\n });\r\n\r\n this.showChildView('notifications', view);\r\n }\r\n\r\n private renderNotificationStatus(): void {\r\n const notificationService = InstanceManager.getInstance<NotificationService>(SharedServices.Notification);\r\n const view = new NotificationStatusComponent({\r\n model: notificationService.getNotificationsMetadata(),\r\n color: this.appVariables.bellIconColor\r\n });\r\n\r\n this.showChildView('status', view);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return styles;\r\n }\r\n\r\n public onRender(): void {\r\n this.renderNotificationStatus();\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notificationsContainer\":\"cv--notificationsContainer--3BMCf\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"py-2 border-top text-right px-2\\\">\\r\\n <a class=\\\"see-all\\\">\"\n + container.escapeExpression((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),\"seeAll\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</div>\\r\\n</div>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<h5 class=\\\"header p-2 m-0 border-bottom\\\">\"\n + container.escapeExpression((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(alias2,\"notifications\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</h5>\\r\\n<div class=\\\"list-region\\\"></div>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.hasNotifications : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { PartialLoadingComponentTypes } from 'libs/shared/enums/PartialLoading';\r\n\r\nimport { BaseNotificationsAppVariables } from 'libs/shared/interfaces';\r\nimport { CollectionIdentifier } from 'libs/shared/legacy/interfaces';\r\n\r\nimport { NotificationCollection } from 'libs/shared/apps/notifications/collections/NotificationCollection';\r\nimport { NotificationListComponent, NotificationChildType } from 'libs/shared/apps/notifications/components/notification-list/NotificationListComponent';\r\nimport { NotificationService } from 'libs/shared/apps/notifications/services/NotificationService';\r\n\r\nimport NotificationsPopoverTemplate from './NotificationsPopover.hbs';\r\n\r\nimport PartialLoadingTemplate from '../../components/notification-items/partial-loading/NotificationsPartial.hbs';\r\nimport PartialLoadingStyles from '../../components/notification-items/partial-loading/notification-partial.scss';\r\n\r\nexport interface NotificationsPopoverViewOptions extends Core.ViewOptions {\r\n childType: NotificationChildType;\r\n}\r\n\r\nexport class NotificationsPopoverView extends Core.View {\r\n public options: NotificationsPopoverViewOptions;\r\n public collection: NotificationCollection;\r\n private collectionIdentifier: CollectionIdentifier;\r\n private notificationService: NotificationService;\r\n private appVariables: BaseNotificationsAppVariables;\r\n\r\n public constructor(options: NotificationsPopoverViewOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationPopoverView';\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get lang(): string {\r\n return 'notifications.notificationsPopover';\r\n }\r\n\r\n public get className(): string {\r\n return 'notifications-container';\r\n }\r\n\r\n public get template(): any {\r\n return NotificationsPopoverTemplate;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n notifications: {\r\n replaceElement: true,\r\n el: '.list-region',\r\n partialLoading: {\r\n component: PartialLoadingComponentTypes.ComponentCollection,\r\n options: {\r\n collectionLength: 5,\r\n childOptions: {\r\n template: PartialLoadingTemplate,\r\n className: `px-1 py-2`,\r\n viewOptions: {\r\n styles: PartialLoadingStyles\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n anchor: '.see-all',\r\n };\r\n }\r\n\r\n public get appLinks(): Core.AppLinkHash {\r\n return {\r\n '@ui.anchor': this.appVariables.appLinks.notifications\r\n };\r\n }\r\n\r\n public initialize(): void {\r\n this.notificationService = InstanceManager.getInstance(SharedServices.Notification, this);\r\n this.appVariables = InstanceManager.getInstance(AppVariables.NOTIFICATIONS, this);\r\n }\r\n\r\n private onData(collection: NotificationCollection): void {\r\n this.collection = collection;\r\n this.render();\r\n }\r\n\r\n private getCollectionIdentifier(): CollectionIdentifier {\r\n if (this.collectionIdentifier)\r\n return this.collectionIdentifier;\r\n\r\n /**\r\n * Currently we only retrieve the first page\r\n */\r\n return this.collectionIdentifier = new CollectionIdentifier({\r\n collectionPrefix: SharedDataPrefixes.NOTIFICATIONS\r\n });\r\n }\r\n\r\n private renderNotificationList(): void {\r\n const view = new NotificationListComponent({\r\n collection: this.collection,\r\n childType: this.options.childType,\r\n isPopover: true\r\n });\r\n\r\n this.showChildView('notifications', view);\r\n }\r\n\r\n/**\r\n * Only trigger the notification seen event once the collection has been loaded.\r\n */\r\n private triggerSeen(): void {\r\n this.notificationService.markNotificationsSeen();\r\n }\r\n\r\n public onBeforeRender(): boolean {\r\n /**\r\n * Deliberately passing null to always fetch the first page for the popover.\r\n * In future, we may add infinite scroll, at which point this will need to change.\r\n */\r\n if (!this.collection) {\r\n this.notificationService.getNotifications(null,\r\n this.getCollectionIdentifier(),\r\n (collection: NotificationCollection) => this.onData(collection)\r\n );\r\n }\r\n\r\n return !!this.collection;\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n hasNotifications: this.collection && this.collection.length\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderNotificationList();\r\n this.triggerSeen();\r\n }\r\n}\r\n","export enum PlaylistSortType {\r\n Newest = 'newest',\r\n Oldest = 'oldest',\r\n RecentlyUpdated = 'recently_added',\r\n AtoZ = 'atoz',\r\n ZtoA = 'ztoa'\r\n}","import { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\n\r\nexport const PlaylistSortHelper = {\r\n getSortTypeFromName(sortName: string): PlaylistSortType {\r\n switch (sortName) {\r\n case 'recently_added':\r\n return PlaylistSortType.RecentlyUpdated;\r\n case 'atoz':\r\n return PlaylistSortType.AtoZ;\r\n case 'ztoa':\r\n return PlaylistSortType.ZtoA;\r\n case 'newest':\r\n return PlaylistSortType.Newest;\r\n case 'oldest':\r\n return PlaylistSortType.Oldest;\r\n default:\r\n return PlaylistSortType.Newest;\r\n }\r\n },\r\n};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<span class=\\\"float-right\\\">\\r\\n \"\n + ((stack1 = container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.confirmSelectionText : stack1), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n</span> \";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport ConfirmSelectionTemplate from './ConfirmSelection.hbs';\r\nimport styles from './confirm-selection.scss';\r\n\r\nconst lang = 'shared.utils';\r\n\r\ninterface ConfirmSelectionComponentOptions extends Core.ComponentOptions {}\r\n\r\nexport class ConfirmSelectionComponent extends Core.Component {\r\n constructor(options: ConfirmSelectionComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'ConfirmSelectionComponent';\r\n }\r\n\r\n public get template(): string {\r\n return ConfirmSelectionTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return `suggestion-footer empty-suggestion px-2 ${styles.selectionContainer} clearfix`;\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n confirmSelectionText: LanguageService.getPhrase(lang, 'confirmSelection', {\r\n svg: `<kbd><span class=\"${styles.svgContainer}\">${SvgHelper.getSvg(cvSvgLibrary.Enter)}</span></kbd>`\r\n })\r\n };\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectionContainer\":\"cv--selectionContainer--3m62c\",\"svgContainer\":\"cv--svgContainer--1XxEl\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<a class=\\\"row\\\" href=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.url : stack1), depth0))\n + \"\\\">\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.coverContainer : stack1), depth0))\n + \" px-2\\\">\\r\\n <div class=\\\"cover-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.textContainer : stack1), depth0))\n + \" px-2\\\">\\r\\n <div class=\\\"result-title text-capitalize\\\">\"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n </div>\\r\\n</a>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseSearchAppVariables } from 'libs/shared/interfaces';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { ThumbnailComponent } from 'libs/shared/legacy/components/thumbnail/ThumbnailComponent';\r\n\r\nimport * as styles from './classification-search-result.scss';\r\nimport ClassificationSearchResultTemplate from './ClassificationSearchResult.hbs';\r\n\r\nexport class ClassificationSearchResultComponent extends Core.Component {\r\n public appVariables: BaseSearchAppVariables;\r\n\r\n public initialize(): void {\r\n this.appVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n }\r\n\r\n public get name(): string {\r\n return 'ClassificationSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return ClassificationSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'p-2 container-fluid';\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n cover: {\r\n replaceElement: true,\r\n el: '.cover-region'\r\n }\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click a' : 'onClick'\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n // Prevent the href navigation, but allow the event to bubble up \r\n e.preventDefault();\r\n return true;\r\n }\r\n\r\n private getUrl(): string {\r\n return Core.AppLinkHelper.getHref({\r\n ...this.appVariables.appLinks.classification,\r\n args: [this.model.get('id')]\r\n });\r\n }\r\n\r\n private renderThumbnail(): void {\r\n const component = new ThumbnailComponent({\r\n model: this.model,\r\n classNameOverride: `${styles.coverImage} responsive-img`\r\n });\r\n\r\n this.showChildView('cover', component);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n url: this.getUrl(),\r\n styles\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderThumbnail();\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"coverImage\":\"cv--coverImage--1_Tx-\",\"coverContainer\":\"cv--coverContainer--3Qf-6\",\"textContainer\":\"cv--textContainer--34VXV\"};","export * from './recent-search/RecentSearchResultComponent';\r\nexport * from './series/SeriesSearchResultComponent';\r\nexport * from './tag/TagSearchResultComponent';\r\nexport * from './video-result/VideoSearchResultComponent';\r\nexport * from './classification/ClassificationSearchResultComponent';","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.escapeExpression, alias3=container.lambda;\n\n return \"<div class=\\\"row\\\">\\r\\n <div class=\\\"recent-text col-11 recent\\\">\"\n + alias2(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n <div class=\\\"col-1 text-center\\\">\\r\\n <span aria-hidden=\\\"true\\\" class=\\\"remove-recent \"\n + alias2(alias3(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.removeRecent : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias3(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.closeSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n </div>\\r\\n</div>\";\n},\"useData\":true});","import { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport RecentSearchResultTemplate from './RecentSearchResult.hbs';\r\nimport styles from './recent-search.scss';\r\n\r\ninterface RecentSearchResultComponentOptions extends Core.ComponentOptions {\r\n channelName: string;\r\n}\r\n\r\nexport class RecentSearchResultComponent extends Core.Component {\r\n constructor(options: RecentSearchResultComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'RecentSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return RecentSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'text-capitalize p-2 container-fluid';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .remove-recent': 'onClick'\r\n };\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n closeSvg: SvgHelper.getSvg(cvSvgLibrary.Close)\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n e.stopPropagation();\r\n\r\n setTimeout(() => {\r\n const channel = Radio.channel(this.options.channelName);\r\n channel.trigger('remove:recent', this.model.get('name'));\r\n }, 0);\r\n\r\n this.destroy();\r\n return false;\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"removeRecent\":\"cv--removeRecent--d1QVW\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<a href=\\\"\"\n + alias5(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias5(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</a>\";\n},\"useData\":true});","import { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport SeriesSearchResultTemplate from './SeriesSearchResult.hbs';\r\n\r\nexport class SeriesSearchResultComponent extends Core.Component {\r\n public get name(): string {\r\n return 'SeriesSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return SeriesSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'text-capitalize p-2';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click a' : 'onClick'\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n // Prevent the href navigation, but allow the event to bubble up \r\n e.preventDefault();\r\n return true;\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<a href=\\\"\"\n + alias5(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\r\\n <span class=\\\"text-capitalize badge-pill tag py-1 px-2 my-1 mr-1\\\">\"\n + alias5(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n</a>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport TagSearchResultTemplate from './TagSearchResult.hbs';\r\n\r\nexport class TagSearchResultComponent extends Core.Component {\r\n public get name(): string {\r\n return 'TagSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return TagSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'text-capitalize p-2';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click a' : 'onClick'\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n // Prevent the href navigation, but allow the event to bubble up \r\n e.preventDefault();\r\n return true;\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \"aligned\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \" <div class=\\\"result-title collection\\\"> \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.collection : stack1)) != null ? stack1.type : stack1), depth0))\n + \": \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.collection : stack1)) != null ? stack1.name : stack1), depth0))\n + \" </div>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<a class=\\\"row\\\" href=\\\"\"\n + alias2(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.url : stack1), depth0))\n + \"\\\">\\r\\n <div class=\\\"video-img col-2\\\">\\r\\n <div class=\\\"thumbnail-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"col-10\\\">\\r\\n <div class=\\\"result-title text-capitalize \"\n + ((stack1 = helpers.unless.call(alias3,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.collection : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\"\n + alias2(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias3,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias3,((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.collection : stack1)) != null ? stack1.name : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \" </div>\\r\\n</a>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { BaseSearchAppVariables } from 'libs/shared/interfaces';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { ThumbnailComponent } from 'libs/shared/legacy/components/thumbnail/ThumbnailComponent';\r\n\r\nimport VideoSearchResultTemplate from './VideoSearchResult.hbs';\r\n\r\nexport class VideoSearchResultComponent extends Core.Component<any> {\r\n public appVariables: BaseSearchAppVariables;\r\n\r\n public initialize(): void {\r\n this.appVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n }\r\n\r\n public get name(): string {\r\n return 'VideoSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return VideoSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'video-result p-2 container-fluid';\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n thumbnail: {\r\n replaceElement: true,\r\n el: '.thumbnail-region'\r\n }\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click a' : 'onClick'\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n // Prevent the href navigation, but allow the event to bubble up \r\n e.preventDefault();\r\n return true;\r\n }\r\n\r\n private getCollection(): ObjectHash {\r\n const { categories, series } = this.model;\r\n\r\n if (categories && categories.length) {\r\n const category = categories.first();\r\n return { name: category.get('name'), type: 'Folder' };\r\n }\r\n\r\n if (series && series.get('name'))\r\n return { name: series.get('name'), type: 'Series' };\r\n\r\n return;\r\n }\r\n\r\n private getUrl(): string {\r\n return Core.AppLinkHelper.getHref({\r\n ...this.appVariables.appLinks.videoDetails,\r\n args: [this.model.get('id')]\r\n });\r\n }\r\n\r\n private renderThumbnail(): void {\r\n const component = new ThumbnailComponent({\r\n model: this.model\r\n });\r\n\r\n this.showChildView('thumbnail', component);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n collection: this.getCollection(),\r\n url: this.getUrl()\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderThumbnail();\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {}), alias5=container.hooks.helperMissing, alias6=\"function\";\n\n return \"<span class=\\\"d-inline-block tool-tip \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.searchContextTag : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias3(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"title\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\r\\n <span>\"\n + alias3(((helper = (helper = helpers.searchTag || (depth0 != null ? depth0.searchTag : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"searchTag\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n <span class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.closeSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n</span>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { TooltipBehavior } from 'libs/shared/legacy/behaviors/tooltip/TooltipBehavior';\r\n\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport SearchContextTemplate from './SearchContext.hbs';\r\nimport styles from './search-context.scss';\r\n\r\nexport class SearchContextComponent extends Core.Component {\r\n public initialize(): void {\r\n this.listenTo(SharedServiceChannels.CONTEXTUAL_SEARCH, 'typeahead:toggle', this.toggleFocus);\r\n }\r\n\r\n public get name(): string {\r\n return 'SearchContextComponent';\r\n }\r\n\r\n public get template(): string {\r\n return SearchContextTemplate;\r\n }\r\n\r\n public get tagName(): string {\r\n return 'span';\r\n }\r\n\r\n public get className(): string {\r\n return styles.searchContextContainer;\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [{\r\n behaviorClass: TooltipBehavior,\r\n selector: '.tool-tip',\r\n placement: 'left'\r\n }];\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n contextTag: `.${styles.searchContextTag}`,\r\n clearSvg: `.${styles.svgContainer}`\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click @ui.clearSvg': this.onClick,\r\n 'mouseenter @ui.clearSvg': this.onMouseEnter,\r\n 'mouseleave @ui.clearSvg': this.onMouseLeave\r\n };\r\n }\r\n\r\n private onClick(): void {\r\n /**\r\n * The focus option is passed when we clear the search context,\r\n * and want to manually focus the searchbar afterwards. For example,\r\n * if the search bar isn't focused and we click to clear the context\r\n * it will become focused.\r\n */\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('reset:search:context', { focus: true });\r\n\r\n this.model.set('preventTypeaheadClose', false);\r\n }\r\n\r\n private onMouseEnter(): void {\r\n this.model.set('preventTypeaheadClose', true);\r\n }\r\n\r\n private onMouseLeave(): void {\r\n this.model.set('preventTypeaheadClose', false);\r\n }\r\n\r\n private toggleFocus(typeahead: ObjectHash): void {\r\n const contextTag = this.getUI('contextTag');\r\n\r\n /**\r\n * This checks if the contextTag is a JQuery element or not. Occasionally when this method is called, contextTag\r\n * is a pure JS object that has no JQuery methods on it, so the .addClass / .removeClass calls fail. Checking if\r\n * the object has a .get method solves this issue.\r\n */\r\n if (!contextTag || !contextTag.get)\r\n return;\r\n\r\n if (typeahead.open)\r\n contextTag.addClass(styles.tagFocus);\r\n else\r\n contextTag.removeClass(styles.tagFocus);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n closeSvg: SvgHelper.getSvg(cvSvgLibrary.Close)\r\n };\r\n }\r\n\r\n public onBeforeRender(): boolean {\r\n return !!this.model.get('searchTag');\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svgContainer\":\"cv--svgContainer--1ZcbC\",\"searchContextTag\":\"cv--searchContextTag--1RLqh\",\"tagFocus\":\"cv--tagFocus--179a5\",\"searchContextContainer\":\"cv--searchContextContainer--3nPVB\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \" <span class=\\\"border rounded align-middle \"\n + alias3(alias2(((stack1 = ((stack1 = (depths[1] != null ? depths[1].options : depths[1])) != null ? stack1.styles : stack1)) != null ? stack1.term : stack1), depth0))\n + \"\\\">\"\n + alias3(alias2(depth0, depth0))\n + \"</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<span class=\\\"d-inline-block \"\n + alias2(container.lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.termContainer : stack1), depth0))\n + \"\\\">\\r\\n\"\n + ((stack1 = helpers.each.call(alias3,(depth0 != null ? depth0.term : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"</span>\\r\\n<span>\"\n + alias2(((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias3,{\"name\":\"description\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\";\n},\"useData\":true,\"useDepths\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<div class=\\\"cursor-pointer svg-container \"\n + container.escapeExpression(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\" data-toggle=\\\"popover\\\">\\r\\n \"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.searchInfoSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n</div>\\r\\n<div class=\\\"popover-container\\\"></div>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { PopoverBehavior } from 'libs/shared/legacy/behaviors/popover/PopoverBehavior';\r\n\r\nimport SearchTipsTemplate from './SearchTips.hbs';\r\nimport SearchTipItemTemplate from './SearchTipItem.hbs';\r\nimport styles from './search-tips.scss';\r\n\r\nclass SearchTipComponentItem extends Core.Component {\r\n public get name(): string {\r\n return 'SearchTipComponentItem';\r\n }\r\n\r\n public get template(): string {\r\n return SearchTipItemTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return `py-2 ${styles.tip}`;\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles\r\n };\r\n }\r\n}\r\n\r\nclass SearchTipComponentCollection extends Core.ComponentCollection {\r\n public get name(): string {\r\n return 'SearchTipComponentCollection';\r\n }\r\n\r\n public get childView(): typeof SearchTipComponentItem {\r\n return SearchTipComponentItem;\r\n }\r\n}\r\n\r\nexport class SearchTipsComponent extends Core.Component {\r\n public initialize(): void {\r\n this.collection = new Core.Collection([\r\n {\r\n term: [`${LanguageService.getPhrase(this.lang, 'firstTerm')}`],\r\n description: `${LanguageService.getPhrase(this.lang, 'firstDescription')}`\r\n },\r\n {\r\n term: [`${LanguageService.getPhrase(this.lang, 'secondTerm')}`],\r\n description: `${LanguageService.getPhrase(this.lang, 'secondDescription')}`\r\n },\r\n {\r\n term: [`${LanguageService.getPhrase(this.lang, 'thirdTerm')}`],\r\n description: `${LanguageService.getPhrase(this.lang, 'thirdDescription')}`\r\n },\r\n {\r\n term: [ `${LanguageService.getPhrase(this.lang, 'fourthTerm1')}`, `${LanguageService.getPhrase(this.lang, 'fourthTerm2')}` ],\r\n description: `${LanguageService.getPhrase(this.lang, 'fourthDescription')}`\r\n },\r\n {\r\n term: [`${LanguageService.getPhrase(this.lang, 'fifthTerm')}`],\r\n description: `${LanguageService.getPhrase(this.lang, 'fifthDescription')}`\r\n }\r\n ]);\r\n }\r\n\r\n public get name(): string {\r\n return 'SearchTipsComponent';\r\n }\r\n\r\n public get template(): string {\r\n return SearchTipsTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'search.searchTips';\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [{\r\n behaviorClass: PopoverBehavior,\r\n containerSelector: '.popover-container',\r\n title: LanguageService.getPhrase(this.lang, 'heading'),\r\n size: 'popover-lg',\r\n renderContent: (region: string) => this.renderTips(region),\r\n }];\r\n }\r\n\r\n private renderTips(region: string): void {\r\n this.showChildView(region, new SearchTipComponentCollection({\r\n collection: this.collection\r\n }));\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n searchInfoSvg: SvgHelper.getSvg(cvSvgLibrary.Info)\r\n };\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svgContainer\":\"cv--svgContainer--ecsrN\",\"tip\":\"cv--tip--IwYkF\",\"termContainer\":\"cv--termContainer--1BqAi\",\"term\":\"cv--term--1NEsr\"};","export const TypeaheadConfiguration = {\r\n /**\r\n * Request remote data after character input meets length\r\n */\r\n ActivationLength: 1,\r\n\r\n SuggestionLimit: {\r\n Min: 1,\r\n Default: 3,\r\n Folder: 3,\r\n Recent: 3\r\n }\r\n};","export enum SearchQueryType {\r\n Video = 'videos',\r\n Folder = 'categories',\r\n Series = 'series',\r\n Channel = 'channels',\r\n Distributors = 'companies',\r\n Producers = 'people',\r\n Tags = 'tags',\r\n Language = 'languages',\r\n TagsRaw = 'tag',\r\n ChannelRaw = 'channel',\r\n Recent = 'recent',\r\n Direct = 'direct',\r\n ProductionCompanies = 'companies',\r\n Directors = 'people',\r\n Season = 'season',\r\n Classification = 'subjects'\r\n}","export enum SearchTypes {\r\n Direct = 'direct-search',\r\n Recent = 'recent-searches'\r\n}\r\n\r\nexport enum BloodhoundType {\r\n Remote = 0,\r\n Local\r\n}","import { Core } from 'libs/common/core';\r\n\r\n/**\r\n * @Backbone\r\n */\r\nexport class Query extends Core.Model {}","import * as _ from 'underscore';\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { BaseLibraryDataService, BaseSeriesDataService, BaseSearchAppVariables } from 'libs/shared/interfaces';\r\nimport { SharedServices, SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nexport interface SearchContext {\r\n appLink: Core.AppLink; // Context\r\n\r\n searchTag: string; // Tag text to be displayed in the search bar.\r\n title?: string; // Tooltip (folder or series name).\r\n\r\n filterParam: string; // Filter parameter for search query\r\n filterValue?: string; // Filter value for search query\r\n\r\n setFilterValue: (context: SearchContext, self: any) => void; // Sets the filter value\r\n}\r\n\r\n// List of context's which can be sub-searched in.\r\nconst validSearchContexts: (lang: string, appLinks: HashObject) => SearchContext[] = (lang, appLinks) => {\r\n const contexts = [];\r\n if (appLinks.folder)\r\n contexts.push({\r\n appLink: appLinks.folder,\r\n searchTag: LanguageService.getPhrase(lang, 'folderTag'),\r\n filterParam: 'folder',\r\n setFilterValue: (context: SearchContext, self: any) => {\r\n const libraryDataService: BaseLibraryDataService =\r\n InstanceManager.getInstance(SharedDataServices.Library, self);\r\n\r\n libraryDataService.getFolder(_.first(context.appLink.args).toString(), (folder: HashObject) => {\r\n self.setFilterValue(folder.get('name'));\r\n InstanceManager.releaseInstance(SharedDataServices.Library);\r\n });\r\n }\r\n });\r\n\r\n if (appLinks.series)\r\n contexts.push({\r\n appLink: appLinks.series,\r\n searchTag: LanguageService.getPhrase(lang, 'seriesTag'),\r\n filterParam: 'series',\r\n setFilterValue: (context: SearchContext, self: any) => {\r\n const seriesDataService: BaseSeriesDataService = InstanceManager.getInstance(SharedDataServices.Series, self);\r\n seriesDataService.getSeries( _.first(context.appLink.args).toString(), (series: HashObject) => {\r\n self.setFilterValue(series.name);\r\n InstanceManager.releaseInstance(SharedDataServices.Series);\r\n });\r\n }\r\n });\r\n\r\n return contexts;\r\n};\r\n\r\nexport class ContextualSearchService extends Core.Service {\r\n private searchContext: Core.Model;\r\n private appVariables: BaseSearchAppVariables;\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.onRouteChange);\r\n this.listenTo(SharedServiceChannels.CONTEXTUAL_SEARCH, 'typeahead:toggle', this.onTypeaheadToggle);\r\n this.listenTo(SharedServiceChannels.CONTEXTUAL_SEARCH, 'reset:search:context', this.resetSearchContext);\r\n\r\n this.searchContext = new Core.Model();\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.ContextualSearch;\r\n }\r\n\r\n public get lang(): string {\r\n return 'search.services';\r\n }\r\n\r\n public getSearchContext(): Core.Model {\r\n return this.searchContext;\r\n }\r\n\r\n /**\r\n * Event listeners\r\n */\r\n private onRouteChange(nextRoute: Core.AppLink, options: Core.ExecuteRouteOptions): void {\r\n if (options.isAppRoute)\r\n this.setSearchContext(nextRoute);\r\n }\r\n\r\n private onTypeaheadToggle(options: ObjectHash): void {\r\n if (options.open || this.searchContext.get('filterValue'))\r\n return;\r\n\r\n // When the typeahead closes, the search context is re-initialized\r\n const currentContext: Core.AppLink = ContextService.getCurrentContext().appLink;\r\n this.setSearchContext(currentContext);\r\n }\r\n\r\n\r\n /**\r\n * Context mutation methods\r\n */\r\n private setSearchContext(context: Core.AppLink): void {\r\n const nextSearchContext = this.isValidSearchContext(context);\r\n\r\n // If valid route - update the current search context\r\n if (nextSearchContext) {\r\n this.updateSearchContext(nextSearchContext, context.args);\r\n return;\r\n }\r\n\r\n // If invalid route AND we are not in the SearchView route (/manage/search) - reset search context\r\n if (!this.inSearchView(context)) {\r\n const channel = Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH);\r\n channel.trigger('reset:search:context');\r\n }\r\n }\r\n\r\n // Updates the search context\r\n private updateSearchContext(nextContext: SearchContext, appLinkArgs: (string | number)[]): void {\r\n nextContext.appLink.args = appLinkArgs;\r\n this.searchContext.set(nextContext);\r\n nextContext.setFilterValue(nextContext, this);\r\n }\r\n\r\n // Callback for the setFilterValue method on each SearchContext object\r\n private setFilterValue(filterValue: string): void {\r\n const contextValues = {\r\n filterValue,\r\n title: filterValue\r\n };\r\n this.searchContext.set(contextValues);\r\n }\r\n\r\n private resetSearchContext(): void {\r\n this.searchContext.clear({ silent: true });\r\n }\r\n\r\n\r\n /**\r\n * Validation methods\r\n */\r\n // Checks if the current context appLink matches a valid SearchContext appLink.\r\n private isValidSearchContext(nextRoute: Core.AppLink): SearchContext {\r\n if (!this.appVariables)\r\n this.appVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n\r\n return _.find(validSearchContexts(this.lang, this.appVariables.appLinks), (context: SearchContext) =>\r\n nextRoute.application === context.appLink.application &&\r\n nextRoute.action === context.appLink.action\r\n );\r\n }\r\n\r\n // Checks if the user is currently at /manage/search\r\n private inSearchView(context: Core.AppLink): boolean {\r\n const searchResultsAppLink = this.appVariables.appLinks.searchResults;\r\n\r\n return context.application === searchResultsAppLink.application\r\n && context.action === searchResultsAppLink.action;\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { LibraryType } from 'libs/shared/enums/LibraryType';\r\nimport { BaseSearchAppVariables } from 'libs/shared/interfaces';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nimport { RemoteSearch } from 'libs/shared/apps/search/interfaces';\r\nimport { SearchQueryType } from 'libs/shared/apps/search/enums/SearchQueryType';\r\nimport { TypeaheadConfiguration } from 'libs/shared/apps/search/constants/TypeaheadConfiguration';\r\n\r\nconst SuggestionLimit = TypeaheadConfiguration.SuggestionLimit;\r\n\r\n/**\r\n * Specific logic for processing responses from domain v1/search/instant endpoint\r\n */\r\nexport const InstantSearchHelper = {\r\n prepareQuery: (query: string, settings: JQueryAjaxSettings, options: ObjectHash = {}) => {\r\n const { model, libraryIds, presentationId } = options;\r\n\r\n if (model && model.get('filterValue'))\r\n query += ` ${model.get('filterParam')}:\"${model.get('filterValue')}\"`;\r\n\r\n let url = `${settings.url}?q=${query}`;\r\n\r\n if (libraryIds)\r\n url += `&ids=${libraryIds}`;\r\n\r\n if (presentationId)\r\n url += `&presentationId=${presentationId}`;\r\n\r\n return url;\r\n },\r\n\r\n bloodhoundConfig(source: string, options: ObjectHash): RemoteSearch<any> {\r\n return {\r\n datumTokenizer: Bloodhound.tokenizers.obj.nonword('label'),\r\n queryTokenizer: Bloodhound.tokenizers.whitespace,\r\n remote: {\r\n url: '/api/domain/v1/search/instant',\r\n prepare: _.partial(InstantSearchHelper.prepareQuery, _, _, options),\r\n transform: _.partial(InstantSearchHelper.handleResult, _, source)\r\n }\r\n } as RemoteSearch<any>;\r\n },\r\n\r\n handleResult(data: ObjectHash = {}, item: any, options: ObjectHash = {}): any[] {\r\n if (item === SearchQueryType.Classification)\r\n return InstantSearchHelper.processSubjectResult(data[item], item, options);\r\n\r\n if (item === SearchQueryType.Video)\r\n return InstantSearchHelper.processVideoResult(data[item], item, options);\r\n\r\n if (options.showFolder && item === SearchQueryType.Folder)\r\n return InstantSearchHelper.processFolderResult(data[item], item, options);\r\n\r\n if (item === SearchQueryType.Series)\r\n return InstantSearchHelper.processSeriesResult(data[item], item, options);\r\n\r\n if (item === SearchQueryType.Tags)\r\n return InstantSearchHelper.processTagsResult(data[item], item, options);\r\n\r\n return [];\r\n },\r\n\r\n processSubjectResult(collection: any[], item: any, options: ObjectHash): any [] {\r\n if (!collection)\r\n return [];\r\n\r\n collection = InstantSearchHelper.processCollection(collection);\r\n\r\n return _.map(collection, model => {\r\n if (model.cached) return model;\r\n\r\n model.thumbnail = { url: model.coverUrl };\r\n model.cached = true;\r\n return model;\r\n });\r\n },\r\n\r\n processVideoResult(collection: any[], item: any, options: ObjectHash): any[] {\r\n if (!collection)\r\n return [];\r\n\r\n collection = InstantSearchHelper.processCollection(collection);\r\n\r\n /**\r\n * Mutate the video model to match it against our Master video model.\r\n * This gets called with each character change in the typeahead so \r\n * we're caching it for re-use.\r\n */\r\n return _.map(collection, model => {\r\n if (model.cached) return model;\r\n\r\n model.topics = _.map(model.topics, t => ({ name: t }));\r\n model.series = { id: model.seriesId, name: model.seriesName };\r\n model.thumbnail = { url: model.thumbnailUrl };\r\n\r\n model.cached = true;\r\n return model;\r\n });\r\n },\r\n\r\n processTagsResult(collection: any[], item: any, options: ObjectHash): any[] {\r\n if (!collection)\r\n return [];\r\n\r\n const appVariables: BaseSearchAppVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n\r\n collection = InstantSearchHelper.processCollection(collection);\r\n\r\n return _.map(collection, model => {\r\n if (model.cached) return model;\r\n\r\n model.url = Core.AppLinkHelper.getHref({\r\n ...appVariables.appLinks.searchResults,\r\n params: { tag: model.name }\r\n });\r\n\r\n model.cached = true;\r\n return model;\r\n });\r\n },\r\n\r\n processSeriesResult(collection: any[], item: any, options: ObjectHash): any[] {\r\n if (!collection)\r\n return [];\r\n\r\n collection = InstantSearchHelper.processCollection(collection);\r\n\r\n return _.map(collection, model => {\r\n let collectionName, collectionType;\r\n\r\n if (model.series) {\r\n collectionName = model.series;\r\n } else if (model.folder && model.folder.length) {\r\n collectionName = _.first(model.folder);\r\n }\r\n\r\n return _.extend({}, model, { collectionType, collection: collectionName });\r\n });\r\n },\r\n\r\n processFolderResult(collection: any[], item: any, options: ObjectHash = {}): any[] {\r\n if (!collection)\r\n return [];\r\n\r\n collection = InstantSearchHelper.processCollection(collection, { limit: SuggestionLimit.Folder });\r\n\r\n return _.map(collection, c => {\r\n const { library = {} } = c;\r\n\r\n if (library.type === LibraryType.Exchange)\r\n library.name = 'Exchange';\r\n\r\n // Flatten the structure to include the library data and generate the url\r\n return _.extend({}, c, {\r\n libraryId: library.id,\r\n libraryName: library.name,\r\n libraryType: library.type,\r\n });\r\n });\r\n },\r\n\r\n /**\r\n * Manipulate \r\n * @param collection \r\n * @param options \r\n */\r\n processCollection(collection: any[], options: ObjectHash = {}): any[] {\r\n const { limit = SuggestionLimit.Default } = options;\r\n return collection.slice(0, limit);\r\n }\r\n};\r\n","import * as _ from 'underscore';\r\nimport { StorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nexport interface UpdateRecentSearchOptions<T> {\r\n query: T;\r\n add?: boolean;\r\n remove?: boolean;\r\n limit?: number;\r\n}\r\n\r\nexport const RecentSearchHelper = {\r\n getRecentSearches<T>(key: string, dataSource: StorageHelper): T[] {\r\n let recentSearches = dataSource.cacheGet(key);\r\n\r\n if (!_.isArray(recentSearches))\r\n recentSearches = [];\r\n\r\n return recentSearches;\r\n },\r\n\r\n setRecentSearches<T>(key: string, recentSearches: T[], dataSource: StorageHelper): void {\r\n if (!_.isArray(recentSearches))\r\n return;\r\n\r\n dataSource.cacheSet(key, recentSearches);\r\n },\r\n\r\n updateRecentSearches<T>(key: string, dataSource: StorageHelper, options: UpdateRecentSearchOptions<T>): T[] {\r\n let { add, remove, query, limit = 5 } = options;\r\n\r\n let recentSearches = RecentSearchHelper.getRecentSearches<T>(key, dataSource);\r\n\r\n const queryIndex = _.indexOf<T>(recentSearches, query);\r\n\r\n if (add && queryIndex === -1)\r\n recentSearches.unshift(query);\r\n\r\n if (remove && queryIndex > -1)\r\n recentSearches.splice(queryIndex, 1);\r\n\r\n if (recentSearches.length > limit)\r\n recentSearches = recentSearches.slice(0, limit);\r\n\r\n RecentSearchHelper.setRecentSearches<T>(key, recentSearches, dataSource);\r\n\r\n return recentSearches;\r\n }\r\n};\r\n\r\n","import { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nexport const SearchHelper = {\r\n getContextualSearchQueryParams(context: Core.Model): HashObject {\r\n if (!context || !context.get('filterParam'))\r\n return {};\r\n\r\n const param = context.get('filterParam');\r\n const value = context.get('filterValue');\r\n\r\n return {\r\n [param]: value\r\n };\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport * as Bloodhound from 'bloodhound';\r\n\r\nimport { BloodhoundType } from 'libs/shared/apps/search/enums/SearchTypes';\r\nimport { TypeaheadConfiguration } from 'libs/shared/apps/search/constants/TypeaheadConfiguration';\r\nimport { TypeaheadDataSource, LocalSearch, RemoteSearch, TypeaheadConfig, TypeaheadSourceItem } from 'libs/shared/apps/search/interfaces';\r\nimport { ConfirmSelectionComponent } from 'libs/shared/apps/search/components/confirm-selection/ConfirmSelectionComponent';\r\n\r\nexport const TypeaheadHelper = {\r\n\r\n /**\r\n * This function will only allow our typeahead to fetch results when we\r\n * have exceeded our min length. The reason for doing this is that we want to the typeahead\r\n * to load our recent searches immediately when we click the input, but before we perform any searches. - Mike\r\n */\r\n handleQuery<T>(dataSource?: TypeaheadDataSource<T>, options?: ObjectHash ): TypeaheadDataSource<T> {\r\n\r\n return (query: string, syncResults: any, asyncResults: any) => {\r\n options || (options = {});\r\n\r\n if (query && options.ignoreOnQuery)\r\n return syncResults([]);\r\n\r\n const shouldFetch = query && query.length >= TypeaheadConfiguration.ActivationLength;\r\n\r\n // It is assumed that recent searches will always utilise Bloodhound, if this changes in future\r\n // the following will no longer work. We are returning all of the indexed bloodhound results.\r\n if (options.fetchType === BloodhoundType.Local && !shouldFetch)\r\n return syncResults((dataSource as any).index.all());\r\n\r\n if (!shouldFetch)\r\n return;\r\n\r\n // Convert simple query strings to objects for use in our templates\r\n if (!(dataSource instanceof Bloodhound))\r\n return syncResults([{ query }]);\r\n\r\n // Handle our dynamic queries with both sync and async\r\n return dataSource.search.call(dataSource, query, syncResults, asyncResults);\r\n };\r\n },\r\n\r\n /**\r\n * This function complements HandleQuery allowing us to override when and how typeahead templates are \r\n * rendered. When the query doesn't meet our min length we will render a fallback template, which is \r\n * essentially just an empty div. This is necessary to ensure we can display recent searchs when the \r\n * typeahead is active (but less than the require length to trigger the search functionality). As we are\r\n * dynamically generating the results for videos, folders and series we are deliberately using a closure\r\n * to ensure we don't lose our template. \r\n * \r\n * It must also return <any> as the typeahead typings are shit.\r\n * - Mike\r\n */\r\n getTemplate(template: Function, options: ObjectHash = {}): any {\r\n const { fallbackTemplate, templateText } = options;\r\n\r\n return (data: ObjectHash) => {\r\n const { query } = data;\r\n\r\n if (!query)\r\n return fallbackTemplate(...arguments);\r\n\r\n if (query.length && query.length < TypeaheadConfiguration.ActivationLength)\r\n return fallbackTemplate(...arguments);\r\n\r\n const viewData = _.extend(data, { templateText });\r\n\r\n return template(viewData);\r\n };\r\n },\r\n\r\n /**\r\n * Provides mechanism to map a single search query against multiple bloodhound sources. \r\n * Sources may be remote endpoints or local in-memory collections.\r\n * @param sources\r\n * @param options \r\n */\r\n\r\n getSearchSources<T>(sources: TypeaheadSourceItem<T>[] ): TypeaheadConfig<T>[] {\r\n return _.map(sources, (source: TypeaheadSourceItem<T>, index: number ) => {\r\n const { typeaheadConfig, bloodhoundConfig, name, options } = source;\r\n\r\n let bloodhound;\r\n if (bloodhoundConfig)\r\n bloodhound = TypeaheadHelper.buildBloodhound<T>(bloodhoundConfig(name, options));\r\n\r\n return typeaheadConfig({ bloodhound, name }, index, options);\r\n });\r\n },\r\n\r\n /**\r\n * Bloodhound helper\r\n */\r\n buildBloodhound<T>(options: RemoteSearch<T> | LocalSearch<T>): Bloodhound<T> {\r\n return new Bloodhound<T>(options);\r\n },\r\n\r\n /**\r\n * This is attached as a callback to the typeahead's render event.\r\n * Where there is a real suggestion from the server, we will automatically\r\n * set the cursor to that item, to make it simply to add. This is to encourage the\r\n * re-use of existing entities.\r\n * \r\n * Note: With multiple suggestion sets, the render event will also be called multiple times\r\n * along with this callback.\r\n */\r\n selectFirstResult(e: JQueryEventObject, suggestions: any[], async: boolean, dataset: string): void {\r\n if (!async) return;\r\n\r\n // Where we already have a highlighted selection (potentially from a previous render), cancel this event.\r\n const existingCursor = this.$el.find('.tt-cursor');\r\n if (existingCursor.length)\r\n return;\r\n\r\n const suggestion = _.first(suggestions);\r\n\r\n // Prevent empty suggestions from being selectable\r\n if (!suggestion || _.isEmpty(suggestion)) {\r\n this.$el.find('.tt-not-found').removeClass('tt-selectable tt-suggestion');\r\n return;\r\n }\r\n\r\n const createEl = this.$el.find('.add-new');\r\n\r\n // Highlight the create option when there are no other suggestions\r\n if (createEl && !suggestion.id) {\r\n createEl.addClass('tt-cursor');\r\n return;\r\n }\r\n\r\n if (createEl && createEl.hasClass('tt-cursor'))\r\n createEl.removeClass('tt-cursor');\r\n\r\n this.$el.find('.result:first').addClass('tt-cursor');\r\n },\r\n\r\n /**\r\n * Callback is designed to be attached to the stickit bindings for the typeahead form\r\n * and emit events when a change is detected on the bound model. We do this to be\r\n * able to detect whether an input has cleared from a previous selection,\r\n * \r\n * @param channelName \r\n * @param event \r\n */\r\n emitEventOnInput(channelName: string, eventName: string, type: string, wrapperOptions?: ObjectHash): Function {\r\n if (!channelName) return;\r\n return (model: any, options: ObjectHash) => {\r\n const channel = Radio.channel(channelName);\r\n channel.trigger(eventName, model, type, _.extend({}, wrapperOptions, options));\r\n };\r\n },\r\n\r\n /**\r\n * I hate this.\r\n * \r\n * Basically what this function does is curry a callback with the original association's\r\n * data. Then, depending on the user's interaction with the typeahead input, it will restore that\r\n * data when a blur event is triggered.\r\n * \r\n * @param data raw clone of original assoc model\r\n * \r\n * Curried callback\r\n * @param channelName \r\n * @param propertyName \r\n */\r\n resetAssociationOnBlur(data: ObjectHash): Function {\r\n return function(channelName: string, propertyName: string): void {\r\n const propertyChanged = this.model.get(propertyName);\r\n const hasNewAssocId = _.isNumber(this.model.id);\r\n\r\n // An existing assoc doesn't exist, and the new assoc hasn't been created, so we'll discard changes\r\n if (!data[propertyName] && !hasNewAssocId) {\r\n this.model.clear();\r\n Radio.channel(channelName).trigger('typeahead:clear:input');\r\n return;\r\n }\r\n\r\n // Where the input has been cleared, let it go, we want to remove the assoc\r\n if (!(typeof propertyChanged === 'string') || !propertyChanged.length)\r\n return;\r\n\r\n // Where the property has changed but it don't have an id yet, let it go, we want to create an assoc\r\n if (!hasNewAssocId) {\r\n Radio.channel(channelName).trigger('typeahead:clear:input');\r\n this.model.set(data);\r\n return;\r\n }\r\n\r\n // Where there's a new assoc but it don't match the old one, let it go, we want to create an assoc\r\n if (data.id !== this.model.id)\r\n return;\r\n\r\n // Discard the changes, reverting back to the original assoc state\r\n this.model.set(data);\r\n\r\n // We need to re-instate the typeahead input to contain the original query to avoid subtle bugs\r\n // where clicking the input would display the wrong text. The caveat to this, is that re-setting the value\r\n // will trigger another call to the instant search endpoing.\r\n Radio.channel(channelName).trigger('typeahead:set:input', data[propertyName]);\r\n };\r\n },\r\n\r\n /**\r\n * Create and render ConfirmSelection component for use as a \r\n * @param options \r\n */\r\n getConfirmSelectionTemplate(options: ObjectHash = {}): Function {\r\n return () => new ConfirmSelectionComponent(options).render().el;\r\n },\r\n\r\n clearInputOnBlur(channelName: string): void {\r\n Radio.channel(channelName).trigger('typeahead:clear:input');\r\n }\r\n};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<div class=\\\"w-100 h-100 align-items-center search-bar-container\\\">\\r\\n <span class=\\\"search-context-region\\\"></span>\\r\\n <input name=\\\"search\\\" type=\\\"text\\\" class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.searchInput : stack1), depth0))\n + \"\\\" id=\\\"search\\\" autocomplete=\\\"off\\\" type=\\\"Search within your libraries...\\\" placeholder=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.libraryText : stack1), depth0))\n + \"\\\" aria-label=\\\"Search\\\">\\r\\n</div>\\r\\n<span class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.searchSvgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n<button type=\\\"submit\\\" tabindex=\\\"-1\\\" style=\\\"display:none\\\"></button>\\r\\n<span class=\\\"search-tips-region \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.tipsContainer : stack1), depth0))\n + \"\\\"></span>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"search-partial-region\\\"></div>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.showPartial : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio, Validation } from 'backbone';\r\n\r\nimport { UserAction, DirectSearchDescriptor, ActionDescriptor } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { Analytics } from 'libs/analytics/Analytics';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { StorageHelper, LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\n\r\nimport { SharedDataChannels, SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { Series, Video, Folder, Tag, CurrentUser, BaseSearchAppVariables, Classification } from 'libs/shared/interfaces';\r\nimport { UserDataServiceHelper } from 'libs/shared/services/UserDataService';\r\nimport { PartialLoadingComponentTypes } from 'libs/shared/enums/PartialLoading';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { MaskHelper } from 'libs/shared/utils/MaskHelper';\r\nimport { SharedLibraryDataServiceHelper } from 'libs/shared/utils/LibraryDataServiceHelper';\r\n\r\nimport { SearchTypes, BloodhoundType } from 'libs/shared/apps/search/enums/SearchTypes';\r\nimport { SearchQueryType } from 'libs/shared/apps/search/enums/SearchQueryType';\r\nimport { SearchHelper } from 'libs/shared/apps/search/utils/SearchHelper';\r\nimport { InstantSearchHelper } from 'libs/shared/apps/search/utils/InstantSearchHelper';\r\nimport { RecentSearchHelper } from 'libs/shared/apps/search/utils/RecentSearchHelper';\r\nimport { TypeaheadHelper } from 'libs/shared/apps/search/utils/TypeaheadHelper';\r\nimport { ContextualSearchService } from 'libs/shared/apps/search/services/ContextualSearchService';\r\nimport { TypeaheadConfig, InstantSearchBloodhound, TypeaheadConfigHandler, BloodhoundConfigHandler } from 'libs/shared/apps/search/interfaces';\r\nimport { TypeaheadConfiguration } from 'libs/shared/apps/search/constants/TypeaheadConfiguration';\r\n\r\nimport { SearchTipsComponent } from 'libs/shared/apps/search/components/search-tips/SearchTipsComponent';\r\nimport { SearchContextComponent } from 'libs/shared/apps/search/components/search-context/SearchContextComponent';\r\nimport * as ViewTemplates from 'libs/shared/apps/search/components/instant-search';\r\nimport * as Templates from './templates';\r\n\r\nimport SearchBarTemplate from './SearchBar.hbs';\r\nimport styles from './search.scss';\r\n\r\nimport SearchBarPartialStyles from './partial/search-bar-partial.scss';\r\nimport SearchBarPartialTemplate from './partial/SearchBarPartial.hbs';\r\n\r\nconst { SuggestionLimit } = TypeaheadConfiguration;\r\n\r\nexport interface SearchBarViewOptions extends Core.ViewOptions {\r\n showRecentSearch?: boolean;\r\n disableMask?: boolean;\r\n presentationId?: string;\r\n}\r\n\r\nexport class SearchBarView extends Core.View {\r\n protected options: SearchBarViewOptions;\r\n\r\n private contextualSearchService: ContextualSearchService;\r\n private appVariables: BaseSearchAppVariables;\r\n\r\n private currentUser: CurrentUser;\r\n private libraryCollection: Core.Collection;\r\n\r\n private storageHelper: StorageHelper;\r\n private recentSearchEngine: Bloodhound<string>;\r\n\r\n private viewCache: ObjectHash = {};\r\n private searchInput: JQuery;\r\n\r\n private searchContext: Core.Model;\r\n private preventToggleEvent: boolean;\r\n\r\n public constructor(options: SearchBarViewOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.contextualSearchService = InstanceManager.getInstance(SharedServices.ContextualSearch, this);\r\n this.appVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n\r\n this.storageHelper = LocalStorageHelper;\r\n this.searchContext = this.contextualSearchService.getSearchContext();\r\n this.bindListeners();\r\n }\r\n\r\n public get name(): string {\r\n return 'SearchBarView';\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get tagName(): string {\r\n return 'form';\r\n }\r\n\r\n public get template(): any {\r\n return SearchBarTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'search.searchBar';\r\n }\r\n\r\n public get channelName(): string {\r\n return `searchbar:${this.cid}`;\r\n }\r\n\r\n public get className(): string {\r\n return `search-query-container position-relative m-0 w-100 form-control p-0 ${styles.searchBar}`;\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n showRecentSearch: true\r\n };\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n input: `#search`,\r\n searchBarContainer: '.search-bar-container'\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'submit': 'onSubmit',\r\n [`click .${styles.searchSvgContainer}`]: 'onClickSearch',\r\n 'click a': 'onTypeaheadSelect',\r\n 'keydown': 'onKeydown'\r\n };\r\n }\r\n\r\n public get bindings(): ObjectHash {\r\n return {\r\n '[name=search]': {\r\n observe: 'query',\r\n setOptions : { validate: true }\r\n }\r\n };\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n partial: {\r\n el: '.search-partial-region',\r\n replaceElement: false,\r\n partialLoading: {\r\n component: PartialLoadingComponentTypes.Component,\r\n options: {\r\n template: SearchBarPartialTemplate,\r\n className: 'w-100',\r\n viewOptions: {\r\n styles: SearchBarPartialStyles\r\n }\r\n }\r\n }\r\n },\r\n searchTips: {\r\n el: '.search-tips-region',\r\n replaceElement: false\r\n },\r\n searchContext: {\r\n el: '.search-context-region',\r\n replaceElement: true\r\n }\r\n };\r\n }\r\n\r\n private get recentSearchKey(): string {\r\n return `recent:search:${this.currentUser.id}`;\r\n }\r\n\r\n private bindListeners(): void {\r\n // All subsquent library changes will refresh the search bar\r\n this.listenTo(SharedDataChannels.LIBRARY, `library:created library:deleted`, this.render);\r\n\r\n if (!this.options.showRecentSearch)\r\n return;\r\n\r\n this.listenTo(this.channelName, 'remove:recent', this.onDeleteRecentSearch);\r\n\r\n this.listenTo(this.searchContext, 'change:filterValue', this.renderSearchContext);\r\n this.listenTo(SharedServiceChannels.CONTEXTUAL_SEARCH, 'reset:search:context', this.onResetSearchContext);\r\n }\r\n\r\n /**\r\n * View Cache management\r\n */\r\n private getOrCacheView(id: string, options: ObjectHash): Core.Component {\r\n const { ctor, viewOptions } = options;\r\n\r\n if (this.viewCache[id])\r\n return this.viewCache[id];\r\n\r\n return this.viewCache[id] = new ctor(viewOptions);\r\n }\r\n\r\n private clearViewCache(): void {\r\n _.each(this.viewCache, (view: Core.Component) => view.destroy());\r\n this.viewCache = {};\r\n }\r\n\r\n private getDynamicTemplate(sourceName: string): any {\r\n // Using a custom view for recent search results to properly handle remove events.\r\n if (sourceName === SearchTypes.Recent)\r\n return (recentSearch: string) => {\r\n\r\n const view = this.getOrCacheView(`recent:${recentSearch}`, {\r\n ctor: ViewTemplates.RecentSearchResultComponent,\r\n viewOptions: {\r\n model: new Core.Model({ name: recentSearch }),\r\n channelName: this.channelName\r\n }\r\n });\r\n return view.render().el;\r\n };\r\n\r\n if (sourceName === SearchQueryType.Classification)\r\n return (data: HashObject) => {\r\n const view = this.getOrCacheView(data.id, {\r\n ctor: ViewTemplates.ClassificationSearchResultComponent,\r\n viewOptions: { model: new Core.Model(data) }\r\n });\r\n return view.render().el;\r\n };\r\n\r\n // Using a custom view for video results to re-use existing components.\r\n if (sourceName === SearchQueryType.Video)\r\n return (data: HashObject) => {\r\n\r\n const view = this.getOrCacheView(data.id, {\r\n ctor: ViewTemplates.VideoSearchResultComponent,\r\n viewOptions: { model: new Core.Model(data) }\r\n });\r\n return view.render().el;\r\n };\r\n\r\n /**\r\n * TODO: When we evntually add folder search, it *must* follow the convention\r\n * of all other templates and use a view.\r\n *\r\n * \"But Why?\", you ask.\r\n *\r\n * Because the templates are created by typeahead on the fly, and it's super difficult to bind\r\n * an event handler to the anchor tag so that it can suppress the default\r\n * behaviour (which will mess with our applink and triggers a page load). So instead,\r\n * we create a view and allow it to mananage the click event for us.\r\n */\r\n if (sourceName === SearchQueryType.Folder)\r\n return Templates.FolderResult;\r\n\r\n // Using a custom view to ensure we correctly capture anchor events\r\n if (sourceName === SearchQueryType.Series)\r\n return (data: ObjectHash) => {\r\n\r\n const view = this.getOrCacheView(data.id, {\r\n ctor: ViewTemplates.SeriesSearchResultComponent,\r\n viewOptions: { model: new Core.Model(data) }\r\n });\r\n return view.render().el;\r\n };\r\n\r\n // Using a custom view to ensure we correctly capture anchor events\r\n if (sourceName === SearchQueryType.Tags)\r\n return (data: ObjectHash) => {\r\n const view = this.getOrCacheView(data.id, {\r\n ctor: ViewTemplates.TagSearchResultComponent,\r\n viewOptions: { model: new Core.Model(data) }\r\n });\r\n return view.render().el;\r\n };\r\n }\r\n\r\n private getLimits(sourceName: string): number {\r\n if (sourceName === SearchQueryType.Folder)\r\n return SuggestionLimit.Folder;\r\n\r\n return SuggestionLimit.Folder;\r\n }\r\n\r\n /**\r\n * Recent search logic\r\n */\r\n\r\n private updateSearchHistory(options: ObjectHash): string[] {\r\n let { add, remove, query } = options;\r\n\r\n // Clean up query for consistency\r\n query = query.trim();\r\n\r\n const recentSearches = RecentSearchHelper.updateRecentSearches(this.recentSearchKey, this.storageHelper, {\r\n add, remove, query, limit: SuggestionLimit.Recent\r\n });\r\n\r\n // Update the Bloodhound locals cache\r\n this.recentSearchEngine.clear();\r\n this.recentSearchEngine.add(recentSearches);\r\n\r\n return recentSearches;\r\n }\r\n\r\n private handleRecentSearch(options: ObjectHash = {}): void {\r\n if (!this.options.showRecentSearch)\r\n return;\r\n\r\n const query = this.getUI('input').typeahead('val');\r\n\r\n if (!query) {\r\n const recentSearches = RecentSearchHelper.getRecentSearches<string>(this.recentSearchKey, this.storageHelper);\r\n\r\n // With an empty query, only show recent searches if we have some previously saved.\r\n if (recentSearches.length)\r\n return;\r\n\r\n // Hide the typeahead menu, so we don't see the empty div at the bottom\r\n this.$el.find('.tt-menu').addClass('hide-results');\r\n return;\r\n }\r\n\r\n /**\r\n * Where there is a query, show all results.\r\n * Recent searches will not be returned from the bloodhound search handler,\r\n * so they won't be rendered.\r\n */\r\n this.$el.find('.tt-menu').removeClass('hide-results');\r\n }\r\n\r\n private onDeleteRecentSearch(recentSearch: string): boolean {\r\n const recentList = this.updateSearchHistory({ remove: true, query: recentSearch });\r\n\r\n // Remove then entire element once we have removed all recent items\r\n if (!recentList.length) {\r\n this.$el.find('.tt-dataset-recent-searches').empty();\r\n this.handleRecentSearch();\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private getInstantSearchAppLink(suggestion: ObjectHash, source: any): Core.AppLink {\r\n if (source === SearchQueryType.Series)\r\n return {\r\n ...this.appVariables.appLinks.series,\r\n args: [suggestion.id]\r\n };\r\n\r\n if (source === SearchQueryType.Video) {\r\n const args = [suggestion.id];\r\n\r\n if (this.appVariables.addSlugs)\r\n args.push(TextHelper.slugify(suggestion.name));\r\n\r\n return { ...this.appVariables.appLinks.videoDetails, args };\r\n }\r\n\r\n if (source === SearchQueryType.Tags)\r\n return {\r\n ...this.appVariables.appLinks.tagSearch,\r\n params: { tag: suggestion.name }\r\n };\r\n\r\n if (source === SearchQueryType.Classification)\r\n return {\r\n ...this.appVariables.appLinks.classification,\r\n args: [suggestion.id]\r\n };\r\n }\r\n\r\n /**\r\n * Typeahead event handlers\r\n */\r\n private onTypeaheadSelect(event: any, suggestion: string | ObjectHash, source: any): boolean {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n\r\n this.clearViewCache();\r\n\r\n // All instant search result models from elastic will have ids, so we know to trigger an applink.\r\n if (typeof suggestion === 'object' && suggestion.id) {\r\n const appLink = this.getInstantSearchAppLink(suggestion, source);\r\n\r\n if (!appLink) return false;\r\n\r\n const { data , action } = AnalyticsHelper.buildInstantSearchEvent(this.model.get('query'), suggestion, source);\r\n Analytics.log(UserAction.InstantSearch, data, action);\r\n\r\n this.model.clear();\r\n this.getUI(`input`).typeahead('close');\r\n\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('reset:search:context');\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n\r\n return false;\r\n }\r\n\r\n // Go to search page for direct and recent searches\r\n let query = (typeof suggestion === 'string') ? suggestion : suggestion.query;\r\n\r\n this.model.set({ query });\r\n\r\n const descriptor = source === SearchTypes.Recent ?\r\n DirectSearchDescriptor.Recent :\r\n DirectSearchDescriptor.ShowAll;\r\n\r\n this.submitQuery(descriptor);\r\n\r\n return false;\r\n }\r\n\r\n private onClickSearch(e: JQuery.Event): boolean {\r\n e.stopPropagation();\r\n\r\n this.submitQuery(DirectSearchDescriptor.SearchIcon);\r\n\r\n return false;\r\n }\r\n\r\n private onSubmit(e: JQuery.Event): boolean {\r\n e.preventDefault();\r\n\r\n this.submitQuery(DirectSearchDescriptor.Submit);\r\n\r\n return false;\r\n }\r\n\r\n private submitQuery(descriptor?: ActionDescriptor): void {\r\n /**\r\n * We update the initial query so that when the query is reset\r\n * onTypeahead close, the query won't change.\r\n */\r\n this.updateInitialQuery();\r\n\r\n const query = this.model.get('query');\r\n\r\n if (!query) return;\r\n\r\n this.logSearch(query, descriptor);\r\n\r\n this.updateSearchHistory({ add: true, query });\r\n\r\n this.preventToggleEvent = true;\r\n this.getUI(`input`).typeahead('close');\r\n\r\n const contextualSearchParams = SearchHelper.getContextualSearchQueryParams(this.searchContext);\r\n\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('reset:search:context');\r\n\r\n // Navigate to search results\r\n Core.AppLinkHelper.trigger({\r\n ...this.appVariables.appLinks.searchResults,\r\n params: {\r\n query,\r\n ...contextualSearchParams\r\n }\r\n });\r\n }\r\n\r\n private resetQuery(): void {\r\n this.model.set({ query: this.model.get('initialQuery') });\r\n }\r\n\r\n private updateInitialQuery(): void {\r\n this.model.set({ initialQuery: this.model.get('query') });\r\n }\r\n\r\n private logSearch(query: string, descriptor: ActionDescriptor): void {\r\n const { data, action } = AnalyticsHelper.buildSearchEvent(query, descriptor);\r\n Analytics.log(UserAction.Search, data, action);\r\n }\r\n\r\n /**\r\n * When the user clicks away from the typeahead, the close event will be fired, unbinding the delete\r\n * event for recent search. Re-selecting the typehead will open it BUT it won't re-fetch the results and\r\n * render event won't be fired. We need to manually re-bind the click handlers to ensure the delete\r\n * functionality is retained.\r\n */\r\n private onTypeaheadOpen(event: JQuery.Event): void {\r\n this.$('.twitter-typeahead').css({ position: 'static' });\r\n this.showMask();\r\n\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('typeahead:toggle', { open: true });\r\n /**\r\n * After page loading into the search app, the query will remain in the search bar.\r\n * We want to ensure that when the user opens the search bar again that it actually\r\n * fetches the instant results. This will only fire the first time, with typeahead caching\r\n * the result.\r\n */\r\n const query = this.model.get('query');\r\n if (query && query.length >= TypeaheadConfiguration.ActivationLength)\r\n this.getUI('input').typeahead('val', query);\r\n\r\n this.alignTypeahead();\r\n }\r\n\r\n private onBeforeTypeaheadClose(event: JQuery.Event): void {\r\n if (!this.searchContext.get('preventTypeaheadClose'))\r\n return;\r\n\r\n event.preventDefault();\r\n this.getUI('input').focus();\r\n }\r\n\r\n private onTypeaheadClose(): void {\r\n this.hideMask();\r\n this.handleRecentSearch();\r\n\r\n if (!this.preventToggleEvent) {\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('typeahead:toggle', { open: false });\r\n }\r\n }\r\n\r\n private showMask(): void {\r\n if (this.options.disableMask)\r\n return;\r\n\r\n this.$el.addClass('active');\r\n MaskHelper.showMask();\r\n }\r\n\r\n private hideMask(): void {\r\n if (this.options.disableMask)\r\n return;\r\n\r\n MaskHelper.hideMask();\r\n }\r\n\r\n private alignTypeahead(): void {\r\n const typeahead = $('.tt-menu');\r\n if (!this.searchContext.get('title')) {\r\n if (typeahead.hasClass('typeahead-shift')) {\r\n typeahead.removeClass('typeahead-shift');\r\n }\r\n\r\n return;\r\n }\r\n\r\n typeahead.addClass('typeahead-shift');\r\n }\r\n\r\n private onTypeaheadRender(event: string, suggestions: any, async: boolean, dataset: any): void {\r\n if (dataset !== SearchTypes.Recent)\r\n return;\r\n\r\n this.handleRecentSearch();\r\n }\r\n\r\n private initTypeaheadListeners(): void {\r\n const input = this.getUI('input');\r\n\r\n input.on('typeahead:select', _.bind(this.onTypeaheadSelect, this));\r\n input.on('typeahead:render', _.bind(this.onTypeaheadRender, this));\r\n input.on('typeahead:beforeclose', _.bind(this.onBeforeTypeaheadClose, this));\r\n input.on('typeahead:close', _.bind(this.onTypeaheadClose, this));\r\n input.on('typeahead:open', _.bind(this.onTypeaheadOpen, this));\r\n }\r\n\r\n private initNoLibrariesTypeaheadListeners(): void {\r\n const input = this.getUI('input');\r\n\r\n input.on('typeahead:open', _.bind(this.showMask, this));\r\n input.on('typeahead:close', _.bind(this.hideMask, this));\r\n\r\n // The only option is to add a new library, so trigger the applink to create a library\r\n input.on('typeahead:select', _.bind(() => {\r\n Core.AppLinkHelper.trigger(this.appVariables.appLinks.newLibrary);\r\n }, this));\r\n }\r\n\r\n private onKeydown(e: JQuery.Event): void {\r\n if (e.keyCode !== 8 || this.model.get('query'))\r\n return;\r\n\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('reset:search:context');\r\n }\r\n\r\n private onResetSearchContext(options?: ObjectHash): void {\r\n if (options && options.focus)\r\n this.getUI('input').focus();\r\n\r\n $('.tt-menu').removeClass('typeahead-shift');\r\n\r\n this.renderSearchContext();\r\n }\r\n\r\n /**\r\n * Bloodhound & Typeadhead configs\r\n */\r\n\r\n private getRecentSearchBloodhound(): Bloodhound<string> {\r\n const recentSearches = RecentSearchHelper.getRecentSearches<string>(this.recentSearchKey, this.storageHelper);\r\n\r\n return new Bloodhound({\r\n datumTokenizer: Bloodhound.tokenizers.whitespace,\r\n queryTokenizer: Bloodhound.tokenizers.whitespace,\r\n local: recentSearches\r\n });\r\n }\r\n\r\n private getDynamicBloodhoundConfig(): BloodhoundConfigHandler<any> {\r\n return InstantSearchHelper.bloodhoundConfig;\r\n }\r\n\r\n private getDynamicTypeaheadConfig(): TypeaheadConfigHandler<any> {\r\n const headerPartial = TypeaheadHelper.getTemplate(Templates.ResultHeader, {\r\n fallbackTemplate: Templates.NotFound\r\n });\r\n\r\n\r\n const pendingPartial = TypeaheadHelper.getTemplate(Templates.Loading, {\r\n fallbackTemplate: Templates.NotFound,\r\n templateText: LanguageService.getPhrase(this.lang, 'findingResults')\r\n });\r\n\r\n return (source: InstantSearchBloodhound<any>, index: number) => ({\r\n name: this.getConfigName(source.name),\r\n source: TypeaheadHelper.handleQuery(source.bloodhound, { fetchType: BloodhoundType.Remote }),\r\n limit: this.getLimits(source.name),\r\n display: (d: ObjectHash) => d.name,\r\n async: true,\r\n templates: {\r\n header: headerPartial,\r\n pending: index === 0 ? pendingPartial : Templates.NotFound,\r\n notFound: Templates.NotFound,\r\n suggestion: this.getDynamicTemplate(source.name),\r\n footer: Templates.ResultFooter\r\n }\r\n });\r\n }\r\n\r\n private getConfigName(type: string): string {\r\n switch (type) {\r\n case SearchQueryType.Classification:\r\n return LanguageService.getPhrase(this.lang, 'classifications');\r\n case SearchQueryType.Video:\r\n return LanguageService.getPhrase(this.lang, 'videos');\r\n case SearchQueryType.Tags:\r\n return LanguageService.getPhrase(this.lang, 'tags');\r\n case SearchQueryType.Series:\r\n return LanguageService.getPhrase(this.lang, 'series');\r\n }\r\n\r\n return type;\r\n }\r\n\r\n private getDynamicOptions(): ObjectHash {\r\n return {\r\n libraryIds: this.getLibraryIds().join(','),\r\n model: this.searchContext,\r\n presentationId: this.options.presentationId\r\n };\r\n }\r\n\r\n /**\r\n * Typeahead sources\r\n */\r\n private getRecentSearchSources(): TypeaheadConfig<string>[] {\r\n this.recentSearchEngine = this.getRecentSearchBloodhound();\r\n return [{\r\n name: SearchTypes.Recent,\r\n source: TypeaheadHelper.handleQuery(this.recentSearchEngine, {\r\n fetchType: BloodhoundType.Local,\r\n ignoreOnQuery: true\r\n }),\r\n limit: SuggestionLimit.Default,\r\n templates: {\r\n header: () => Templates.RecentSearchHeader({ templateText: LanguageService.getPhrase(this.lang, 'recentSearches') }),\r\n suggestion: this.getDynamicTemplate(SearchTypes.Recent)\r\n }\r\n }];\r\n }\r\n\r\n private getDirectSearchSources(): TypeaheadConfig<string>[] {\r\n return [{\r\n name: SearchTypes.Direct,\r\n source: TypeaheadHelper.handleQuery(),\r\n display: (d: any) => d.query,\r\n templates: {\r\n suggestion: TypeaheadHelper.getTemplate(Templates.DirectSearchResult, {\r\n fallbackTemplate: Templates.NotFound,\r\n templateText: LanguageService.getPhrase(this.lang, 'allResults')\r\n }),\r\n footer: Templates.ResultFooter\r\n }\r\n }];\r\n }\r\n\r\n private getDynamicSearchSources(): TypeaheadConfig<Series | Video | Folder | Tag>[] {\r\n const bloodhoundConfig = this.getDynamicBloodhoundConfig();\r\n const typeaheadConfig = this.getDynamicTypeaheadConfig();\r\n const options = this.getDynamicOptions();\r\n\r\n return TypeaheadHelper.getSearchSources<Series | Video | Folder | Tag | Classification>([\r\n { name: SearchQueryType.Classification, bloodhoundConfig, typeaheadConfig, options },\r\n { name: SearchQueryType.Series, bloodhoundConfig, typeaheadConfig, options },\r\n { name: SearchQueryType.Folder, bloodhoundConfig, typeaheadConfig, options },\r\n { name: SearchQueryType.Video, bloodhoundConfig, typeaheadConfig, options },\r\n { name: SearchQueryType.Tags, bloodhoundConfig, typeaheadConfig, options }\r\n ]);\r\n }\r\n\r\n private getSources(): TypeaheadConfig<any>[] {\r\n const sources = [\r\n ...this.getDirectSearchSources(),\r\n ...this.getDynamicSearchSources(),\r\n ];\r\n\r\n if (this.options.showRecentSearch)\r\n sources.push(...this.getRecentSearchSources());\r\n\r\n return sources;\r\n }\r\n\r\n private getNoLibrariesSource(): TypeaheadConfig<any>[] {\r\n return [\r\n {\r\n name: 'NoLibrary',\r\n source: TypeaheadHelper.handleQuery(),\r\n display: (d: any) => d.query,\r\n templates: {\r\n suggestion: TypeaheadHelper.getTemplate(Templates.NoLibraries, {\r\n fallbackTemplate: Templates.NotFound,\r\n templateText: LanguageService.getPhrase(this.lang, 'noLibraries')\r\n }),\r\n }\r\n }\r\n ];\r\n }\r\n\r\n private initializeTypeahead(sources: any[]): void {\r\n // Destroy current searchInput if it already exists\r\n if (this.searchInput) {\r\n this.searchInput.typeahead('destroy');\r\n this.searchInput.unbind();\r\n this.searchInput = null;\r\n }\r\n\r\n this.searchInput = this.getUI(`input`).typeahead({\r\n minLength: 0,\r\n highlight: true,\r\n hint: false,\r\n classNames: {\r\n menu: 'tt-menu rounded border'\r\n }\r\n }, sources);\r\n }\r\n\r\n private hasLibraries(): boolean {\r\n return !!this.libraryCollection.length;\r\n }\r\n\r\n private getLibraryIds(): string[] {\r\n return this.libraryCollection.map(lib => lib.id);\r\n }\r\n\r\n /**\r\n * Render methods\r\n */\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n svg: SvgHelper.getSvg(cvSvgLibrary.Search),\r\n showPartial: !this.libraryCollection || !this.currentUser || !this.libraryCollection,\r\n libraryText: (\r\n this.appVariables.searchBarPlaceholder\r\n || LanguageService.getPhrase(this.lang, 'placeholder', {\r\n smartCount: (this.libraryCollection && this.libraryCollection.length) || 1\r\n })\r\n )\r\n };\r\n }\r\n\r\n public get requiredResources(): Core.RequiredResourceHash {\r\n return {\r\n currentUser: UserDataServiceHelper.currentUser,\r\n libraryCollection: SharedLibraryDataServiceHelper.libraries\r\n };\r\n }\r\n\r\n private renderSearchTips(): void {\r\n this.showChildView('searchTips', new SearchTipsComponent());\r\n }\r\n\r\n private renderSearch(): void {\r\n this.stickit();\r\n this.initializeTypeahead(this.getSources());\r\n this.initTypeaheadListeners();\r\n Validation.bind(this);\r\n }\r\n\r\n private renderPartialSearch(): void {\r\n this.initializeTypeahead(this.getNoLibrariesSource());\r\n this.initNoLibrariesTypeaheadListeners();\r\n }\r\n\r\n private renderSearchContext(): void {\r\n if (!this.isRendered())\r\n return;\r\n\r\n this.showChildView('searchContext', new SearchContextComponent({\r\n model: this.searchContext\r\n }));\r\n }\r\n\r\n public onRender(): void {\r\n if (!this.hasLibraries()) {\r\n this.renderPartialSearch();\r\n return;\r\n }\r\n\r\n this.renderSearchTips();\r\n this.renderSearch();\r\n this.renderSearchContext();\r\n }\r\n\r\n public onClose(): void {\r\n this.getUI('input').off();\r\n this.unstickit();\r\n Validation.unbind(this);\r\n }\r\n}\r\n","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.searchBar : stack1), depth0))\n + \" partial-loading-background dark-partial\\\"></div>\";\n},\"useData\":true});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchBar\":\"cv--searchBar--2oChq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchSvgContainer\":\"cv--searchSvgContainer--1-crd\",\"tipsContainer\":\"cv--tipsContainer--15HAy\",\"searchInput\":\"cv--searchInput--1qca6\",\"searchBar\":\"cv--searchBar--3XQHi\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<div class=\\\"direct-search-suggestion p-2\\\"><span class=\\\"ignore-highlighting\\\">\"\n + alias5(((helper = (helper = helpers.templateText || (depth0 != null ? depth0.templateText : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"templateText\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n <span class=\\\"query-text\\\">\"\n + alias5(((helper = (helper = helpers.query || (depth0 != null ? depth0.query : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"query\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n</div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<div class=\\\"p-2\\\"><a href=\\\"\"\n + alias5(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias5(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \" - \"\n + alias5(((helper = (helper = helpers.libraryName || (depth0 != null ? depth0.libraryName : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"libraryName\",\"hash\":{},\"data\":data}) : helper)))\n + \"</a></div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"tt-pending p-2\\\">\\r\\n <div class=\\\"partial-text\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.templateText || (depth0 != null ? depth0.templateText : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"templateText\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n</div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"no-libraries-suggestion p-2\\\">\\r\\n <div class=\\\"ignore-highlighting\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.templateText || (depth0 != null ? depth0.templateText : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"templateText\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n</div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"tt-not-found\\\"></div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"suggestion-header text-uppercase font-weight-bold p-2\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.templateText || (depth0 != null ? depth0.templateText : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"templateText\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"suggestion-seperator border-bottom\\\"></div>\\r\\n\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"suggestion-header text-uppercase font-weight-bold px-2 pt-2 pb-1\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.dataset || (depth0 != null ? depth0.dataset : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"dataset\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\";\n},\"useData\":true});","import FolderResult from './FolderResult.hbs';\r\nimport DirectSearchResult from './DirectSearchResult.hbs';\r\nimport Loading from './Loading.hbs';\r\nimport NotFound from './NotFound.hbs';\r\nimport ResultFooter from './ResultFooter.hbs';\r\nimport ResultHeader from './ResultHeader.hbs';\r\nimport RecentSearchHeader from './RecentSearchHeader.hbs';\r\nimport NoLibraries from './NoLibraries.hbs';\r\n\r\nexport {\r\n FolderResult,\r\n DirectSearchResult,\r\n Loading,\r\n NotFound,\r\n ResultFooter,\r\n ResultHeader,\r\n RecentSearchHeader,\r\n NoLibraries\r\n};\r\n","export enum ClassificationMemberType {\r\n Playlists = 'playlists',\r\n Series = 'series',\r\n Videos = 'videos'\r\n}","import { Core } from 'libs/common/core';\r\n\r\nclass PendingItem extends Core.Model {\r\n public get idAttribute(): string {\r\n return 'masterVideoId';\r\n }\r\n}\r\n\r\nexport class PendingItemsCollection extends Core.Collection {\r\n public get model(): typeof PendingItem {\r\n return PendingItem;\r\n }\r\n}","export const UploadEventNames = {\r\n /**\r\n * This is fired when a file has finished uploading to file API. This event\r\n * has nothing to do with posting the uploaded resource to the respective repository.\r\n */\r\n UPLOAD_COMPLETE: 'upload:complete',\r\n\r\n /**\r\n * This is trigged when files are selected\r\n * from either the FileSelectBehavior or the FileDropBehavior\r\n */\r\n FILES_SELECTED: 'files:selected',\r\n\r\n /**\r\n * This triggered by the upload service when it received ingest urls for all\r\n * the files added via a call to UploadService.addFiles(files: File[])\r\n */\r\n FILES_ADDED: 'files:added',\r\n\r\n /**\r\n * This is fired when the user cancels their own upload\r\n */\r\n UPLOAD_CANCELLED: 'upload:cancelled',\r\n\r\n /**\r\n * Name is self explanitory. This is only used internally by children\r\n * of BasePendingItemsService at the moment\r\n */\r\n PENDING_ITEM_READY_TO_WATCH: 'pending:item:ready:to:watch',\r\n\r\n /**\r\n * Fired when we know that the pending items in args has changed status\r\n * or that it's foreground progress has been completed.\r\n */\r\n PENDING_ITEM_STATUS_CHANGE: 'pending:item:status:change',\r\n\r\n /**\r\n * This is fired when the user cancels processing a recently uploaded video\r\n */\r\n PROCESSING_CANCELLED: 'processing:cancelled',\r\n\r\n /**\r\n * Fired when all uploads are finished or when uploading is cancelled. Unlocks navigation\r\n */\r\n UNLOCK_NAV: 'upload:unlock:nav'\r\n};","export enum FileLifestyle {\r\n Permanent = 0,\r\n Temporary = 1\r\n}","export enum PendingItemStatus {\r\n Error = -1,\r\n Processing = 1,\r\n Completed = 2\r\n}","import { DialogError } from 'libs/shared/errors/primitives/DialogError';\r\nimport { DialogOptions } from 'libs/shared/interfaces';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\n/**\r\n * TODO: Create a more useful message here.\r\n * Perhaps using the mime types listen on MDN\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\r\n * or in the list of all the official mime types\r\n * https://www.iana.org/assignments/media-types/media-types.xhtml\r\n */\r\nexport class FileTypeError extends DialogError {\r\n constructor(message: string, files: File[], acceptedFiles: string) {\r\n super(message);\r\n }\r\n\r\n public get name(): string {\r\n return 'FileTypeError';\r\n }\r\n\r\n public get lang(): string {\r\n return 'upload.fileType';\r\n }\r\n\r\n public get dialogOptions(): DialogOptions {\r\n return {\r\n title: LanguageService.getPhrase(this.lang, 'heading'),\r\n text: LanguageService.getPhrase(this.lang, 'body'),\r\n buttons: [{\r\n text: LanguageService.getPhrase(this.lang, 'okay'),\r\n className: 'btn btn-primary',\r\n success: true\r\n }, {\r\n text: LanguageService.getPhrase(this.lang, 'close'),\r\n className: 'btn btn-link',\r\n close: true\r\n }]\r\n };\r\n }\r\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\r\nimport { DialogOptions } from 'libs/shared/interfaces';\r\n\r\nconst lang = 'upload.internetConnectivityError';\r\n\r\nexport class InternetConnectivityError extends DialogError {\r\n constructor() {\r\n super(LanguageService.getPhrase(lang, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'InternetConnectivityError';\r\n }\r\n\r\n public get dialogOptions(): DialogOptions {\r\n return {\r\n title: LanguageService.getPhrase(lang, 'heading'),\r\n text: LanguageService.getPhrase(lang, 'body'),\r\n buttons: [{\r\n text: LanguageService.getPhrase(lang, 'okay'),\r\n className: 'btn',\r\n success: true\r\n }]\r\n };\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { PendingItemsCollection } from 'libs/shared/apps/upload/collections/PendingItemsCollection';\r\nimport { PendingItemStatus } from 'libs/shared/apps/upload/enums/PendingItemStatus';\r\nimport { BaseVideoDataService, BaseVideoUploadDataService } from 'libs/shared/interfaces';\r\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\r\nimport { SharedServices, SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\n\r\ninterface FetchPendingItemsOptions {\r\n resetTimeout: boolean;\r\n callback?: () => void;\r\n}\r\n\r\nexport class BasePendingItemsService extends Core.Service {\r\n private pendingItems: Core.Collection;\r\n\r\n private videoDataService: BaseVideoDataService<Core.Collection>;\r\n private videoUploadDataService: BaseVideoUploadDataService;\r\n\r\n public get name(): string {\r\n return SharedServices.PendingItems;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedServiceChannels.PENDING_ITEMS;\r\n }\r\n\r\n public initialize(): void {\r\n this.videoDataService = InstanceManager.getInstance(SharedDataServices.Video, this);\r\n this.videoUploadDataService = InstanceManager.getInstance(SharedDataServices.VideoUpload, this);\r\n }\r\n\r\n public clearPendingItem(model: Core.Model, callback?: () => void): void {\r\n switch (model.get('pendingProcessStatus')){\r\n case PendingItemStatus.Completed:\r\n case PendingItemStatus.Error:\r\n this.videoUploadDataService.clearPendingItems([model.get('pendingProcessId')], () => {\r\n model.set('clearing', true);\r\n model.collection.remove(model);\r\n this.updateViewModel();\r\n this.videoDataService.clearVideoCache();\r\n if (_.isFunction(callback))\r\n callback();\r\n });\r\n break;\r\n case PendingItemStatus.Processing:\r\n this.videoUploadDataService.cancelPendingItems([model.get('pendingProcessId')], () => {\r\n model.set('clearing', true);\r\n model.collection.remove(model);\r\n this.videoDataService.clearVideoCache();\r\n this.updateViewModel();\r\n if (_.isFunction(callback))\r\n callback();\r\n });\r\n }\r\n }\r\n\r\n public forceFetchPendingItems(options?: FetchPendingItemsOptions): void {\r\n this.fetchPendingItems(options);\r\n }\r\n\r\n public retryPendingItem(model: Core.Model, callback?: () => void): void {\r\n this.videoUploadDataService.retryPendingItems([model.get('pendingProcessId')], () => {\r\n this.fetchPendingItems({ resetTimeout: false, callback });\r\n });\r\n }\r\n\r\n private itemStatusChanged(): void {\r\n /**\r\n * At this point in time, we know that the pending items in args has changed status\r\n * or that it's foreground progress has been completed.\r\n */\r\n const channel = Radio.channel(this.channelName);\r\n channel.trigger(UploadEventNames.PENDING_ITEM_STATUS_CHANGE);\r\n this.videoDataService.clearVideoCache();\r\n }\r\n\r\n public getPendingItems(): Core.Collection {\r\n if (this.pendingItems)\r\n return this.pendingItems;\r\n\r\n this.pendingItems = new PendingItemsCollection();\r\n\r\n this.listenTo(this.pendingItems, 'change:foregroundComplete', (model: Core.Model) => {\r\n if (!model.get('foregroundComplete'))\r\n return;\r\n\r\n this.itemStatusChanged();\r\n\r\n const video = model.get('video');\r\n\r\n if (!video)\r\n return;\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.PENDING_ITEM_READY_TO_WATCH, model);\r\n });\r\n\r\n this.listenTo(this.pendingItems, 'remove', (model: Core.Model) => {\r\n /**\r\n * Whenever we're manually removing a model from the pending items collection\r\n * we put the clearing attribute on the model, so that we don't clear the\r\n * video cache and refetch our videos.\r\n */\r\n if (model.get('clearing'))\r\n return;\r\n\r\n this.videoUploadDataService.getPendingItem(model.get('pendingProcessId'), (result: Core.Model) => {\r\n if (result.get('status') !== PendingItemStatus.Completed)\r\n return;\r\n\r\n this.itemStatusChanged();\r\n });\r\n });\r\n\r\n this.fetchPendingItems();\r\n\r\n return this.pendingItems;\r\n }\r\n\r\n private fetchPendingItems(options: FetchPendingItemsOptions = { resetTimeout: true }): void {\r\n /**\r\n * If this service has been destroyed, stop polling\r\n */\r\n if (this.isDestroyed())\r\n return;\r\n\r\n /**\r\n * Fetch pending items\r\n */\r\n this.videoUploadDataService.getPendingItems((pendingItems: any[]) => {\r\n\r\n /**\r\n * Pull out master video ids\r\n */\r\n const videoIds = _.map(pendingItems, p => p.masterVideoId.toString());\r\n\r\n const getVideosCallback = (videos: Core.Collection) => {\r\n\r\n /**\r\n * Map pending items to master videos\r\n */\r\n _.each(pendingItems, p => {\r\n const video = videos.get(p.masterVideoId);\r\n\r\n if (!video)\r\n return;\r\n\r\n p.video = video;\r\n\r\n if (p.foregroundProgress >= 100 && video.get('status') === CurationStatus.Processing)\r\n video.set('status', CurationStatus.Published);\r\n });\r\n\r\n this.pendingItems.set(pendingItems);\r\n this.updateViewModel();\r\n\r\n if (options.resetTimeout) {\r\n window.setTimeout(_.bind(this.fetchPendingItems, this), this.getTimeoutLength());\r\n }\r\n\r\n if (_.isFunction(options.callback)) {\r\n options.callback();\r\n }\r\n };\r\n\r\n /**\r\n * Don't pointlessly fetch with no videoids\r\n */\r\n if (!videoIds.length) {\r\n getVideosCallback(new Core.Collection());\r\n return;\r\n }\r\n\r\n this.videoDataService.getVideos(videoIds, getVideosCallback);\r\n });\r\n }\r\n\r\n private updateViewModel(): void {\r\n const model: Core.Model = ViewModelService.get('process:progress');\r\n\r\n if (!this.pendingItems || !this.pendingItems.length) {\r\n model.set({ progress: 0, items: 0 });\r\n return;\r\n }\r\n\r\n const notErrored = this.pendingItems.where((p: Core.Model) => p.get('pendingProcessStatus') >= 0);\r\n\r\n let progress = 0;\r\n\r\n _.each(notErrored, p => progress += p.get('foregroundProgress'));\r\n\r\n const totalProgress = notErrored.length * 100;\r\n\r\n model.set({\r\n progress: Math.round((progress / totalProgress) * 100),\r\n items: this.pendingItems.length,\r\n hasErrors: this.pendingItems.length !== notErrored.length\r\n });\r\n }\r\n\r\n /**\r\n * Fetch every 5 seconds if any items are processing,\r\n * otherwise fetch every 30 seconds.\r\n */\r\n private getTimeoutLength(): number {\r\n const processingItems = this.pendingItems.any(p => p.get('pendingProcessStatus') === PendingItemStatus.Processing);\r\n return processingItems ? 5000 : 30000;\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport * as Dropzone from 'dropzone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { InternetConnectivityError } from 'libs/shared/apps/upload/errors/internet-connectivity/InternetConnectivityError';\r\nimport { AlertError } from 'libs/shared/errors/primitives/AlertError';\r\n\r\nexport interface UploadApiWrapperOptions extends Core.ServiceOptions {\r\n maxFileSize: number;\r\n chunkSize: number;\r\n chunkingEnabled: boolean;\r\n loggingEnabled: boolean;\r\n acceptedFiles: string;\r\n channelName: string;\r\n}\r\n\r\nexport interface UploadApiWrapper {\r\n addFile(file: File): void;\r\n destroy(): void;\r\n start(): void;\r\n getId(file: File): string;\r\n removeFile(file: File): void;\r\n}\r\n\r\nconst dropzoneEvents: string[] = [\r\n // 'uploadprogress', 'totaluploadprogress',\r\n // 'addedfile', 'removedfile', 'thumbnail', 'error', 'processing',\r\n // 'sending', 'success', 'complete', 'addedfile',\r\n // 'maxfilesreached', 'maxfilesexceeded', 'processingmultiple',\r\n // 'sendingmultiple', 'completemultiple', 'canceledmultiple',\r\n // 'reset', 'queuecomplete'\r\n];\r\n\r\nexport class DropzoneWrapper extends Core.Service implements UploadApiWrapper {\r\n private dropzone: Dropzone;\r\n public options: UploadApiWrapperOptions;\r\n\r\n public get name(): string {\r\n return 'DropzoneWrapper';\r\n }\r\n\r\n constructor(options: UploadApiWrapperOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(options: UploadApiWrapperOptions): void {\r\n const { loggingEnabled } = this.options;\r\n\r\n const uploadChannel = Radio.channel(options.channelName);\r\n\r\n /**\r\n * Thought I wouldn't see this in any of our TS\r\n * Guess I was wrong - sha\r\n */\r\n const self = this;\r\n\r\n this.dropzone = new Dropzone(document.createElement('div'), {\r\n url: ((files: Dropzone.DropzoneFile[]) => {\r\n const file = files[0] as any;\r\n\r\n const { ingestUrl } = file.cvUpload;\r\n\r\n return ingestUrl;\r\n }) as any,\r\n\r\n chunking: this.options.chunkingEnabled,\r\n chunkSize: this.options.chunkSize,\r\n forceChunking: true,\r\n autoProcessQueue: true,\r\n maxFilesize: this.options.maxFileSize,\r\n acceptedFiles: this.options.acceptedFiles,\r\n paramName: 'content',\r\n\r\n init: function (): void {\r\n if (!loggingEnabled)\r\n return;\r\n\r\n _.each(dropzoneEvents, (eventName: string) => {\r\n this.on(eventName, (...args: any[]) => {\r\n const file = args[0] instanceof File ? args[0].name : args[0];\r\n console.info(eventName, file, args);\r\n });\r\n });\r\n\r\n this.on('uploadprogress', (file: File, percentage: number, totalBytes: number) => {\r\n const progress = totalBytes / file.size * 100;\r\n uploadChannel.trigger('progress', self.getId(file), progress, totalBytes);\r\n });\r\n\r\n this.on('success', (file: File) => {\r\n /**\r\n * This is sort of a hack. It assumes the last chunk will be the last chunk that is uploaded\r\n * which may not necessarily be the case\r\n */\r\n const chunks = (file as any).upload.chunks;\r\n\r\n const lastChunk = _.last(chunks) as any;\r\n\r\n let xhr = lastChunk.xhr;\r\n\r\n if (!xhr)\r\n xhr = lastChunk.file.xhr;\r\n\r\n const response = JSON.parse(xhr.response);\r\n\r\n (file as any).cvUpload.fileUrl = response.url;\r\n\r\n uploadChannel.trigger('upload:success', file, response);\r\n });\r\n\r\n this.on('error', (file: File, messageObj: ObjectHash, xhr: XMLHttpRequest) => {\r\n if (xhr && xhr.status === 0) {\r\n Core.ErrorHelper.throw(new InternetConnectivityError());\r\n return;\r\n }\r\n\r\n /**\r\n * Don't throw if the error was caused by canceling\r\n * the chunk upload. this will happen when the user cancels\r\n * an upload themselves.\r\n */\r\n if ((file as Dropzone.DropzoneFile).status !== 'canceled')\r\n Core.ErrorHelper.throw(\r\n new AlertError(LanguageService.getPhrase('upload.services', 'uploadError', {\r\n fileName: file.name,\r\n message: messageObj.message\r\n }))\r\n );\r\n });\r\n },\r\n\r\n params: (files: Dropzone.DropzoneFile[], xhr: XMLHttpRequest, chunk: any) => {\r\n if (!chunk)\r\n return;\r\n\r\n return {\r\n chunk_index: chunk.index,\r\n upload_length: chunk.file.size,\r\n };\r\n },\r\n\r\n /**\r\n * These methods are here to disable Dropzone's UI related features\r\n */\r\n addedfile: () => {},\r\n thumbnail: () => {},\r\n uploadprogress: () => {},\r\n });\r\n }\r\n\r\n public getId(file: File): string {\r\n return (file as any).upload.uuid;\r\n }\r\n\r\n public addFile(file: Dropzone.DropzoneFile): void {\r\n this.dropzone.addFile(file);\r\n }\r\n\r\n public removeFile(file: Dropzone.DropzoneFile): void {\r\n this.dropzone.removeFile(file);\r\n }\r\n\r\n public start(): void {\r\n this.dropzone.processQueue();\r\n }\r\n\r\n public destroy(): void {\r\n this.dropzone.destroy();\r\n }\r\n\r\n public static isValidFile(file: File, acceptedFiles: string): boolean {\r\n /**\r\n * For Whatever reason the typings for Dropzone don't have isValidFile\r\n * but it's definitely there: \r\n * https://github.com/enyo/dropzone/blob/v5.5.0/dist/dropzone.js#L3157\r\n */\r\n return (Dropzone as any).isValidFile(file, acceptedFiles);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\nimport { Caches } from 'libs/common/backbone/constants/Caches';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nimport { FileLifestyle } from 'libs/shared/apps/upload/enums/FileLifestyle';\r\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\nimport { FileTypeError } from 'libs/shared/apps/upload/errors/file-type/FileTypeError';\r\nimport { UploadApiWrapper, DropzoneWrapper } from './DropzoneWrapper';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { EntityType, UserAction, WorkflowPhase, OperationDescriptor, AnalyticsOptions, LocationContext } from 'libs/analytics/interfaces';\r\n\r\n/**\r\n * This data service is locally private and is only\r\n * used by the UploadService to request/cancel uploads from\r\n * FileApi\r\n */\r\nclass UploadDataService extends BaseDataService {\r\n constructor() {\r\n super({\r\n dataProvider: InstanceManager.getInstance(DataProviders.Ajax),\r\n cache: InstanceManager.getInstance(Caches.Fifo),\r\n alertService: InstanceManager.getInstance(CommonServices.ALERT)\r\n });\r\n }\r\n\r\n public get name(): string {\r\n /**\r\n * This string is not in DataServices because this data service is private.\r\n */\r\n return 'UploadDataService';\r\n }\r\n\r\n /**\r\n * This is not sitting in RadioChannels\r\n * because it is only used in this file\r\n */\r\n public get channelName(): string {\r\n return 'private:upload:data:service';\r\n }\r\n\r\n public requestUploads(\r\n files: File[],\r\n fileLifestyle: FileLifestyle,\r\n fileCallback: (file: File, response: any) => void,\r\n callback: () => void\r\n ): void {\r\n const chain = this.chain();\r\n\r\n _.each(files, file => {\r\n chain.create({\r\n resource: '/api/upload',\r\n eventPrefix: 'request:upload',\r\n data: this.getFileUploadRequest(file, fileLifestyle),\r\n callback: (response: any) => {\r\n fileCallback(file, response);\r\n }\r\n });\r\n });\r\n\r\n chain.func(() => {\r\n callback();\r\n })\r\n .run();\r\n }\r\n\r\n public cancelUpload(uploadId: string, ingestUrl: string, callback?: (response: any) => void): void {\r\n this.create({\r\n resource: '/api/upload/cancel',\r\n eventPrefix: 'cancel:upload',\r\n data: {\r\n uploadId, ingestUrl\r\n },\r\n callback\r\n });\r\n }\r\n\r\n private getFileUploadRequest(file: File, fileLifestyle: FileLifestyle): HashObject {\r\n const splitName = file.name.split('.');\r\n\r\n /**\r\n * TODO: We may need to set the file permanence in file api to\r\n * permanent for resources and subtitles\r\n * Check what Prad/Cam say in\r\n * https://app.asana.com/0/720933954350984/735809491718142\r\n */\r\n return {\r\n name: splitName.join('.'),\r\n extension: splitName.length > 1 ? splitName.pop() : '',\r\n fileSize: file.size,\r\n fileLifestyle\r\n };\r\n }\r\n\r\n public onDestroy(): void {\r\n InstanceManager\r\n .releaseInstance(DataProviders.Ajax)\r\n .releaseInstance(Caches.Fifo);\r\n }\r\n}\r\n\r\n\r\nexport interface UploadItem extends Core.Model {\r\n file: File;\r\n name: string;\r\n progress: number;\r\n}\r\n\r\nexport enum UploadType {\r\n Video,\r\n LearningResource,\r\n Subtitle\r\n}\r\n\r\nconst AcceptedFiles = {\r\n [UploadType.Video]: 'video/*',\r\n [UploadType.LearningResource]: FileExtensions.RESOURCES,\r\n [UploadType.Subtitle]: FileExtensions.SUBTITLES\r\n};\r\n\r\nconst ChannelNames = {\r\n [UploadType.Video]: SharedServiceChannels.VIDEO_UPLOAD,\r\n [UploadType.LearningResource]: SharedServiceChannels.RESOURCE_UPLOAD,\r\n [UploadType.Subtitle]: SharedServiceChannels.SUBTITLE_UPLOAD\r\n};\r\n\r\nconst CHUNK_SIZE = 1024 * 1024 * 4; // 4mb\r\nconst MAX_FILE_SIZE = 1024 * 1024 * 1024 * 50; // 50gb\r\n\r\nclass UploadService extends Core.Service {\r\n protected uploadType: UploadType;\r\n protected fileLifestyle: FileLifestyle;\r\n\r\n protected uploader: UploadApiWrapper;\r\n\r\n private progressViewModel: Core.Model;\r\n\r\n private uploadDataService: UploadDataService;\r\n\r\n private collection: Core.Collection<UploadItem>;\r\n\r\n public initialize(): void {\r\n this.uploadDataService = new UploadDataService();\r\n\r\n this.progressViewModel = ViewModelService.get(`upload:progress:${this.uploadType}`);\r\n\r\n this.bindListeners();\r\n }\r\n\r\n public get channelName(): string {\r\n return ChannelNames[this.uploadType];\r\n }\r\n\r\n public get lang(): string {\r\n return 'upload.services';\r\n }\r\n\r\n /**\r\n * Dropzone is initialized once after the first upload is requested and it's chunk size\r\n * is set for the rest of the uploads. If we happen to have multiple ingest\r\n * servers that have different chunk max / min sizes, this may voilate those\r\n * sizes.\r\n */\r\n private initUploader(minChunkSize: number, maxChunkSize: number): void {\r\n if (this.uploader)\r\n return;\r\n\r\n let chunkSize = CHUNK_SIZE;\r\n\r\n if (minChunkSize && chunkSize < minChunkSize)\r\n chunkSize = minChunkSize;\r\n\r\n if (maxChunkSize && chunkSize > maxChunkSize)\r\n chunkSize = maxChunkSize;\r\n\r\n this.uploader = new DropzoneWrapper({\r\n chunkingEnabled: true,\r\n loggingEnabled: true,\r\n chunkSize,\r\n maxFileSize: MAX_FILE_SIZE,\r\n acceptedFiles: this.getAcceptedFiles(),\r\n channelName: this.channelName\r\n });\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.channelName, 'progress', this.onProgress);\r\n\r\n this.listenTo(this.channelName, 'upload:success', this.onSuccess);\r\n }\r\n\r\n private onProgress(id: string, percentage: number, totalUploaded: number): void {\r\n const model = this.collection.get(id);\r\n\r\n if (!model)\r\n return;\r\n\r\n model.set({\r\n progress: percentage > 100 ? 100 : percentage,\r\n totalUploaded\r\n });\r\n\r\n this.setOverallProgress();\r\n }\r\n\r\n public isUploading(): boolean {\r\n return !!this.getCollection().length;\r\n }\r\n\r\n public getCollection(): Core.Collection<UploadItem> {\r\n if (this.collection)\r\n return this.collection;\r\n\r\n this.collection = new Core.Collection<UploadItem>();\r\n return this.collection;\r\n }\r\n\r\n public setOverallProgress(): void {\r\n let totalUploaded = 0;\r\n let totalFileSize = 0;\r\n\r\n const collection = this.getCollection();\r\n\r\n if (!collection.length) {\r\n this.progressViewModel.set({ progress: 0 });\r\n return;\r\n }\r\n\r\n collection.each((model: Core.Model) => {\r\n totalUploaded += model.get('totalUploaded') || 0;\r\n totalFileSize += model.get('file').size || 0;\r\n });\r\n\r\n const percentage = totalUploaded / totalFileSize * 100;\r\n\r\n const done = percentage > 100;\r\n\r\n this.progressViewModel.set({\r\n progress: done ? 100 : percentage,\r\n done\r\n });\r\n }\r\n\r\n public isValidFile(file: File): boolean {\r\n return DropzoneWrapper.isValidFile(file, this.getAcceptedFiles());\r\n }\r\n\r\n /**\r\n * Request uploads from fileApi and starts uploading.\r\n * @param files Array of browser File objects\r\n * @returns Returns false if any of the files did not match the accepted file list.\r\n */\r\n public addFiles(files: File[], analyticsOptions?: AnalyticsOptions): void {\r\n if (_.any(files, file => !this.isValidFile(file))) {\r\n Core.ErrorHelper.throw(\r\n new FileTypeError(LanguageService.getPhrase(this.lang, 'invalidFileType'), files, this.getAcceptedFiles())\r\n );\r\n return;\r\n }\r\n\r\n this.requestUploads(files, analyticsOptions);\r\n }\r\n\r\n private requestUploads(files: File[], analyticsOptions?: AnalyticsOptions): void {\r\n const wasUploading = this.isUploading();\r\n\r\n const collection = this.getCollection();\r\n\r\n this.uploadDataService.requestUploads(files, this.fileLifestyle, (file: File, response: any) => {\r\n this.initUploader(response.minChunkSize * 1024, response.maxChunkSize * 1024);\r\n\r\n (file as any).cvUpload = {\r\n uploadId: response.uploadId,\r\n ingestUrl: response.ingestUrl\r\n };\r\n\r\n this.uploader.addFile(file);\r\n\r\n let fileName = file.name;\r\n\r\n // Remove file extension from filename if video\r\n if (this.uploadType === UploadType.Video)\r\n fileName = fileName.replace(/\\.[^/.]+$/, '');\r\n\r\n collection.add({\r\n id: this.uploader.getId(file),\r\n file,\r\n name: fileName\r\n }, { at: collection.length - 1 });\r\n }, () => {\r\n if (analyticsOptions) {\r\n AnalyticsHelper.logUserAction({\r\n uploadCount: files.length\r\n }, analyticsOptions);\r\n }\r\n\r\n const channel = Radio.channel(this.channelName);\r\n channel.trigger(UploadEventNames.FILES_ADDED, files, wasUploading);\r\n });\r\n }\r\n\r\n public addFile(file: File, analyticsOptions: AnalyticsOptions): void {\r\n this.addFiles([file], analyticsOptions);\r\n }\r\n\r\n public cancelUpload(id: string): void {\r\n const collection = this.getCollection();\r\n const model = collection.get(id);\r\n\r\n if (!model)\r\n return;\r\n\r\n const file = model.get('file') as any;\r\n\r\n this.uploader.removeFile(file);\r\n collection.remove(model);\r\n\r\n this.uploadDataService.cancelUpload(file.cvUpload.uploadId, file.cvUpload.ingestUrl, () => {\r\n AnalyticsHelper.logUserAction({\r\n id: file.cvUpload.uploadId\r\n }, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Upload,\r\n workflowPhase: WorkflowPhase.Discard,\r\n descriptor: OperationDescriptor.Single,\r\n location: LocationContext.MyUploads\r\n });\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.UPLOAD_CANCELLED);\r\n });\r\n\r\n this.setOverallProgress();\r\n }\r\n\r\n protected onSuccess(file: File, response: any): void {\r\n const fileId = this.uploader.getId(file);\r\n\r\n const upload = this.getCollection().get(fileId);\r\n\r\n upload.set('fileInfo', response);\r\n\r\n AnalyticsHelper.logUserAction({\r\n id: (file as any).cvUpload.uploadId\r\n }, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Upload,\r\n workflowPhase: WorkflowPhase.Complete,\r\n descriptor: OperationDescriptor.Single,\r\n location: LocationContext.VideoUpload\r\n });\r\n\r\n const channel = Radio.channel(this.channelName);\r\n channel.trigger(UploadEventNames.UPLOAD_COMPLETE, upload);\r\n }\r\n\r\n public cancelAllUploads(): void {\r\n /**\r\n * We're using model ids and _.each\r\n * instead of collection.each because this.cancelUpload\r\n * removes items from the collection which breaks collection.each\r\n */\r\n const models = this.getCollection().map(m => m.get('id'));\r\n _.each(models, m => this.cancelUpload(m));\r\n }\r\n\r\n protected getAcceptedFiles(): string {\r\n return AcceptedFiles[this.uploadType];\r\n }\r\n}\r\n\r\nexport class BaseVideoUploadService extends UploadService {\r\n protected get uploadType(): UploadType {\r\n return UploadType.Video;\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.VideoUpload;\r\n }\r\n\r\n public get fileLifestyle(): FileLifestyle {\r\n return FileLifestyle.Temporary;\r\n }\r\n}\r\n\r\nexport class SubtitleUploadService extends UploadService {\r\n protected get uploadType(): UploadType {\r\n return UploadType.Subtitle;\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.SubtitleUpload;\r\n }\r\n\r\n public get fileLifestyle(): FileLifestyle {\r\n return FileLifestyle.Permanent;\r\n }\r\n}\r\n\r\nexport class LearningResourceUploadService extends UploadService {\r\n protected get uploadType(): UploadType {\r\n return UploadType.LearningResource;\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.ResourceUpload;\r\n }\r\n\r\n public get fileLifestyle(): FileLifestyle {\r\n return FileLifestyle.Permanent;\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\n/**\r\n * This are kept as separate variables for when we eventually need a single group of them.\r\n * For example when we add image upload support.\r\n */\r\n\r\nconst pdfExtensions = ['pdf'];\r\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\r\nconst textExtensions = [ 'csv', 'txt' ];\r\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\r\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\r\nconst archiveExtensions = [ 'zip', 'rar' ];\r\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\r\n\r\nconst subtitleExtensions = ['srt'];\r\n\r\nconst FileExtensions = {\r\n IMAGES: `.${imageExtensions.join(',.')}`,\r\n RESOURCES: `.${[\r\n ...docExtensions,\r\n ...excelExtensions,\r\n ...powerPointExtensions,\r\n ...pdfExtensions,\r\n ...textExtensions,\r\n ...imageExtensions,\r\n ...archiveExtensions\r\n ].join(',.')}`,\r\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\r\n};\r\n\r\nconst FileExtensionHelper = {\r\n getResourceType(extension: string): string {\r\n const ext = extension.toLowerCase();\r\n\r\n if (_.contains(docExtensions, ext)) return 'document';\r\n if (_.contains(excelExtensions, ext)) return 'excel';\r\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\r\n if (_.contains(pdfExtensions, ext)) return 'pdf';\r\n\r\n if (_.contains(textExtensions, ext)) return 'text';\r\n if (_.contains(imageExtensions, ext)) return 'image';\r\n if (_.contains(archiveExtensions, ext)) return 'archive';\r\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\r\n\r\n return '';\r\n }\r\n};\r\n\r\nexport { FileExtensions, FileExtensionHelper };","import * as moment from 'moment';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { PendingItemStatus } from 'libs/shared/apps/upload/enums/PendingItemStatus';\r\n\r\nconst lang = 'upload.utils';\r\n\r\nconst PendingItemsHelper = {\r\n getStatus(model: Core.Model): string {\r\n /**\r\n * TODO: Get actual error messages from Prad\r\n */\r\n if (PendingItemsHelper.hasError(model))\r\n return LanguageService.getPhrase(lang, 'videoProcessingError');\r\n\r\n if (!model.get('foregroundComplete')) {\r\n const progress = PendingItemsHelper.getProgress(model);\r\n return progress === 0\r\n ? LanguageService.getPhrase(lang, 'waiting')\r\n : LanguageService.getPhrase(lang, 'processing', { progress });\r\n }\r\n\r\n if (PendingItemsHelper.isDone(model))\r\n return LanguageService.getPhrase(lang, 'complete');\r\n\r\n return LanguageService.getPhrase(lang, 'readyToWatch');\r\n },\r\n hasError(model: Core.Model): boolean {\r\n return model.get('pendingProcessStatus') === PendingItemStatus.Error;\r\n },\r\n isDone(model: Core.Model): boolean {\r\n return model.get('pendingProcessStatus') === 2;\r\n },\r\n getProgress(model: Core.Model): number {\r\n return model.get('foregroundProgress');\r\n },\r\n hasExpired(model: Core.Model, maxSessionLength: number): boolean {\r\n const uploadSessionCreationTime = model.get('timeInitialized');\r\n const currentTime = moment();\r\n\r\n // Returns true if the session is 7 days or older (expired).\r\n return currentTime.diff(uploadSessionCreationTime, 'days') >= maxSessionLength;\r\n }\r\n};\r\n\r\nexport { PendingItemsHelper };","import * as React from 'react';\r\nimport { BaseAlert, AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { AlertContent } from './AlertContent';\r\nimport styles from './alert.scss';\r\n\r\nconst ALERT_FADE_TIMER = 3000;\r\n\r\nconst getAlertSvgType = (alert: BaseAlert) => {\r\n switch (alert.type) {\r\n case AlertType.Success:\r\n return cvSvgLibrary.CheckCircleOutline;\r\n\r\n case AlertType.Fail:\r\n case AlertType.Warning:\r\n return cvSvgLibrary.Warning;\r\n\r\n case AlertType.Info:\r\n default:\r\n return cvSvgLibrary.Info;\r\n }\r\n};\r\n\r\nexport interface AlertProps {\r\n alert: BaseAlert;\r\n closeAlert: () => void;\r\n}\r\n\r\nexport function Alert({ alert, closeAlert }: AlertProps): React.ReactElement {\r\n const [ closeOnTimeout, setCloseOnTimeout ] = React.useState(true);\r\n\r\n const timeoutRef = React.useRef<number>();\r\n\r\n React.useEffect(() => {\r\n if (!closeOnTimeout) {\r\n clearTimeout(timeoutRef.current);\r\n return;\r\n }\r\n\r\n timeoutRef.current = window.setTimeout(closeAlert, ALERT_FADE_TIMER);\r\n }, [closeOnTimeout]);\r\n\r\n const typeClassName = `text-${alert.type.toLowerCase()}`;\r\n\r\n return (\r\n <li\r\n className={`bg-white mt-2 p-2 show clearfix ${styles.alertItem}`}\r\n onMouseEnter={() => setCloseOnTimeout(false)} onMouseLeave={() => setCloseOnTimeout(true)}\r\n >\r\n <AlertContent\r\n alert={alert}\r\n svgName={getAlertSvgType(alert)}\r\n svgClassName={typeClassName}\r\n closeAlert={closeAlert}\r\n />\r\n </li>\r\n );\r\n}","import * as React from 'react';\r\nimport { sanitize } from 'dompurify';\r\n\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AlertProps } from './Alert';\r\nimport styles from './alert.scss';\r\n\r\ninterface AlertContentProps extends AlertProps {\r\n svgName: string;\r\n svgClassName: string;\r\n}\r\n\r\nexport function AlertContent(props: AlertContentProps): React.ReactElement {\r\n const { alert, svgName, svgClassName, closeAlert } = props;\r\n\r\n const { message, heading, appLink, appLinkText, appLinkClassName = '' } = alert;\r\n\r\n const sanitizedMessage = sanitize(message);\r\n\r\n return (\r\n <>\r\n <div className={`d-inline-block ${styles.icon}`}>\r\n <SvgContainer svgName={svgName} className={`svg-container ${svgClassName}`} />\r\n </div>\r\n <div className={`pl-2 d-inline-block ${styles.alertContent}`}>\r\n <p className={`p-0 m-0 pb-1 ${styles.heading}`}>{heading}</p>\r\n <p className={`p-0 m-0 ${styles.message}`} dangerouslySetInnerHTML={{ __html: sanitizedMessage }} />\r\n {!!appLink &&\r\n <AppLink className={appLinkClassName} appLink={appLink}>{appLinkText}</AppLink>\r\n }\r\n </div>\r\n <div className='close d-inline-block cursor-pointer' role='button' onClick={closeAlert}>×</div>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\n\r\nimport { Alert } from './Alert';\r\nimport styles from './alert.scss';\r\n\r\ninterface AlertListProps {\r\n alerts: BaseAlert[];\r\n removeAlert: (id: string) => void;\r\n}\r\n\r\nexport function AlertList({ alerts, removeAlert }: AlertListProps): React.ReactElement {\r\n return (\r\n <div className={styles.alertBox}>\r\n <TransitionGroup component='ul' className={`${styles.alertList} list-unstyled`}>\r\n {alerts && alerts.map((alert, idx) =>\r\n <CSSTransition key={idx} timeout={200} classNames='alert'>\r\n <Alert alert={alert} closeAlert={() => removeAlert(alert.id)} />\r\n </CSSTransition>\r\n )}\r\n </TransitionGroup>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"alertItem\":\"cv--alertItem--3ppPT\",\"alertBox\":\"cv--alertBox--2gPqV\",\"alertList\":\"cv--alertList--1_wrK\",\"icon\":\"cv--icon--2gpnl\",\"alertContent\":\"cv--alertContent--1akpi\",\"heading\":\"cv--heading--3jnJY\"};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\n\r\nexport interface AppLinkProps {\r\n appLink: Core.AppLink;\r\n className?: string;\r\n tag?: 'a' | 'button';\r\n onClick?: (e: React.MouseEvent) => void;\r\n analyticsData?: HashObject;\r\n analyticsOptions?: AnalyticsOptions;\r\n}\r\n\r\nexport function AppLink(props: React.PropsWithChildren<AppLinkProps>): React.ReactElement {\r\n const { appLink, className, children, tag: AppLinkTag = 'a' } = props;\r\n\r\n if (!appLink) {\r\n return (\r\n <span className={className || ''}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n const href = Core.AppLinkHelper.getHref(appLink);\r\n\r\n let onClick = props.onClick;\r\n if (!onClick) {\r\n onClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n\r\n if (props.analyticsData && props.analyticsOptions)\r\n AnalyticsHelper.logUserAction({ href, ...props.analyticsData }, props.analyticsOptions);\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n };\r\n }\r\n\r\n const propsToInject = {\r\n onClick,\r\n href,\r\n className\r\n };\r\n\r\n return <AppLinkTag {...propsToInject}>{children}</AppLinkTag>;\r\n}","import React from 'react';\r\n\r\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\n\r\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\r\nimport { ImageSize } from 'libs/shared/enums/Images';\r\n\r\nimport styles from './avatar.scss';\r\n\r\nfunction getFallBackImageUrl(imageCdnUrl: string, initials: string): string {\r\n return ImageHelper.createUrl(\r\n UrlHelper.safeUrlConcat(imageCdnUrl, `/v1/profile-images?initials=${initials}`),\r\n { size: ImageSize.Small }\r\n );\r\n}\r\n\r\ninterface AvatarProps {\r\n imageCdnUrl: string;\r\n initials: string;\r\n imageUrl?: string;\r\n}\r\n\r\nexport function Avatar(props: AvatarProps): JSX.Element {\r\n const imageUrl = props.imageUrl || getFallBackImageUrl(props.imageCdnUrl, props.initials);\r\n\r\n return (\r\n <div className={styles.avatar} style={{ backgroundImage: `url('${imageUrl}')` }}>\r\n \r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"cv--avatar--1XSQR\"};","import * as React from 'react';\r\n\r\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\r\n\r\ninterface FileSelectButtonProps {\r\n onFileSelect: (files: FileList) => void;\r\n className?: string;\r\n svgName?: string;\r\n acceptMultiple?: boolean;\r\n mimeType?: string;\r\n}\r\n\r\nFileSelectButton.defaultProps = {\r\n className: 'btn btn-primary'\r\n};\r\n\r\nexport function FileSelectButton(props: React.PropsWithChildren<FileSelectButtonProps>): JSX.Element {\r\n const ref = React.useRef(null);\r\n const useRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n ref.current = node;\r\n }, []);\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n ref.current.value = null;\r\n ref.current.click(null);\r\n };\r\n\r\n return (\r\n <>\r\n {props.svgName\r\n ? <IconButton\r\n svgName={props.svgName}\r\n className={props.className}\r\n onClick={onClick}\r\n >\r\n {props.children}\r\n </IconButton>\r\n : <button\r\n type='button'\r\n className={props.className}\r\n onClick={onClick}\r\n >\r\n {props.children}\r\n </button>\r\n }\r\n\r\n <input\r\n type='file'\r\n autoComplete='off'\r\n className='file-select d-none'\r\n multiple={!!props.acceptMultiple}\r\n accept={props.mimeType}\r\n ref={useRef}\r\n onChange={e => props.onFileSelect(e.target.files)}\r\n />\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\n\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport styles from './icon-button.scss';\r\n\r\ninterface IconButtonProps {\r\n svgName: string;\r\n className?: string;\r\n appLink?: Core.AppLink;\r\n onClick?: (e: React.MouseEvent) => void;\r\n analyticsData?: HashObject;\r\n analyticsOptions?: AnalyticsOptions;\r\n}\r\n\r\n/**\r\n * Renders a button with an svg followed by text.\r\n * The svg is required and is set using the svgName prop.\r\n * Button text is optional and can be set using props.children.\r\n */\r\nexport function IconButton(props: React.PropsWithChildren<IconButtonProps>): React.ReactElement {\r\n let buttonClassName = `${props.className} ${styles.iconButton}`;\r\n\r\n if (props.children) {\r\n buttonClassName += ` ${styles.iconWithText}`;\r\n } else {\r\n buttonClassName += ` ${styles.iconOnly}`;\r\n }\r\n\r\n const svg = <SvgContainer svgName={props.svgName} className={styles.svg} />;\r\n\r\n function onClickButton(e: React.MouseEvent): void {\r\n if (props.analyticsData && props.analyticsOptions)\r\n AnalyticsHelper.logUserAction(props.analyticsData, props.analyticsOptions);\r\n\r\n if (FunctionHelper.isFunction(props.onClick))\r\n props.onClick(e);\r\n }\r\n\r\n if (!props.appLink) {\r\n return (\r\n <button className={buttonClassName} onClick={onClickButton}>\r\n {svg}\r\n {props.children}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <AppLink\r\n appLink={props.appLink}\r\n className={buttonClassName}\r\n onClick={props.onClick}\r\n analyticsData={props.analyticsData}\r\n analyticsOptions={props.analyticsOptions}\r\n >\r\n {svg}\r\n {props.children}\r\n </AppLink>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svg\":\"cv--svg--3OUhC\",\"iconButton\":\"cv--iconButton--3t3VL\",\"iconWithText\":\"cv--iconWithText--2KLHo\",\"iconOnly\":\"cv--iconOnly--2rQWb\"};","import * as React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\n\r\nimport { PopupLoadingSpinner } from './PopupLoadingSpinner';\r\n\r\ninterface PopupProps {\r\n title?: string;\r\n closeButton?: boolean;\r\n closePopup: () => void;\r\n onEntered?: () => void;\r\n size?: 'sm' | 'lg' | 'xl';\r\n showLoadingSpinner?: boolean;\r\n}\r\n\r\nPopup.defaultProps = {\r\n closeButton: true\r\n};\r\n\r\nexport function Popup(props: React.PropsWithChildren<PopupProps>): React.ReactElement {\r\n return (\r\n <Modal\r\n show\r\n onHide={props.closePopup}\r\n onEntered={props.onEntered}\r\n size={props.size}\r\n >\r\n {!!props.title &&\r\n <Modal.Header closeButton={props.closeButton}>\r\n <Modal.Title>{props.title}</Modal.Title>\r\n </Modal.Header>\r\n }\r\n {props.showLoadingSpinner\r\n ? <PopupLoadingSpinner />\r\n : <Modal.Body>\r\n {props.children}\r\n </Modal.Body>\r\n }\r\n </Modal>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button, ButtonProps } from 'react-bootstrap';\r\n\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\n\r\nexport interface PopupButton extends ButtonProps {\r\n className?: string;\r\n onClick: () => void;\r\n buttonText: string;\r\n isSpinnerButton?: boolean;\r\n showSpinner?: boolean;\r\n}\r\n\r\nconst getButton = (props: PopupButton, idx: number) => {\r\n const {\r\n buttonText,\r\n type = 'button',\r\n isSpinnerButton,\r\n showSpinner = false,\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n const btnProps = {\r\n key: idx,\r\n type,\r\n className: `ml-2${className ? ` ${className}` : ''}`,\r\n ...rest\r\n };\r\n\r\n if (isSpinnerButton)\r\n return <SpinnerButton showSpinner={showSpinner} {...btnProps}>{buttonText}</SpinnerButton>;\r\n\r\n return <Button {...btnProps}>{buttonText}</Button>;\r\n};\r\n\r\ninterface PopupButtonsProps {\r\n buttons: PopupButton[];\r\n}\r\n\r\nexport function PopupButtons({ buttons }: PopupButtonsProps): React.ReactElement {\r\n return (\r\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3'>\r\n {buttons.map((b, idx) => getButton(b, idx))}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nexport function PopupLoadingSpinner(): React.ReactElement {\r\n return (\r\n <div className='text-center p-5'>\r\n <Spinner as='div' animation='border' role='status' />\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces';\r\n\r\nimport { Video } from 'libs/shared/interfaces';\r\nimport { NumberHelper } from 'libs/shared/utils/NumberHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AnalyticsOptions, ClickDescriptor, EntityType, UserAction } from 'libs/analytics/interfaces/AnalyticsTypes';\r\n\r\nimport styles from './series-link.scss';\r\n\r\ninterface SeriesLinkProps {\r\n appLink: Core.AppLink;\r\n video: Video;\r\n className?: string;\r\n analyticsData?: HashObject;\r\n analyticsOptions?: AnalyticsOptions;\r\n}\r\n\r\nfunction SeasonEpisode(props: Omit<SeriesLinkProps, 'analyticsOptions' | 'analyticsData'>): JSX.Element {\r\n const { video } = props;\r\n const { season } = video;\r\n\r\n if (!video.episodeNumber || !season)\r\n return <></>;\r\n\r\n const seasonNumber = NumberHelper.padNumber(season.number, 2);\r\n const episodeNumber = NumberHelper.padNumber(video.episodeNumber, 2);\r\n\r\n /* \\u2022 is the unicode number for • */\r\n return (\r\n <span className={`d-inline-block ${props.appLink ? styles.hoverUnderline : ''}`}>\r\n \r\n {!!seasonNumber && `S${seasonNumber} \\u2022 `}\r\n E{episodeNumber}\r\n </span>\r\n );\r\n}\r\n\r\nexport function SeriesLink(props: SeriesLinkProps): JSX.Element {\r\n const { appLink, video, className = '' } = props;\r\n\r\n const series = video?.series;\r\n\r\n if (!series || !series.id)\r\n return <></>;\r\n\r\n const seriesAppLink: Core.AppLink = appLink && {\r\n ...appLink,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n };\r\n\r\n const analyticsData = { ...props.analyticsData,\r\n id: series?.id,\r\n name: series?.name,\r\n videoId: video?.id,\r\n videoName: video?.name\r\n };\r\n\r\n const analyticsOptions = {\r\n ...props.analyticsOptions,\r\n entity: EntityType.Series,\r\n actionType: UserAction.Click,\r\n descriptor: ClickDescriptor.Title\r\n };\r\n\r\n if (seriesAppLink) {\r\n return (\r\n <AppLink\r\n appLink={seriesAppLink}\r\n className={`text-uppercase ${styles.appLink} ${className}`}\r\n analyticsData={analyticsData}\r\n analyticsOptions={analyticsOptions}\r\n >\r\n {series.name}\r\n <SeasonEpisode {...props} />\r\n </AppLink>\r\n );\r\n }\r\n\r\n return (\r\n <span className={`text-uppercase ${styles.appLink} ${className}`}>\r\n {series.name}\r\n <SeasonEpisode {...props} />\r\n </span>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"appLink\":\"cv--appLink--1SFgo\",\"hoverUnderline\":\"cv--hoverUnderline--2iyL0\"};","import * as React from 'react';\r\nimport { Button, ButtonProps, Spinner } from 'react-bootstrap';\r\n\r\ninterface ButtonDimensions {\r\n height?: number;\r\n width?: number;\r\n}\r\n\r\nexport interface SpinnerButtonProps extends ButtonProps {\r\n showSpinner: boolean;\r\n onClick?: () => void;\r\n className?: string;\r\n}\r\n\r\nexport function SpinnerButton(props: React.PropsWithChildren<SpinnerButtonProps>): React.ReactElement {\r\n const { showSpinner, children, ...otherProps } = props;\r\n\r\n const ref = React.useRef<Button & HTMLButtonElement>();\r\n const [ dimensions, setDimensions ] = React.useState<ButtonDimensions>({});\r\n\r\n React.useEffect(() => {\r\n const { width, height } = dimensions;\r\n\r\n // Only set dimensions once\r\n if (width && height)\r\n return;\r\n\r\n const el = ref.current;\r\n\r\n const elHeight = el.offsetHeight;\r\n const elWidth = el.offsetWidth;\r\n\r\n if (!elHeight || !elWidth)\r\n return;\r\n\r\n setDimensions({\r\n width: elWidth,\r\n height: elHeight\r\n });\r\n });\r\n\r\n React.useEffect(() => {\r\n const { width, height } = dimensions;\r\n\r\n if (!width || !height)\r\n return;\r\n\r\n const el = ref.current;\r\n\r\n /**\r\n * offsetHeight and offsetWidth return floored\r\n * integers so we add 1px to each to account\r\n * for any rounding loss.\r\n */\r\n el.style.width = `${width + 1}px`;\r\n el.style.height = `${height + 1}px`;\r\n }, [dimensions]);\r\n\r\n return (\r\n <Button ref={ref} disabled={showSpinner} {...otherProps} >\r\n {showSpinner\r\n ? <Spinner as='span' animation='border' role='status' size='sm' />\r\n : children\r\n }\r\n </Button>\r\n );\r\n}","import * as React from 'react';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { SvgHelper } from 'libs/shared/utils/SvgHelper';\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\n\r\nconst DEFAULT_CLASS_NAME = 'd-inline-block svg-container';\r\nconst DEFAULT_TAG_NAME = 'span';\r\n\r\nexport enum SvgContainerSize {\r\n Standard = 'std',\r\n Small = 'sm',\r\n Medium = 'md',\r\n Large = 'lg',\r\n ExtraLarge = 'xlg',\r\n XXL = 'xxlg'\r\n}\r\n\r\ninterface SvgContainerProps {\r\n svgName: string;\r\n size?: SvgContainerSize;\r\n className?: string;\r\n tagName?: React.ElementType;\r\n onClick?: (...args: any[]) => void;\r\n title?: string;\r\n tooltipPlacement?: Placement;\r\n}\r\n\r\nexport function SvgContainer(props: SvgContainerProps): React.ReactElement {\r\n const {\r\n svgName,\r\n className = DEFAULT_CLASS_NAME,\r\n tagName = DEFAULT_TAG_NAME,\r\n size = SvgContainerSize.Standard,\r\n onClick,\r\n title,\r\n tooltipPlacement = 'right'\r\n } = props;\r\n\r\n const Container = tagName;\r\n\r\n const containerProps = {\r\n dangerouslySetInnerHTML: { __html: SvgHelper.getSvg(svgName) },\r\n className: `${className} ${size}`,\r\n onClick: FunctionHelper.isFunction(onClick) ? onClick : null\r\n };\r\n\r\n if (!title)\r\n return <Container {...containerProps} />;\r\n\r\n return (\r\n <Tooltip title={title} placement={tooltipPlacement}>\r\n <Container {...containerProps} />\r\n </Tooltip>\r\n );\r\n}","import * as React from 'react';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\nimport { SvgContainerSize } from './SvgContainer'; // TODO: Move this enum in here\r\n\r\nconst DEFAULT_CLASS_NAME = 'd-inline-block svg-container';\r\nconst DEFAULT_TAG_NAME = 'span';\r\n\r\ninterface SvgContainerProps2 {\r\n size?: SvgContainerSize;\r\n className?: string;\r\n tagName?: React.ElementType;\r\n onClick?: (...args: any[]) => void;\r\n title?: string;\r\n tooltipPlacement?: Placement;\r\n}\r\n\r\n/**\r\n * This will eventually become just `SvgContainer` when we get around to converting all of our SVGs\r\n * to React components and delete the old `SvgContainer` component\r\n */\r\nexport function SvgContainer2(props: React.PropsWithChildren<SvgContainerProps2>): React.ReactElement {\r\n const {\r\n children,\r\n className = DEFAULT_CLASS_NAME,\r\n tagName = DEFAULT_TAG_NAME,\r\n size = SvgContainerSize.Standard,\r\n onClick,\r\n title,\r\n tooltipPlacement = 'right'\r\n } = props;\r\n\r\n const Container = tagName;\r\n\r\n const containerProps = {\r\n className: `${className} ${size}`,\r\n onClick: FunctionHelper.isFunction(onClick) ? onClick : null\r\n };\r\n\r\n if (!title)\r\n return <Container {...containerProps}>{children}</Container>;\r\n\r\n return (\r\n <Tooltip title={title} placement={tooltipPlacement}>\r\n <Container {...containerProps}>\r\n {children}\r\n </Container>\r\n </Tooltip>\r\n );\r\n}","import React from 'react';\r\n\r\nexport function ClickViewLogo(): React.ReactElement {\r\n return (\r\n <svg viewBox='0 0 434 71'>\r\n <g>\r\n <path fill='#000000' d='M114.44 56.57l3.5 3.5a32.87 32.87 0 0 1-25.16 11.26c-19.63 0-33.62-15.54-33.62-35.16C59.16 16.55 73.16 1 92.78 1a32.31 32.31 0 0 1 24.19 10.4l-3.6 3.3a27.32 27.32 0 0 0-20.59-8.74c-16.91 0-28.39 13.5-28.39 30.21s11.48 30.21 28.39 30.21a28.08 28.08 0 0 0 21.66-9.81zM126.64 1h4.55v70.22h-4.73L126.64 1zm17.3 10.6a3.7 3.7 0 1 1 0 7.4 3.7 3.7 0 0 1 0-7.4zm-2.41 15.07h4.81v44.56h-4.81V26.67zm48 33.15l3.33 3.15a21.8 21.8 0 0 1-17.31 8.61c-12.59 0-21.76-10-21.76-22.22 0-12.22 9.17-22.22 21.76-22.22a21.84 21.84 0 0 1 16.85 8l-3.43 3.06a17.15 17.15 0 0 0-13.42-6.3c-10.09 0-16.76 8.15-16.76 17.5s6.67 17.5 16.76 17.5a17.38 17.38 0 0 0 13.98-7.08zm14.99-9.33v20.74h-4.73V1.01h4.73v47.75l20.74-19.02h6.64l-21.56 19.84L234 71.23h-7.01l-22.47-20.74z'/>\r\n <path fill='#F8981D' d='M304.09 19.4a5.56 5.56 0 1 1 0-11.12 5.56 5.56 0 0 1 0 11.12zm-5.56 7.27h11.11v44.56h-11.11V26.67zm61.42 22.15c0 .81 0 2.42-.09 4h-31.75c.8 3.77 5.2 8.61 11.93 8.61a17.11 17.11 0 0 0 11.66-4.31l5.38 8.16a27.23 27.23 0 0 1-17 6.1c-12.92 0-22.88-9.87-22.88-22.34s9.06-22.33 21.35-22.33c11.62-.04 21.4 9.02 21.4 22.11zm-10.77-3.76c-.18-3.68-3.58-8.62-10.67-8.62-6.91 0-10.05 4.85-10.4 8.62h21.07zM385.92 71h-6.42l-19.64-44.37h13.97l9.16 23.98 9.72-23.98h8.31l9.63 23.98 9.16-23.98h13.97L414.24 71h-6.52l-10.85-23.7L385.92 71zm-120.22.35h-6L226.11 1.01h17.01l19.42 44.18 18.08-44.18h16.91L265.7 71.35zM0 1l41 35L0 71V1z'/>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\nexport function ClickViewLogoInverted(): React.ReactElement {\r\n return (\r\n <svg viewBox='0 0 434 71'>\r\n <g>\r\n <path fill='#FFFFFF' d='M114.44 56.57l3.5 3.5a32.87 32.87 0 0 1-25.16 11.26c-19.63 0-33.62-15.54-33.62-35.16C59.16 16.55 73.16 1 92.78 1a32.31 32.31 0 0 1 24.19 10.4l-3.6 3.3a27.32 27.32 0 0 0-20.59-8.74c-16.91 0-28.39 13.5-28.39 30.21s11.48 30.21 28.39 30.21a28.08 28.08 0 0 0 21.66-9.81zM126.64 1h4.55v70.22h-4.73L126.64 1zm17.3 10.6a3.7 3.7 0 1 1 0 7.4 3.7 3.7 0 0 1 0-7.4zm-2.41 15.07h4.81v44.56h-4.81V26.67zm48 33.15l3.33 3.15a21.8 21.8 0 0 1-17.31 8.61c-12.59 0-21.76-10-21.76-22.22 0-12.22 9.17-22.22 21.76-22.22a21.84 21.84 0 0 1 16.85 8l-3.43 3.06a17.15 17.15 0 0 0-13.42-6.3c-10.09 0-16.76 8.15-16.76 17.5s6.67 17.5 16.76 17.5a17.38 17.38 0 0 0 13.98-7.08zm14.99-9.33v20.74h-4.73V1.01h4.73v47.75l20.74-19.02h6.64l-21.56 19.84L234 71.23h-7.01l-22.47-20.74z'/>\r\n <path fill='#F8981D' d='M304.09 19.4a5.56 5.56 0 1 1 0-11.12 5.56 5.56 0 0 1 0 11.12zm-5.56 7.27h11.11v44.56h-11.11V26.67zm61.42 22.15c0 .81 0 2.42-.09 4h-31.75c.8 3.77 5.2 8.61 11.93 8.61a17.11 17.11 0 0 0 11.66-4.31l5.38 8.16a27.23 27.23 0 0 1-17 6.1c-12.92 0-22.88-9.87-22.88-22.34s9.06-22.33 21.35-22.33c11.62-.04 21.4 9.02 21.4 22.11zm-10.77-3.76c-.18-3.68-3.58-8.62-10.67-8.62-6.91 0-10.05 4.85-10.4 8.62h21.07zM385.92 71h-6.42l-19.64-44.37h13.97l9.16 23.98 9.72-23.98h8.31l9.63 23.98 9.16-23.98h13.97L414.24 71h-6.52l-10.85-23.7L385.92 71zm-120.22.35h-6L226.11 1.01h17.01l19.42 44.18 18.08-44.18h16.91L265.7 71.35zM0 1l41 35L0 71V1z'/>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\nexport function ClickViewPlayLogo(): React.ReactElement {\r\n return (\r\n <svg viewBox='0 0 41 70'>\r\n <g>\r\n <path fill='#F8981D' d='M 0 0 41 35 0 70z'/>\r\n </g>\r\n </svg>\r\n );\r\n}","import * as React from 'react';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\ninterface LanguageInterpolationOptions {\r\n smartCount?: number;\r\n [propName: string]: any;\r\n}\r\n\r\ninterface TextProps {\r\n phrase: string;\r\n namespace?: string;\r\n options?: LanguageInterpolationOptions;\r\n}\r\n\r\n// Value is the language namespace\r\nexport const LanguageNamespaceContext = React.createContext<string>('');\r\n\r\nexport const Text = React.memo(function(props: TextProps): JSX.Element {\r\n const { phrase, namespace: namespaceProp, options } = props;\r\n\r\n const contextNamespace = React.useContext(LanguageNamespaceContext);\r\n const namespace = namespaceProp || contextNamespace;\r\n\r\n const translation = LanguageService.getPhrase(namespace, phrase, options);\r\n\r\n return <span dangerouslySetInnerHTML={{ __html: translation }}></span>;\r\n}, (prevProps, nextProps) => {\r\n return (\r\n prevProps.namespace === nextProps.namespace\r\n && prevProps.phrase === nextProps.phrase\r\n && ObjectHelper.isEqual(prevProps.options, nextProps.options)\r\n );\r\n});","import * as React from 'react';\r\nimport { OverlayTrigger, Tooltip as BsTooltip } from 'react-bootstrap';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\ntype TriggerType = 'hover' | 'click' | 'focus';\r\n\r\ninterface TooltipProps {\r\n title: string;\r\n placement?: Placement;\r\n trigger?: TriggerType | TriggerType[];\r\n}\r\n\r\nTooltip.defaultProps = {\r\n trigger: [ 'hover', 'click', 'focus' ],\r\n placement: 'top'\r\n};\r\n\r\nexport function Tooltip(props: React.PropsWithChildren<TooltipProps>): React.ReactElement {\r\n const { title, placement, trigger, children } = props;\r\n\r\n return (\r\n <OverlayTrigger\r\n placement={placement}\r\n overlay={<BsTooltip id={`${title}-${RandomHelper.getRandomInt()}`}>{title}</BsTooltip>}\r\n trigger={trigger}\r\n >\r\n {children}\r\n </OverlayTrigger>\r\n );\r\n}\r\n","export const AppVariables = {\r\n SEARCH: 'search:app:variables',\r\n NOTIFICATIONS: 'notifications:app:variables',\r\n SUBJECTS: 'subjects:app:variables'\r\n};","const BootstrapKeys = {\r\n LOCALE: 'locale',\r\n PHRASES: 'phrases',\r\n VERSION: 'version'\r\n};\r\n\r\nexport { BootstrapKeys };","export const CacheDurations = {\r\n SHORT: 120, // 2 minutes\r\n STANDARD: 600 // 10 minutes\r\n};","export const SharedDataPrefixes = {\r\n SUBJECT_PLAYLISTS: 'subject:playlists',\r\n CURRENT_USER: 'current:user',\r\n WORKSPACE: 'workspace',\r\n CONFIG: 'config',\r\n LOCALE: 'locale',\r\n PHRASES: 'phrases',\r\n SEARCH_FILTERS: 'search:filters',\r\n SERIES: 'series',\r\n NOTIFICATIONS: 'notifications',\r\n SUGGEST_EDIT: 'suggest:edit'\r\n};","export const LayoutRegions = {\r\n TOP_NAV: 'top:nav',\r\n LEFT_NAV: 'left:nav',\r\n CONTENT: 'content',\r\n POPUP: 'popup',\r\n ALERT: 'alert',\r\n};","export const SharedDataChannels = {\r\n CONFIG: 'config:data:service',\r\n USER: 'user:data:service',\r\n LANGUAGE: 'language:data:service',\r\n LIBRARY: 'library:data:service',\r\n SEARCH: 'search:data:service',\r\n SERIES: 'series:data:service',\r\n NOTIFICATIONS: 'notifications:data:service',\r\n NOTIFICATIONS_SOCKET: 'notifications:socket:service'\r\n};\r\n\r\nexport const SharedServiceChannels = {\r\n PENDING_ITEMS: 'pending:items:service',\r\n VIDEO_UPLOAD: 'video:upload:service',\r\n SUBTITLE_UPLOAD: 'subtitle:upload:service',\r\n RESOURCE_UPLOAD: 'resource:upload:service',\r\n CONTEXTUAL_SEARCH: 'contextual:search:service'\r\n};\r\n\r\nexport const SharedAppChannels = {\r\n NOTIFICATIONS: 'notifications:application'\r\n};","export const SharedDataServices = {\r\n Config: 'ConfigDataService',\r\n User: 'UserDataService',\r\n Language: 'LanguageDataService',\r\n Video: 'VideoDataService',\r\n VideoUpload: 'VideoUpload',\r\n Library: 'LibraryDataService',\r\n Search: 'SearchDataService',\r\n Series: 'SeriesDataService',\r\n Notification: 'NotificationDataService',\r\n NotificationSocket: 'NotificationSocketService'\r\n};\r\n\r\nexport const SharedServices = {\r\n ImageUrl: 'ImageUrlService',\r\n PendingItems: 'PendingItemsService',\r\n Alerts: 'AlertService',\r\n VideoUpload: 'VideoUploadService',\r\n ResourceUpload: 'ResourceUploadService',\r\n SubtitleUpload: 'SubtitleUploadService',\r\n VideoMixin: 'VideoMixinService',\r\n ContextualSearch: 'ContextualSearchService',\r\n Context: 'ContextService',\r\n Notification: 'NotificationService',\r\n AppOptions: 'AppOptionsService'\r\n};","import { MasterType } from 'libs/shared/enums/MasterType';\r\n\r\nconst categories = `categories{libraries.typeid:${MasterType.CustomMediaObjectCollection}}`;\r\n\r\nexport const SharedWithStatements = {\r\n VIDEO_COLLECTION: `series,season,rating,thumbnail,${categories},libraries,tags,clips{limit:100},`\r\n + 'interactives{limit:1},subtitles{limit:1},resources{limit:1},links{limit:1}',\r\n /**\r\n * We need to fetch videos 100 interactives for a shared playlist to determine which interactives \r\n * the user can access using _allowAccess\r\n */\r\n SHARED_PLAYLIST_VIDEO_COLLECTION: `series,season,rating,thumbnail,${categories},libraries,tags,clips{limit:100},`\r\n + 'interactives{limit:100},subtitles{limit:1},resources{limit:1},links{limit:1}',\r\n SERIES: 'tallposter,rating',\r\n FOLDER: 'banner,thumbnail',\r\n CLASSIFICATION: 'banner,cover',\r\n\r\n PLAYLIST: 'cover,banner,owner,videos[thumbnail,count()]{orderby:orderindex,limit:1},followers[count()]{limit:0}',\r\n PLAYLIST_COLLECTION: 'videos[thumbnail,count()]{orderby:orderindex,limit:1},thumbnail,cover,owner[avatar],'\r\n + 'subjectpresentationaudiences'\r\n};\r\n\r\nexport const WithStatementHelper = {\r\n SubjectPresentationActiveAudienceFilter(ids: string[]): string {\r\n return `subjectpresentationaudiences.id:[${ids.join(',')}]`;\r\n },\r\n SubjectPresentationAudienceFilter(id: string): string {\r\n return `subjectpresentationaudiences{presentationId:${id}}`;\r\n },\r\n ClassificationWithFollowersAndMemberCount(currentUserId: string): string {\r\n return SharedWithStatements.CLASSIFICATION\r\n + `,followers{id:${currentUserId}},videos[count()]{limit:0}`\r\n + ',playlists[count()]{limit:0},series[count()]{limit:0}';\r\n }\r\n};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { VideoAction } from 'libs/shared/utils/video-actions/VideoActionsHelper';\r\nimport { Video } from 'libs/shared/interfaces';\r\n\r\ninterface VideoActionsContextProps {\r\n // Allowed video actions\r\n videoActions?: VideoAction[];\r\n\r\n // Get appLink for action\r\n getActionAppLink?: (video: Video, action: VideoAction) => Core.AppLink;\r\n\r\n // When true, no label will be shown for the buttons\r\n hideLabel?: boolean;\r\n}\r\n\r\nexport const VideoActionsContext = React.createContext<VideoActionsContextProps>({});","export enum CountryCode {\r\n AU = 'au',\r\n NZ = 'nz',\r\n UK = 'uk'\r\n}","/**\r\n * This enum maps directly to the CurationStatus enum in the \r\n * NuGet package ClickView.Models from master.\r\n */\r\nexport enum CurationStatus {\r\n Draft = 0,\r\n Published = 1,\r\n Archive = 2,\r\n Pending = 3,\r\n Rejected = 4,\r\n Processing = 5\r\n}","export enum CustomerType {\r\n Unclassified = 0,\r\n Primary = 1,\r\n Secondary = 2,\r\n K12 = 3,\r\n Tertiary = 4,\r\n NonEducational = 5,\r\n Partners = 6,\r\n Internal = 7,\r\n Other = 8\r\n}\r\n","export enum ImageSize {\r\n Small = 'small',\r\n Medium = 'medium',\r\n Large = 'large'\r\n}\r\n\r\nexport enum ImageType {\r\n Thumbnails = 0,\r\n Banners = 1,\r\n Avatars = 2,\r\n Logos = 3,\r\n Covers = 4,\r\n Posters = 5,\r\n TallPosters = 6,\r\n HeroBanners = 7\r\n}\r\n\r\nexport enum ResizeType {\r\n Crop,\r\n Stretched,\r\n Cover\r\n}\r\n\r\nexport enum FileIdType {\r\n None,\r\n ImageAPIv1,\r\n FileAPIv1,\r\n ImageAPIv2,\r\n}","export enum LibraryType {\r\n HostedLibrary,\r\n Exchange,\r\n MoviesAndTvLibrary\r\n}","export enum MasterType {\r\n Audience = 1,\r\n Category = 2,\r\n Channel = 3,\r\n Chapter = 4,\r\n Comment = 5,\r\n OwnerComment = 6,\r\n Image = 7,\r\n Thumbnail = 8,\r\n Avatar = 9,\r\n Banner = 10,\r\n Video = 11,\r\n Trailer = 12,\r\n Rating = 13,\r\n Topic = 14,\r\n Series = 15,\r\n Season = 16,\r\n HostedMediaObjectCollection = 17,\r\n ExchangeCollection = 18,\r\n CustomMediaObjectCollection = 19,\r\n Playlist = 20,\r\n ClickViewTvCollection = 21,\r\n ClickViewProductionsCollection = 22,\r\n User = 23,\r\n SystemUser = 24,\r\n Customer = 25,\r\n Country = 26,\r\n Organisation = 28,\r\n SystemOrganisation = 29,\r\n Group = 30,\r\n SystemGroup = 31,\r\n FlagReason = 32,\r\n Library = 33,\r\n Interactive = 34,\r\n WorkspaceCollection = 35,\r\n Conversation = 36,\r\n Message = 37,\r\n Notification = 38,\r\n Clip = 39,\r\n Link = 40,\r\n UserChannel = 41,\r\n Resource = 42,\r\n VideoStream = 43,\r\n AudioStream = 44,\r\n Tag = 45,\r\n Subtitle = 46,\r\n LicencedContentCollection = 47,\r\n PublicCollection = 48,\r\n CategoryTree = 49,\r\n Logo = 50,\r\n Permission = 51,\r\n Subject = 52,\r\n Field = 53,\r\n Company = 54,\r\n Person = 55,\r\n Cover = 56,\r\n Poster = 57,\r\n SubjectAudience = 58\r\n}","/**\r\n * Breakpoints:\r\n * - xs: 0\r\n * - sm: 576px\r\n * - md: 768px\r\n * - lg: 992px\r\n * - xl: 1200px\r\n */\r\n\r\nexport enum MediaQueryStrings {\r\n XS = `(max-width: 575px)`,\r\n SM = `(min-width: 576px) and (max-width: 767px)`,\r\n MD = `(min-width: 768px) and (max-width: 991px)`,\r\n LG = `(min-width: 992px)`,\r\n XL = `(min-width: 1200px)`,\r\n XXL = `(min-width: 1440px)`, // XXL is enough for both a max size .container and our left nav\r\n\r\n SMDown = `(max-width: 576px)`,\r\n MDDown = `(max-width: 768px)`\r\n}","export enum PartialLoadingComponentTypes {\r\n Component = 1,\r\n ComponentCollection = 2\r\n}","export enum PendingProcessOrigin {\r\n Upload = 1,\r\n Tv = 2\r\n}","export enum SettingKind {\r\n Permanent = 0,\r\n Temporary = 1\r\n}","export enum SettingName {\r\n // Customer settings\r\n FollowingBetaAccess = 'following_beta_access',\r\n MustCompleteOnboarding = 'must_complete_onboarding',\r\n StudentWorkspaceSharing = 'student_ws_sharing',\r\n StudentToStudentMessaging = 'student_to_student_messaging',\r\n HideResourcesForStudents = 'hide_resources_for_students',\r\n LibraryReview = 'library_review',\r\n SchoolMessaging = 'school_messaging',\r\n LegacyTvNaming = 'legacy_tv_naming',\r\n LegacyAlbertCustomer = 'legacy_albert_customer',\r\n HideHostedLibraries = 'hide_hosted_libraries',\r\n StaffRequest = 'staff_request',\r\n MaxCustomLibraries = 'max_custom_libraries',\r\n CustomLibrariesBetaAccess = 'custom_libraries_beta_access',\r\n AutoCaptioning = 'auto_captioning',\r\n\r\n // User settings\r\n HasCompletedOnboarding = 'has_completed_onboarding',\r\n BulkOnboardingPreferencesState = 'bulk_onboarding_preferences_state'\r\n}","export enum SubtitleExtractionOptions {\r\n ExternalOnly = 0,\r\n EmbeddedOnly = 1\r\n}","export enum OnlineUserRole {\r\n Unspecified = 0,\r\n Student = 1,\r\n Staff = 2,\r\n Admin = 3,\r\n CVAdmin = 4,\r\n FreeUser = 6,\r\n ReadOnly = 8\r\n}\r\n\r\nexport enum UserRole {\r\n Guest = 16,\r\n User = 32,\r\n Admin = 48,\r\n SuperAdmin = 64\r\n}\r\n","export enum VideoOrigin {\r\n IosApp = 1,\r\n AndroidApp = 2,\r\n WinApp = 3,\r\n LibraryPublisher = 4,\r\n ExchangeClient = 5,\r\n Online = 6,\r\n Tinder = 7,\r\n Cloud247 = 8,\r\n Livestream = 9,\r\n Curator = 10,\r\n LibraryEditor = 11,\r\n Lite = 12\r\n}","import { Core } from 'libs/common/core';\r\n\r\nexport class AlertError extends Core.SilentError {\r\n public get name(): string {\r\n return 'AlertError';\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { DialogOptions } from 'libs/shared/interfaces';\r\n\r\nexport abstract class DialogError extends Core.SilentError {\r\n public dialogOptions: DialogOptions;\r\n\r\n constructor(message: string) {\r\n super(message);\r\n\r\n if (!this.dialogOptions)\r\n Core.ErrorHelper.throw(new DevError('Please provide DialogOptions for your implementation of DialogError'));\r\n }\r\n\r\n public get name(): string {\r\n return 'DialogError';\r\n }\r\n\r\n public onDone(): void {}\r\n public onFail(): void {}\r\n}","import { Core } from 'libs/common/core';\r\n\r\nexport abstract class ErrorPageError extends Core.SilentError {\r\n public heading: string;\r\n public description: string;\r\n public appLink?: Core.AppLinkHash;\r\n\r\n public get name(): string {\r\n return 'ErrorPageError';\r\n }\r\n}","import { Flight } from 'libs/common/flight';\r\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\nimport { WithStatementHelper, SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\nimport { ClassificationMemberType } from 'libs/shared/apps/subjects/enums/ClassificationMemberType';\r\n\r\nconst endpoints = {\r\n classifications: () => `/api/domain/v1/subjects?query=${SharedWithStatements.CLASSIFICATION}&type=subject`,\r\n\r\n classification: (id: string, userId: string) =>\r\n `/api/domain/v1/subjects/${id}?query=${WithStatementHelper.ClassificationWithFollowersAndMemberCount(userId)}`,\r\n\r\n path: (id: string) => `/api/domain/v1/subjects/${id}/path`,\r\n\r\n children: (id: string) => `/api/domain/v1/subjects/${id}/children?query=${SharedWithStatements.CLASSIFICATION}`,\r\n\r\n member: (id: string, memberType: ClassificationMemberType, query: string = '', cursor: string = '') => {\r\n let url = `/api/domain/v1/subjects/${id}/${memberType}`;\r\n\r\n const params = [];\r\n\r\n if (query)\r\n params.push(`query=${query}`);\r\n\r\n if (cursor)\r\n params.push(`cursor=${cursor}`);\r\n\r\n const queryParam = params.join('&');\r\n\r\n if (queryParam)\r\n url += `?${queryParam}`;\r\n\r\n return url;\r\n },\r\n\r\n curriculumLinks: (id: string) => `/api/domain/v1/subjects/objects/${id}/classifications/paths?type=curriculum`\r\n};\r\n\r\nexport const ClassificationRequests = {\r\n presentation(): Flight.Request {\r\n return {\r\n url: '/api/domain/v1/subjects/presentations?type=subject',\r\n key: 'presentation',\r\n bootstrapName: 'presentation'\r\n };\r\n },\r\n\r\n classifications(): Flight.Request {\r\n return {\r\n url: endpoints.classifications(),\r\n key: `classifications`,\r\n expiryTime: Infinity\r\n };\r\n },\r\n\r\n classification(id: string, userId: string, error?: (xhr: Xhr) => void): Flight.Request {\r\n return {\r\n url: endpoints.classification(id, userId),\r\n key: `classification:${id}`,\r\n error,\r\n expiryTime: Infinity\r\n };\r\n },\r\n\r\n path(id: string): Flight.Request {\r\n return {\r\n url: endpoints.path(id),\r\n key: `classification:${id}:path`,\r\n expiryTime: Infinity\r\n };\r\n },\r\n\r\n children(id: string): Flight.Request {\r\n return {\r\n url: endpoints.children(id),\r\n key: `classification:${id}:children`,\r\n expiryTime: Infinity\r\n };\r\n },\r\n\r\n videos(id: string, presentationId: string, activeAudiences: string[]): Flight.Request {\r\n if (!presentationId)\r\n return;\r\n\r\n let filter = 'limit:100';\r\n\r\n if (activeAudiences.length)\r\n filter += `,${WithStatementHelper.SubjectPresentationActiveAudienceFilter(activeAudiences)}`;\r\n\r\n let query = `{${filter}}${SharedWithStatements.VIDEO_COLLECTION}` +\r\n `,${WithStatementHelper.SubjectPresentationAudienceFilter(presentationId)}`;\r\n\r\n return {\r\n url: endpoints.member(id, ClassificationMemberType.Videos, query),\r\n key: `classification:${id}:${ClassificationMemberType.Videos}:${activeAudiences.join(':')}`,\r\n expiryTime: Infinity\r\n };\r\n },\r\n\r\n playlists(id: string, presentationId: string, activeAudiences: string[]): Flight.Request {\r\n if (!presentationId)\r\n return;\r\n\r\n let filter = 'limit:100,orderby:name';\r\n\r\n if (activeAudiences.length)\r\n filter += `,${WithStatementHelper.SubjectPresentationActiveAudienceFilter(activeAudiences)}`;\r\n\r\n let query = `{${filter}}${SharedWithStatements.PLAYLIST_COLLECTION}` +\r\n `,${WithStatementHelper.SubjectPresentationAudienceFilter(presentationId)}`;\r\n\r\n return {\r\n url: endpoints.member(id, ClassificationMemberType.Playlists, query),\r\n key: `classification:${id}:${ClassificationMemberType.Playlists}:${activeAudiences.join(':')}`,\r\n expiryTime: Infinity\r\n };\r\n },\r\n\r\n series(id: string, presentationId: string, activeAudiences: string[]): Flight.Request {\r\n if (!presentationId)\r\n return;\r\n\r\n let filter = 'limit:100';\r\n\r\n if (activeAudiences.length)\r\n filter += `,${WithStatementHelper.SubjectPresentationActiveAudienceFilter(activeAudiences)}`;\r\n\r\n let query = `{${filter}}${SharedWithStatements.SERIES}` +\r\n `,${WithStatementHelper.SubjectPresentationAudienceFilter(presentationId)}`;\r\n\r\n return {\r\n url: endpoints.member(id, ClassificationMemberType.Series, query),\r\n key: `classification:${id}:${ClassificationMemberType.Series}:${activeAudiences.join(':')}`,\r\n expiryTime: Infinity\r\n };\r\n },\r\n\r\n curriculumLinks(id: string): Flight.Request {\r\n return {\r\n url: endpoints.curriculumLinks(id),\r\n key: `curriculum:links:${id}`,\r\n expiryTime: Infinity,\r\n normalize: false\r\n };\r\n }\r\n};\r\n","import { Flight } from 'libs/common/flight';\r\n\r\nconst config: Flight.Request = {\r\n url: '/api/config',\r\n key: 'config'\r\n};\r\n\r\nexport const ConfigRequests = {\r\n config\r\n};","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { CurrentUser } from 'libs/shared/interfaces';\r\n\r\nconst workspace: Flight.Request = {\r\n url: 'api/domain/v2/me/workspace',\r\n key: 'workspace'\r\n};\r\n\r\nexport const UserRequests = {\r\n currentUser(success?: (user: CurrentUser) => void, error?: () => void): Flight.Request {\r\n return {\r\n url: '/api/currentUser',\r\n key: 'currentuser',\r\n success,\r\n error\r\n };\r\n },\r\n\r\n workspace,\r\n\r\n sendVerificationEmail(\r\n emailAddress: string,\r\n success: () => void,\r\n error: () => void,\r\n always: () => void\r\n ): Flight.Request {\r\n return {\r\n url: 'api/account/email',\r\n key: 'verify:email',\r\n type: HttpVerbs.POST,\r\n data: { emailAddress },\r\n success,\r\n error,\r\n always,\r\n invalidationKeys: ['verify:email:status']\r\n };\r\n }\r\n};","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\nimport { useMediaQuery } from './UseMediaQuery';\r\n\r\nexport function useGetMediaQueryString(): MediaQueryStrings {\r\n /**\r\n * I tried to do this by looping through `MediaQueryStrings`'s keys, but you can't run\r\n * hooks in a loop :(\r\n */\r\n const isXS = useMediaQuery(MediaQueryStrings.XS);\r\n const isSM = useMediaQuery(MediaQueryStrings.SM);\r\n const isMD = useMediaQuery(MediaQueryStrings.MD);\r\n const isLG = useMediaQuery(MediaQueryStrings.LG);\r\n const isXL = useMediaQuery(MediaQueryStrings.XL);\r\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\r\n\r\n let currentString = MediaQueryStrings.LG; // default\r\n if (isXS) currentString = MediaQueryStrings.XS;\r\n if (isSM) currentString = MediaQueryStrings.SM;\r\n if (isMD) currentString = MediaQueryStrings.MD;\r\n if (isLG) currentString = MediaQueryStrings.LG;\r\n if (isXL) currentString = MediaQueryStrings.XL;\r\n if (isXXL) currentString = MediaQueryStrings.XXL;\r\n\r\n return currentString;\r\n}","import { useState, useEffect } from 'react';\r\n\r\nexport function useMediaQuery(query: string): boolean {\r\n const [ matches, setMatches ] = useState(window.matchMedia(query).matches);\r\n\r\n useEffect(() => {\r\n const media = window.matchMedia(query);\r\n\r\n if (media.matches !== matches)\r\n setMatches(media.matches);\r\n\r\n const listener = () => setMatches(media.matches);\r\n\r\n media.addListener(listener);\r\n\r\n return () => media.removeListener(listener);\r\n }, [query]);\r\n\r\n return matches;\r\n}\r\n","import * as Actions from './actions';\r\nimport * as Arrows from './arrows';\r\nimport * as Objects from './objects';\r\nimport * as Player from './player';\r\nimport * as Status from './status';\r\nimport * as _ from 'underscore';\r\n\r\n/**\r\n * SVGs must be exported here to ensure that they are part\r\n * of the final webpack bundle.\r\n * DO NOT import this into local Marionette files.\r\n */\r\nexport const importedSvgs = [\r\n Actions.AddToPlaylist,\r\n Actions.Delete,\r\n Actions.Edit,\r\n Actions.More,\r\n Actions.Preview,\r\n Actions.Search,\r\n Actions.Share,\r\n Actions.Upload,\r\n Actions.Plus,\r\n Actions.Close,\r\n Actions.Down,\r\n Actions.Right,\r\n Actions.UpDown,\r\n Actions.VisibleOff,\r\n Actions.VisibleOn,\r\n Actions.NewWindow,\r\n Actions.NoEdit,\r\n Actions.EditClickView,\r\n Actions.Share2,\r\n Arrows.Caret,\r\n Arrows.ArrowLeft,\r\n Arrows.ChevronUp,\r\n Arrows.ChevronDown,\r\n Arrows.ChevronLeft,\r\n Arrows.ChevronRight,\r\n Arrows.Enter,\r\n Objects.Folder,\r\n Objects.File,\r\n Objects.FileImg,\r\n Objects.FilePDF,\r\n Objects.FileExcel,\r\n Objects.FilePowerpoint,\r\n Objects.FileWord,\r\n Objects.FileZip,\r\n Objects.Resources,\r\n Objects.Star,\r\n Objects.StarOutline,\r\n Objects.Archive,\r\n Objects.Bell,\r\n Objects.Playlist,\r\n Objects.PublisherArchive,\r\n Objects.Link,\r\n Objects.Calendar,\r\n Objects.Handle,\r\n Objects.Subject,\r\n Objects.Series,\r\n Objects.Heart,\r\n Objects.HeartOutline,\r\n Objects.WhiteWave,\r\n Objects.Cog,\r\n Objects.Video,\r\n Objects.Compass,\r\n Objects.History,\r\n Objects.Tag,\r\n Objects.Email,\r\n Objects.Subjects,\r\n Objects.YearLevel,\r\n Player.Play,\r\n Player.PlayCircle,\r\n Player.CloseCaption,\r\n Status.Check,\r\n Status.CheckCircleOutline,\r\n Status.CheckCircle,\r\n Status.CloseCaptionBadge,\r\n Status.Info,\r\n Status.Question,\r\n Status.Lock,\r\n Status.Warning,\r\n Status.WarningOutline\r\n];\r\n\r\n/**\r\n * SVGs available within the CV library\r\n * Strings *must* match the svg filename.\r\n *\r\n * DO NOT import this into local Marionette files.\r\n * Use cvSvgLibrary instead.\r\n */\r\nexport enum localSvgs {\r\n AddToPlaylists = 'add-to-playlist',\r\n Caret = 'caret',\r\n Delete = 'delete',\r\n Edit = 'edit',\r\n NoEdit = 'no-edit',\r\n Close = 'close',\r\n Folder = 'folder',\r\n Resources = 'resources',\r\n More = 'more',\r\n Bell = 'bell',\r\n Plus = 'plus',\r\n Search = 'search',\r\n Share = 'share',\r\n Share2 = 'share2',\r\n Upload = 'upload',\r\n Preview = 'preview',\r\n CircleCheck = 'circle-check',\r\n Down = 'down',\r\n Right = 'right',\r\n UpDown = 'up-down',\r\n ChevronUp = 'chevron-up',\r\n ChevronDown = 'chevron-down',\r\n ChevronLeft = 'chevron-left',\r\n ChevronRight = 'chevron-right',\r\n VisibleOff = 'visible-off',\r\n VisibleOn = 'visible-on',\r\n PublisherArchive = 'publisher-archive',\r\n Play = 'play',\r\n PlayCircle = 'play-circle',\r\n ArrowLeft = 'arrow-left',\r\n CheckCircleOutline = 'check-circle-o',\r\n CheckCircle = 'check-circle',\r\n Check = 'check',\r\n Lock = 'lock',\r\n Link = 'link',\r\n Info = 'info',\r\n Question = 'question',\r\n Star = 'star',\r\n StarOutline = 'star-o',\r\n Archive = 'archive',\r\n Warning = 'warning',\r\n WarningOutline = 'warning-o',\r\n NewWindow = 'new-window',\r\n File = 'file',\r\n FilePDF = 'file-pdf',\r\n FileExcel = 'file-excel',\r\n FilePowerpoint = 'file-ppt',\r\n FileWord = 'file-word',\r\n FileImg = 'file-img',\r\n FileZip = 'file-zip',\r\n Enter = 'enter',\r\n Calendar = 'calendar',\r\n CloseCaption = 'close-caption',\r\n CloseCaptionBadge = 'close-caption-badge',\r\n Playlist = 'playlist',\r\n Handle = 'handle',\r\n Subject = 'subject',\r\n Series = 'series',\r\n EditClickView = 'edit-clickview',\r\n Heart = 'heart',\r\n HeartOutline = 'heart-outline',\r\n WhiteWave = 'white-wave',\r\n Cog = 'cog',\r\n Video = 'video',\r\n Compass = 'compass',\r\n History = 'history',\r\n Tag = 'tag',\r\n Email = 'email',\r\n YearLevel = 'year-level',\r\n Subjects = 'subjects'\r\n}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"add-to-playlist\",\"icon\":[\"24\",\"24\",[],\"\",\"M20.1 16.4h1.8a.6.6 0 1 1 0 1.2h-1.8v1.8a.6.6 0 1 1-1.2 0v-1.8h-1.8a.6.6 0 1 1 0-1.2h1.8v-1.8a.6.6 0 0 1 1.2 0v1.8zM10.5 9a.5.5 0 1 1 0-1h6a.5.5 0 1 1 0 1h-6zm0 3.5a.5.5 0 1 1 0-1h6a.5.5 0 1 1 0 1h-6zm0 3.5a.5.5 0 1 1 0-1h4a.5.5 0 1 1 0 1h-4zm5.5 3a.5.5 0 1 1 0 1H6.5A2.5 2.5 0 0 1 4 17.5v-11A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5V12a.5.5 0 1 1-1 0V6.5A1.5 1.5 0 0 0 17.5 5h-11A1.5 1.5 0 0 0 5 6.5v11A1.5 1.5 0 0 0 6.5 19H16zm-8-2.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-7a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.959 10.641l4.402-4.296a.964.964 0 0 1 1.358 0 .951.951 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.951.951 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .951.951 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.951.951 0 0 1 0-1.35.964.964 0 0 1 1.358 0l4.32 4.361z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"delete\",\"icon\":[\"24\",\"24\",[],\"\",\"M14.5 7h4a.5.5 0 1 1 0 1h-1.14a1 1 0 0 1-.005.09l-.909 10a1 1 0 0 1-.996.91h-6.9a1 1 0 0 1-.996-.91l-.91-10A1.013 1.013 0 0 1 6.64 8H5.5a.5.5 0 0 1 0-1h4A1.5 1.5 0 0 1 11 5.5h2A1.5 1.5 0 0 1 14.5 7zm-1 0a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 0-.5.5h3zm-4 3a.463.463 0 0 0-.462.499L9.462 16a.54.54 0 0 0 .574.498.463.463 0 0 0 .426-.498l-.424-5.502A.54.54 0 0 0 9.5 10zm2.5 0a.5.5 0 0 0-.5.5V16a.5.5 0 1 0 1 0v-5.5a.5.5 0 0 0-.5-.5zm2.5 0a.54.54 0 0 0-.538.499L13.538 16a.463.463 0 0 0 .462.5.54.54 0 0 0 .538-.499l.424-5.502A.463.463 0 0 0 14.5 10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"down\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10l8 .014L12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"edit-clickview\",\"icon\":[\"20\",\"20\",[],\"\",\"M17.6404852,5.71727477 L18.2297408,6.30653042 C18.7178962,6.79468579 18.7178962,7.58614201 18.2297408,8.07429738 L8.60812289,17.6959153 C6.71135346,18.0295451 5.75309028,18.1864816 5.73333333,18.1667246 C5.71357639,18.1469677 5.88616537,17.2043571 6.25110029,15.3388927 L15.8727182,5.71727477 C16.3608736,5.22911941 17.1523298,5.22911941 17.6404852,5.71727477 Z M8.7636789,16.361848 L16.05144,9.07408693 L14.8729287,7.89557563 L7.54002172,15.2284826 L8.7636789,16.361848 Z M6.74626541,17.1725049 C7.12145752,17.1092038 7.58975231,17.0283895 8.15085565,16.9301078 L6.99799308,15.862313 C6.89682248,16.3819093 6.8128974,16.8187273 6.74626541,17.1725049 Z M15.4621843,7.30631998 L16.6406956,8.48483128 L17.6404852,7.48504173 C17.8032036,7.32232327 17.8032036,7.05850453 17.6404852,6.89578608 L17.0512295,6.30653042 C16.8885111,6.14381197 16.6246923,6.14381197 16.4619739,6.30653042 L15.4621843,7.30631998 Z M6.33566019,14.9908489 C6.2812423,14.9851574 6.22594201,14.9756491 6.16991424,14.9622805 C5.78045547,14.8577915 5.5109401,14.5829916 5.41684139,14.197065 L5.16924027,13.2272939 L4.21481414,13.4992408 C3.82064978,13.614606 3.44283804,13.5120571 3.186267,13.236167 C2.88681965,12.9560388 2.78427075,12.578227 2.89864522,12.187493 L3.17158282,11.2296365 L2.20423564,10.9826478 C1.82188543,10.8870603 1.55144636,10.6218219 1.4331146,10.2152085 C1.34005988,9.82437875 1.44481708,9.45772856 1.72601896,9.19546209 L2.43808286,8.49887783 L1.73450689,7.81040417 C1.44481706,7.54002697 1.34005989,7.17337687 1.439649,6.75790801 C1.55144635,6.37593371 1.82188539,6.11069542 2.20181175,6.01572028 L3.17158282,5.76811916 L2.89963593,4.81369299 C2.78427075,4.41952863 2.88681965,4.04171689 3.16270985,3.78514587 C3.442838,3.48569854 3.82064974,3.38314964 4.2113838,3.49752411 L5.16924027,3.77046171 L5.41554008,2.80590417 C5.51183431,2.41109782 5.78619407,2.13673807 6.15902913,2.0463353 C6.55319349,1.93097012 6.93100525,2.03351902 7.20467421,2.32619001 L7.89999894,3.04211696 L8.594506,2.32703389 C8.87243071,2.03952554 9.24209506,1.93918808 9.61899753,2.04044384 C10.0138038,2.13673809 10.2881636,2.41109789 10.3831565,2.80069064 L10.6307576,3.77046171 L11.5851838,3.49851482 C11.9793481,3.38314964 12.3571599,3.48569854 12.6137309,3.76158875 C12.9131782,4.04171689 13.0157271,4.41952857 12.9013527,4.8102627 L12.6284151,5.76811916 L13.5957624,6.01510789 C13.9781125,6.11069542 14.2485515,6.37593369 14.3668833,6.78254721 C14.3761095,6.82129727 14.3833912,6.85980963 14.3887491,6.89800613 L12.4311686,8.86525019 C12.2885501,8.50246788 12.3664513,8.07377489 12.6626209,7.7840438 L13.3831727,7.07934901 C13.4057811,7.05824779 13.4051218,7.06055538 13.4006115,7.03880681 C13.3874896,6.9939735 13.3872742,6.99376225 13.3508029,6.98463799 L12.3810318,6.73703687 L12.3543769,6.72983797 C11.8232342,6.57849086 11.5153491,6.0252236 11.6666962,5.49408097 L11.9406245,4.53279433 C11.9501787,4.50015106 11.9538346,4.51362027 11.9070166,4.46830299 C11.8852565,4.44504217 11.8987257,4.44869811 11.8626522,4.45924293 L10.9047957,4.73218053 L10.8781408,4.73937942 C10.3430223,4.87600541 9.79846586,4.55296343 9.66183987,4.01784495 L9.41293742,3.04286026 C9.40513226,3.0108591 9.4140425,3.01976934 9.37095513,3.00912543 C9.33213613,2.99871057 9.33745796,2.99726608 9.31267674,3.02289983 L8.61735201,3.73882678 L8.59670876,3.75947002 C8.2005256,4.14425223 7.56742808,4.13500994 7.18264587,3.73882678 L6.48086195,3.01612347 C6.45910183,2.99286265 6.4725711,2.9965186 6.4179566,3.01196417 C6.38595535,3.01976935 6.39486559,3.01085911 6.3857591,3.04807388 L6.13815798,4.01784495 L6.13095909,4.04449986 C5.97961199,4.5756425 5.42634475,4.88352762 4.89520211,4.73218053 L3.93391535,4.45825223 C3.90127212,4.44869811 3.91474139,4.44504217 3.86942412,4.49186014 C3.84616328,4.51362028 3.84981922,4.50015102 3.86036404,4.53622453 L4.13330164,5.494081 L4.14050053,5.52073591 C4.27712653,6.05585439 3.95408454,6.60041087 3.41896607,6.73703687 L2.44677117,6.98525039 C2.41272371,6.99376225 2.41250834,6.99397349 2.40592081,7.01416766 C2.3948761,7.06055542 2.39421677,7.05824776 2.42531312,7.08745955 L3.13737702,7.78404381 L3.15291688,7.79958367 C3.53912638,8.1943756 3.53216895,8.82750235 3.13737702,9.21371185 L2.41682511,9.91840678 C2.39421677,9.93950789 2.3948761,9.93720022 2.3993864,9.95894886 C2.41250834,10.0037822 2.41272371,10.0039934 2.44919499,10.0131176 L3.41896606,10.2607188 L3.44562098,10.2679177 C3.97676362,10.4192648 4.28464874,10.972532 4.13330164,11.5036746 L3.85937334,12.4649614 C3.84981922,12.4976046 3.84616328,12.4841354 3.89298124,12.5294526 C3.91474137,12.5527135 3.90127209,12.5490575 3.93734565,12.5385127 L4.89520212,12.2655751 L4.92185702,12.2583762 C5.4569755,12.1217502 6.00153199,12.4447922 6.13815798,12.9799107 L6.38706042,13.9548953 C6.3957598,13.9905628 6.39169395,13.9864172 6.41528883,13.9929559 C6.46167656,14.0040006 6.45936885,14.00466 6.48858067,13.9735636 L7.18516493,13.2614997 L7.20070477,13.2459599 C7.4952939,12.9577749 7.92258715,12.888504 8.28097421,13.0359319 L6.33566019,14.9908489 Z M6.70489207,8.77616163 L9.31429327,6.16676041 C9.44212761,6.03892605 9.65593967,6.03389908 9.78471434,6.16267377 L10.2815938,6.65955323 C10.4116803,6.78963968 10.4085388,6.9989426 10.2775071,7.12997428 L6.95925927,10.4482222 C6.89767261,10.5098088 6.81613041,10.5428917 6.73375541,10.5462414 C6.63512454,10.5601257 6.53103126,10.5287286 6.45266973,10.450367 L4.80169873,8.79939603 C4.67185163,8.66954896 4.66967053,8.4612063 4.79975698,8.33111983 L5.29663643,7.83424043 C5.42541113,7.7054657 5.63211299,7.70338256 5.76491261,7.83618216 L6.70489207,8.77616163 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"edit\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.636 17.834l8.746-8.745-1.414-1.414-8.8 8.8 1.468 1.36zm-2.42.973c.45-.076 1.012-.173 1.685-.29l-1.383-1.282a173.71 173.71 0 0 0-.302 1.572zm10.459-11.84l1.414 1.415 1.2-1.2a.5.5 0 0 0 0-.707l-.708-.707a.5.5 0 0 0-.707 0l-1.2 1.2zm2.614-1.906l.707.707a1.5 1.5 0 0 1 0 2.121L7.45 19.435c-2.276.4-3.426.589-3.45.565-.024-.024.183-1.155.621-3.393L16.167 5.06a1.5 1.5 0 0 1 2.122 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"expand\",\"icon\":[\"24\",\"24\",[],\"\",\"M14.06 21.28l-.353.354-.707-.707.354-.354 7.22-7.22.353-.353.707.707-.354.354-7.22 7.22zm4 .465l-.353.353-.707-.707.354-.353 3.684-3.684.353-.354.707.707-.353.354-3.684 3.684z\"]}","import AddToPlaylist from './add-to-playlist.svg';\r\nimport Close from './close.svg';\r\nimport Delete from './delete.svg';\r\nimport Edit from './edit.svg';\r\nimport Expand from './expand.svg';\r\nimport Minus from './minus.svg';\r\nimport More from './more.svg';\r\nimport NewWindow from './new-window.svg';\r\nimport Plus from './plus.svg';\r\nimport Preview from './preview.svg';\r\nimport Search from './search.svg';\r\nimport Share from './share.svg';\r\nimport Upload from './upload.svg';\r\nimport Down from './down.svg';\r\nimport Right from './right.svg';\r\nimport UpDown from './up-down.svg';\r\nimport VisibleOff from './visible-off.svg';\r\nimport VisibleOn from './visible-on.svg';\r\nimport NoEdit from './no-edit.svg';\r\nimport EditClickView from './edit-clickview.svg';\r\nimport Share2 from './share2.svg';\r\n\r\nexport {\r\n AddToPlaylist,\r\n Close,\r\n Delete,\r\n Edit,\r\n Expand,\r\n Minus,\r\n More,\r\n NewWindow,\r\n Plus,\r\n Preview,\r\n Search,\r\n Share,\r\n Upload,\r\n Down,\r\n Right,\r\n UpDown,\r\n VisibleOff,\r\n VisibleOn,\r\n NoEdit,\r\n EditClickView,\r\n Share2\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"minus\",\"icon\":[\"24\",\"24\",[],\"\",\"\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"more\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"new-window\",\"icon\":[\"24\",\"24\",[],\"\",\"M17.395 5.526h-3.244a.763.763 0 0 1 0-1.526h5.086a.76.76 0 0 1 .763.763v5.086a.763.763 0 0 1-1.526 0V6.605l-5.172 5.172a.763.763 0 1 1-1.079-1.08l5.172-5.171zM8.5 5.5a.75.75 0 0 1 0 1.5H6.75a.25.25 0 0 0-.25.25v10c0 .138.112.25.25.25h10a.25.25 0 0 0 .25-.25V15.5a.75.75 0 1 1 1.5 0v1.75A1.75 1.75 0 0 1 16.75 19h-10A1.75 1.75 0 0 1 5 17.25v-10c0-.966.784-1.75 1.75-1.75H8.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"no-edit\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.321 14.15l.707.707-4.578 4.578c-2.276.4-3.426.589-3.45.565-.024-.024.183-1.155.621-3.393L9.2 12.028l.707.707-3.739 3.74 1.468 1.36 3.685-3.685zm2.828-2.829l2.233-2.232-1.414-1.414-2.233 2.232-.707-.707 4.14-4.14a1.5 1.5 0 0 1 2.12 0l.708.708a1.5 1.5 0 0 1 0 2.121l-4.14 4.14-.707-.708zm-8.933 7.486c.45-.076 1.012-.173 1.685-.29l-1.383-1.282a173.71 173.71 0 0 0-.302 1.572zm10.459-11.84l1.414 1.415 1.2-1.2a.5.5 0 0 0 0-.707l-.708-.707a.5.5 0 0 0-.707 0l-1.2 1.2zM4.646 5.355a.5.5 0 0 1 .708-.708L19.496 18.79a.5.5 0 1 1-.707.707L4.646 5.354z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"plus\",\"icon\":[\"24\",\"24\",[],\"\",\"M11 11V7.002a.999.999 0 1 1 2 0V11h3.998a.999.999 0 1 1 0 2H13v3.998a.999.999 0 1 1-2 0V13H7.002a.999.999 0 1 1 0-2H11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"preview\",\"icon\":[\"24\",\"24\",[],\"\",\"M17.278 17.333a3.056 3.056 0 1 0 0-6.11 3.056 3.056 0 0 0 0 6.11zm3.53-.637c.03.022.06.048.087.076l1.729 1.728a.794.794 0 1 1-1.124 1.124l-1.728-1.729a.801.801 0 0 1-.076-.088 4.278 4.278 0 1 1 1.112-1.112zM7.713 9C7.32 9 7 8.776 7 8.5s.32-.5.714-.5h8.572c.394 0 .714.224.714.5s-.32.5-.714.5H7.714zm-.357 3.5C7.16 12.5 7 12.276 7 12s.16-.5.357-.5h4.286c.197 0 .357.224.357.5s-.16.5-.357.5H7.357zM7.5 16a.5.5 0 1 1 0-1h4a.5.5 0 1 1 0 1h-4zm8.5 3a.5.5 0 1 1 0 1H6.5A2.5 2.5 0 0 1 4 17.5v-11A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5V9a.5.5 0 1 1-1 0V6.5A1.5 1.5 0 0 0 17.5 5h-11A1.5 1.5 0 0 0 5 6.5v11A1.5 1.5 0 0 0 6.5 19H16z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"right\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10l8 .014L12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"search\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.803 14.306l3.917 3.954a1 1 0 0 1-.007 1.417l-.018.018-.018.018a.997.997 0 0 1-1.41 0l-3.918-3.953-.3.214c-1.14.713-2.323 1.07-3.549 1.07-1.796 0-3.328-.642-4.597-1.925C4.634 13.836 4 12.296 4 10.5c0-1.796.634-3.328 1.903-4.597C7.172 4.634 8.704 4 10.5 4c1.796 0 3.329.634 4.597 1.903 1.27 1.269 1.904 2.801 1.904 4.597a6.447 6.447 0 0 1-1.027 3.507l-.17.3zM10.5 5.368c-1.425 0-2.637.5-3.635 1.497-.998.998-1.497 2.21-1.497 3.635 0 1.426.5 2.637 1.497 3.635.998.998 2.21 1.497 3.635 1.497 1.426 0 2.637-.499 3.635-1.497 1.027-1.026 1.54-2.238 1.54-3.635 0-1.397-.513-2.608-1.54-3.635-.998-.998-2.21-1.497-3.635-1.497z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"share\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.091 15.463a2.187 2.187 0 1 1-.392.782L8.91 13.35a2.187 2.187 0 1 1-.1-2.82l5.88-2.812a2.187 2.187 0 1 1 .378.79l-5.811 2.778a2.184 2.184 0 0 1 .045 1.281l5.79 2.896z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"share2\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.4216766,5.00521391 C19.613919,4.98125611 19.7682745,5.03986249 19.8847432,5.18103303 C20.0012119,5.32220356 20.0294106,5.48346256 19.9693393,5.66481001 L19.9693393,5.66481001 L14.1956074,19.738196 C14.0955154,19.912732 13.9481454,20 13.7534974,20 C13.5588494,20 13.4140159,19.912732 13.3189969,19.738196 L13.3189969,19.738196 L9.93477602,13.4796112 L4.20437042,9.12353139 C4.02183531,8.9778479 3.96157474,8.8005141 4.02358872,8.59152998 C4.0856027,8.38254586 4.23262042,8.26120315 4.46464188,8.22750185 L4.46464188,8.22750185 Z M18.2074971,7.35312765 L10.9727276,13.3209485 L13.6956405,18.351754 L18.2074971,7.35312765 Z M17.8703206,6.3505542 L5.65837825,8.98552539 L10.3489793,12.5526101 L17.8703206,6.3505542 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"up-down\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 14l8 .014L12 18l-4-4zm0-4l4-4 4 3.986L8 10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"upload\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.5 18.5h13v-2.75a.75.75 0 1 1 1.5 0V19a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3.25a.75.75 0 1 1 1.5 0v2.75zm7.249-11.796v8.57c0 .401-.35.726-.781.726-.432 0-.781-.325-.781-.725V6.704L7.89 9.658a.869.869 0 0 1-1.145 0 .692.692 0 0 1-.009-1.05l4.66-4.174a.869.869 0 0 1 1.144 0l4.66 4.174a.69.69 0 0 1 0 1.042.871.871 0 0 1-1.155.008L12.75 6.704z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-off\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.293 6.609l-.793.79A8.794 8.794 0 0 0 11.997 7C8.006 6.978 4 10.17 4 12c0 .925 1.062 2.216 2.63 3.254l-.715.714C4.174 14.76 3 13.228 3 12c0-2.44 4.5-6.025 9.003-6 1.119.006 2.239.234 3.29.609zm2.802 1.442C19.833 9.26 21 10.786 21 12c0 2.45-4.504 6-9 6-1.112 0-2.23-.223-3.279-.595l.794-.792A8.659 8.659 0 0 0 12 17c3.989 0 8-3.161 8-5 0-.911-1.055-2.196-2.62-3.235l.715-.714zm-7.65 7.635l.787-.785A3.005 3.005 0 0 0 15 12c0-.264-.034-.52-.098-.763l.787-.785a4 4 0 0 1-5.245 5.235zM8.318 13.57a4 4 0 0 1 5.257-5.246l-.785.782a3.003 3.003 0 0 0-3.687 3.68l-.785.784zm-3.466 6.285a.5.5 0 1 1-.706-.708l15-14.971a.5.5 0 1 1 .706.708l-15 14.97z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-on\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6zm1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12zm8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"arrow-left\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.182 11h11.89c.512 0 .928.448.928 1s-.416 1-.929 1H7.181l3.781 4.22a1.11 1.11 0 0 1 0 1.465c-.36.403-.943.418-1.311.045a.952.952 0 0 1-.032-.034l-5.343-5.963a1.112 1.112 0 0 1 0-1.466l5.343-5.963a.883.883 0 0 1 1.333 0c.378.421.378 1.066.01 1.477L7.182 11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"arrow-right\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.818 11H4.928C4.417 11 4 11.448 4 12s.416 1 .929 1h11.89l-3.781 4.22a1.112 1.112 0 0 0 0 1.465c.36.403.943.418 1.311.045a.952.952 0 0 0 .032-.034l5.343-5.963a1.112 1.112 0 0 0 0-1.466l-5.343-5.963a.883.883 0 0 0-1.333 0 1.115 1.115 0 0 0-.01 1.477L16.818 11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"caret\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10 16 10.0136253 12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-down\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.267 15.695L5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-left\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.305 11.267l5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-right\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.695 11.267c.407.41.407 1.056 0 1.466L9.79 18.696a1.046 1.046 0 0 1-1.474 0l-.01-.01a1.034 1.034 0 0 1 0-1.467L13.474 12l-5.17-5.22a1.034 1.034 0 0 1 0-1.465l.012-.011a1.046 1.046 0 0 1 1.474 0l5.905 5.963z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-up\",\"icon\":[\"24\",\"24\",[],\"\",\"M12.733 8.305l5.963 5.906a1.046 1.046 0 0 1 0 1.473l-.01.011a1.034 1.034 0 0 1-1.467 0L12 10.526l-5.22 5.17a1.034 1.034 0 0 1-1.465 0l-.011-.012a1.046 1.046 0 0 1 0-1.473l5.963-5.906a1.034 1.034 0 0 1 1.466 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"enter\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.613 13.959a.599.599 0 0 1-.213-.46c0-.155.058-.309.176-.426l3.75-3.75a.6.6 0 0 1 .848.848L7.446 12.9H13.5A3.9 3.9 0 0 0 17.4 9V6.747a.6.6 0 0 1 1.2 0V9a5.1 5.1 0 0 1-5.1 5.1H7.452l2.722 2.723a.6.6 0 0 1-.848.848L5.613 13.96z\"]}","import Caret from './caret.svg';\r\n\r\nimport ChevronUp from './chevron-up.svg';\r\nimport ChevronDown from './chevron-down.svg';\r\nimport ChevronLeft from './chevron-left.svg';\r\nimport ChevronRight from './chevron-right.svg';\r\n\r\nimport ArrowLeft from './arrow-left.svg';\r\nimport ArrowRight from './arrow-right.svg';\r\n\r\nimport Enter from './enter.svg';\r\n\r\nexport {\r\n Caret,\r\n ChevronUp,\r\n ChevronDown,\r\n ChevronLeft,\r\n ChevronRight,\r\n ArrowLeft,\r\n ArrowRight,\r\n Enter\r\n};\r\n","import './settings.ts';\r\nexport * from './ImportedSvgs';","module.exports = {\"prefix\":\"cv\",\"iconName\":\"archive\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.64 10.28a.55.55 0 1 1 1.1 0v6.878c0 1.582-1.386 2.842-3.07 2.842H6.33c-1.684 0-3.07-1.26-3.07-2.842V10.28a.55.55 0 1 1 1.1 0v6.877c0 .95.87 1.742 1.97 1.742h11.34c1.1 0 1.97-.793 1.97-1.742V10.28zM20.19 4c.99 0 1.81.747 1.81 1.696V7.99a.55.55 0 0 1-.55.55H2.55A.55.55 0 0 1 2 7.99V5.696C2 4.747 2.821 4 3.81 4h16.38zm.71 1.696c0-.317-.307-.596-.71-.596H3.81c-.403 0-.71.28-.71.596v1.742h17.8V5.696zm-5.83 5.73c0 .95-.821 1.697-1.81 1.697h-2.52c-.989 0-1.81-.747-1.81-1.696 0-.95.821-1.696 1.81-1.696h2.52c.989 0 1.81.747 1.81 1.696zm-1.1 0c0-.316-.307-.595-.71-.595h-2.52c-.403 0-.71.28-.71.596 0 .317.307.596.71.596h2.52c.403 0 .71-.28.71-.596z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"bell\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.588 17.995H6.152c-.636 0-1.152-.53-1.152-1.182 0-.221.06-.438.175-.626l2.128-2.92V9.722c0-2.187 1.447-4.027 3.411-4.567v-.012A1.143 1.143 0 0 1 13 5.128c2.017.502 3.515 2.369 3.515 4.594v3.545l2.303 2.92a1.2 1.2 0 0 1-.366 1.628 1.13 1.13 0 0 1-.61.18h-3.716a2.286 2.286 0 0 1-4.538 0zm1.161 0a1.143 1.143 0 0 0 2.216 0H10.75zm4.615-4.31V9.723c0-1.958-1.547-3.546-3.455-3.546-1.908 0-3.454 1.588-3.454 3.546v3.939l-.23.314-2.073 2.838H17.83l-2.467-3.127z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"bookmark\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.5 5h7A1.5 1.5 0 0 1 17 6.5v12.131a.2.2 0 0 1-.309.168L12 15.75 7.309 18.8A.2.2 0 0 1 7 18.63V6.5A1.5 1.5 0 0 1 8.5 5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"broadcast\",\"icon\":[\"24\",\"24\",[],\"\",\"M4.571 19C4.256 19 4 18.776 4 18.5s.256-.5.571-.5H19.43c.315 0 .571.224.571.5s-.256.5-.571.5H4.57zM4.125 5h15.75C20.496 5 21 5.537 21 6.2v9.6c0 .663-.504 1.2-1.125 1.2H4.125C3.504 17 3 16.463 3 15.8V6.2C3 5.537 3.504 5 4.125 5zM4 6v10h16V6H4zm6 2.35a.192.192 0 0 1 .295-.162l4.164 2.65a.192.192 0 0 1 0 .324l-4.164 2.65A.192.192 0 0 1 10 13.65v-5.3z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"calendar\",\"icon\":[\"24\",\"24\",[],\"\",\"M6.2 10.2V17a.8.8 0 0 0 .8.8h10a.8.8 0 0 0 .8-.8v-6.8H6.2zM16 5.5h2a1 1 0 0 1 1 1V17a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6.5a1 1 0 0 1 1-1h2v-.875a.625.625 0 1 1 1.25 0V5.5h5.5v-.875a.625.625 0 1 1 1.25 0V5.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"cog\",\"icon\":[\"24\",\"24\",[],\"\",\"M18.458 12c0 .944.514 1.722 1.542 2.333a10.98 10.98 0 0 1-.667 1.584c-.944-.223-1.805.055-2.583.833-.694.694-.917 1.556-.667 2.583A10.98 10.98 0 0 1 14.5 20c-.611-1.028-1.444-1.542-2.5-1.542s-1.889.514-2.5 1.542c-.5-.167-1.042-.389-1.625-.667.25-1.055.042-1.916-.625-2.583-.667-.667-1.528-.875-2.583-.625C4.389 15.542 4.167 15 4 14.5c1.028-.611 1.542-1.444 1.542-2.5 0-.944-.514-1.722-1.542-2.333a8.484 8.484 0 0 1 .667-1.584c.944.223 1.805-.055 2.583-.833.667-.667.875-1.528.625-2.583C8.458 4.389 9 4.167 9.5 4c.611 1.028 1.444 1.542 2.5 1.542S13.889 5.028 14.5 4c.5.167 1.042.389 1.625.667-.25 1.055-.042 1.916.625 2.583.778.778 1.639 1.056 2.583.833.306.611.528 1.14.667 1.584-1.028.61-1.542 1.389-1.542 2.333zM12 16.083c1.111 0 2.07-.402 2.875-1.208.806-.806 1.208-1.764 1.208-2.875s-.402-2.07-1.208-2.875c-.806-.806-1.764-1.208-2.875-1.208s-2.07.402-2.875 1.208c-.806.806-1.208 1.764-1.208 2.875s.402 2.07 1.208 2.875c.806.806 1.764 1.208 2.875 1.208z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"compass\",\"icon\":[\"24\",\"24\",[],\"\",\"M12,-1.71862524e-13 C13.3893905,-1.71862524e-13 14.5197317,1.12166968 14.5197317,2.50040137 C14.5197317,2.8215332 14.4594938,3.13263028 14.3442115,3.42156921 C16.2349366,3.84633285 17.9748233,4.78862459 19.3866372,6.17539419 L19.4316433,6.22680193 C21.3267651,8.11265804 22.5,10.713205 22.5,13.5805516 C22.5,19.3258216 17.7897333,24 12,24 L12,24 C6.21026669,24 1.5,19.3258216 1.5,13.5805516 L1.50006052,13.5243182 C1.50002021,13.5212739 1.5,13.5182249 1.5,13.5151711 L1.501,13.503 L1.50378159,13.2988768 C1.57785421,10.543134 2.73548466,8.05071265 4.56835673,6.22680193 L4.61336276,6.17539419 C6.02517671,4.78862459 7.76506343,3.84633285 9.65748913,3.42018903 C9.54056383,3.13263028 9.48031555,2.8215332 9.48031555,2.50040137 C9.48031555,1.12166968 10.6106095,-1.71862524e-13 12,-1.71862524e-13 Z M12,4.52624116 L11.6809164,4.53170146 C11.6454989,4.53291535 11.610132,4.53433052 11.5748169,4.53594584 L11.6816694,4.53162088 C11.5883913,4.53477816 11.4953516,4.53932139 11.4025747,4.54524062 L11.5748169,4.53594584 C11.4679256,4.54083509 11.3615084,4.54755809 11.2555967,4.55608379 L11.4025747,4.54524062 C11.3068176,4.55134999 11.2113405,4.55892518 11.1161702,4.56795525 L11.2555967,4.55608379 C11.095392,4.56897997 10.9363438,4.5860008 10.7785603,4.60703883 C10.7467123,4.6104578 10.7154515,4.61475211 10.6842289,4.61920452 L10.7785603,4.60703883 C10.6768565,4.62059949 10.5756781,4.63582921 10.4750543,4.65269924 L10.6842289,4.61920452 C10.600263,4.63117821 10.5165735,4.64429522 10.4331795,4.65854779 L10.4750543,4.65269924 C9.11485909,4.88074187 7.85598275,5.40850943 6.77005357,6.16492738 L8.00490498,7.39068924 C8.27354347,7.65726684 8.27354347,8.0894535 8.00490498,8.35612485 C7.87046765,8.48939021 7.69450873,8.55604633 7.5184081,8.55604633 C7.34230747,8.55604633 7.16634856,8.48943709 7.03200569,8.35612485 L5.70204148,7.03485023 C4.13204115,8.52299364 3.09475895,10.5601022 2.90659433,12.8322227 L4.30759576,12.8325787 C4.68743083,12.8325787 4.99546522,13.1382031 4.99546522,13.5151711 C4.99546522,13.892186 4.68747807,14.1977635 4.30764299,14.1977635 L2.89670934,14.1976473 C3.02371908,16.0609257 3.72135566,17.7714185 4.81716961,19.1579915 L4.97167812,19.3482139 C5.26113447,19.6949337 5.57609243,20.0199666 5.91367078,20.3204536 L7.03200569,19.2111609 C7.30069142,18.9445833 7.73612479,18.9445833 8.00490498,19.2111609 C8.27354347,19.4777385 8.27354347,19.9099252 8.00490498,20.1765497 L7.01386949,21.160078 C8.44796715,22.0922041 10.1613427,22.6346745 12,22.6346745 L12,22.6346745 C13.8583409,22.6346745 15.5887033,22.0805272 17.0320921,21.1300078 L16.0701299,20.1765497 C15.8014914,19.909972 15.8014914,19.4777854 16.0701299,19.2111609 C16.3388156,18.9445833 16.774249,18.9445833 17.042982,19.2111609 L18.1252566,20.2856043 C18.4481451,19.9948825 18.7500205,19.681572 19.0283219,19.3482139 L19.1828304,19.1579915 C20.2466397,17.8119151 20.9351906,16.1605635 21.0907063,14.3605101 L21.1032907,14.1976527 L21.1032907,14.1976527 L19.4302507,14.1977635 C19.0504157,14.1977635 18.7423813,13.8921391 18.7423813,13.5151711 C18.7423813,13.1381562 19.0504157,12.8325787 19.4302507,12.8325787 L21.0934057,12.8322227 C20.9067892,10.5787961 19.8849698,8.55653016 18.3366017,7.07169263 L17.0430292,8.35607798 C16.9085919,8.48943709 16.732633,8.55604633 16.5565323,8.55604633 C16.3804317,8.55604633 16.2044728,8.48943709 16.0701299,8.35612485 C15.8014914,8.08954725 15.8014914,7.65736059 16.0701299,7.39068924 L17.2742569,6.19598696 C16.1894526,5.4308071 14.9295636,4.89482891 13.5669368,4.65983993 C13.5528409,4.65615858 13.538853,4.65380129 13.5248569,4.65147595 L13.5669368,4.65983993 C13.4834378,4.64544029 13.3995531,4.63217086 13.3152992,4.62004816 L13.5248569,4.65147595 C13.4243139,4.63477151 13.3233471,4.61971567 13.2219896,4.60632197 L13.3152992,4.62004816 C13.1723723,4.59948341 13.0283832,4.58221861 12.8834131,4.56833442 C12.8374466,4.56355426 12.7909906,4.55949885 12.7444647,4.55579028 L12.8834131,4.56833442 C12.7886701,4.55926062 12.6935082,4.5516307 12.5979499,4.54546716 L12.7444647,4.55579028 C12.6381278,4.54731418 12.5314263,4.5406499 12.4243976,4.53581255 L12.5979499,4.54546716 C12.5053597,4.53949506 12.4123973,4.53489967 12.3190836,4.53170146 L12.4243976,4.53581255 C12.2834709,4.52944313 12.1419768,4.52624116 12,4.52624116 Z M12.2098775,18.4456908 C12.3524617,18.4551964 12.4902931,18.464702 12.6328773,18.4884661 C12.6851582,18.4932189 12.7421919,18.5074773 12.7944727,18.5169829 C12.8039783,18.5169829 12.813484,18.5169829 12.8229896,18.5217357 C12.8990345,18.5692638 12.984585,18.5740166 13.0701355,18.5930278 C13.0938996,18.5977806 13.1224164,18.6025334 13.1509332,18.612039 C13.1746973,18.6215447 13.1984613,18.6310503 13.2174725,18.6500615 C13.2364838,18.6690727 13.255495,18.6833311 13.2887647,18.688084 C13.3172815,18.6928368 13.3362927,18.7213536 13.3362927,18.7546232 C13.3362927,18.7831401 13.3315399,18.8116569 13.3267871,18.835421 C13.3077759,18.9304771 13.2887647,19.030286 13.2650006,19.1253422 C13.2602478,19.153859 13.2507422,19.1823759 13.2412366,19.2108927 C13.2174725,19.277432 13.2127197,19.3487241 13.1937085,19.4152634 C13.1794501,19.4532859 13.1746973,19.4960611 13.1556861,19.5340836 C13.1414276,19.5673532 13.131922,19.6006229 13.1034052,19.6386453 C13.0891468,19.6529038 13.084394,19.6766678 13.0796411,19.7004318 C13.0606299,19.7527127 13.0321131,19.7717239 12.9750794,19.7622183 L12.9750794,19.7622183 L12.960821,19.7622183 C12.8562592,19.7384543 12.7564503,19.7194431 12.6566413,19.6909262 C12.5473268,19.6624094 12.4380122,19.6529038 12.3286977,19.6576566 C12.3001808,19.6576566 12.271664,19.6671622 12.2431471,19.6766678 C12.2051247,19.6909262 12.1956191,19.7194431 12.1956191,19.7574655 C12.1956191,19.7764767 12.2003719,19.7907352 12.2193831,19.795488 C12.2811696,19.8287576 12.3382033,19.8620273 12.419001,19.8762857 C12.442765,19.8810385 12.4617762,19.8952969 12.4807875,19.9048025 C12.5045515,19.9190609 12.5235627,19.9285666 12.542574,19.9380722 C12.689911,20.0093643 12.8467536,20.0711508 12.9798322,20.1709597 C13.084394,20.2422518 13.1604389,20.3325551 13.2032141,20.4513753 L13.2032141,20.4513753 L13.3077759,20.7745662 C13.3410455,20.8933864 13.3362927,21.0217122 13.3315399,21.1452851 C13.3267871,21.2403413 13.3125287,21.3401502 13.279259,21.4304535 C13.2745062,21.4352064 13.2745062,21.4399592 13.2745062,21.4494648 C13.2840118,21.5587793 13.2507422,21.6585883 13.1889557,21.7441388 C13.084394,21.8962286 12.9513154,22.0293072 12.7897199,22.1291162 C12.6851582,22.1956555 12.5710908,22.2336779 12.4475178,22.257442 C12.3239448,22.281206 12.1956191,22.3144756 12.0672933,22.3287341 C11.9579787,22.3429925 11.8486642,22.3429925 11.7441024,22.3382397 C11.6157766,22.3239812 11.4922036,22.3002172 11.3638778,22.2764532 C11.3448666,22.2764532 11.3258554,22.2669476 11.3068442,22.2621948 C11.2165408,22.2194195 11.1262375,22.2051611 11.0311814,22.1956555 C10.9076084,22.1766442 10.7887882,22.1481274 10.6652152,22.1243634 C10.6366984,22.1196106 10.6081815,22.0958465 10.6081815,22.0625769 C10.6081815,21.9675207 10.5844175,21.8677118 10.5986759,21.7726556 C10.6129344,21.6015546 10.62244,21.4257007 10.6414512,21.2545997 C10.6509568,21.1642964 10.6747208,21.073993 10.6984849,20.9789369 C10.7127433,20.9219032 10.7507658,20.8981392 10.8125522,20.902892 C10.9028556,20.9123976 10.9931589,20.9171504 11.0787094,20.9314088 C11.188024,20.9456672 11.2925857,20.9599257 11.3971475,20.9931953 C11.4541812,21.0074537 11.5112149,21.0169593 11.5682485,21.0217122 C11.6633047,21.026465 11.753608,21.026465 11.8439113,21.026465 C11.8866866,21.026465 11.9294619,20.9836897 11.9342147,20.9456672 C11.9389675,20.9123976 11.9152034,20.8696223 11.8724282,20.8553639 C11.8391585,20.8458583 11.7963833,20.8363527 11.7583608,20.8315999 C11.7345968,20.8268471 11.7108328,20.8220943 11.6870687,20.8220943 C11.6015182,20.8173415 11.5254733,20.7935774 11.4446756,20.7650606 C11.3638778,20.7317909 11.2783273,20.7127797 11.1975296,20.6795101 C11.088215,20.6414876 10.9884061,20.5797011 10.8981028,20.508409 C10.817305,20.4466225 10.7792826,20.361072 10.7507658,20.2707687 C10.7079905,20.1234316 10.6937321,19.9713418 10.7127433,19.819252 C10.7270017,19.7051846 10.7317545,19.5911173 10.7507658,19.4818027 C10.793541,19.2441624 10.8885972,19.030286 11.0596982,18.859185 C11.2070352,18.711848 11.3876419,18.612039 11.5920126,18.5550054 C11.7060799,18.5217357 11.8249001,18.4932189 11.9437203,18.4694548 C12.0340236,18.4551964 12.124327,18.4551964 12.2098775,18.4456908 Z M14.7328664,9.61765309 C15.1590885,9.61765309 15.5675493,9.84298078 15.7988231,10.2056519 C16.0296718,10.5678544 16.0563136,11.0171504 15.8699625,11.4074308 L14.1147664,15.0838768 C13.9903906,15.3443138 13.7774449,15.5556727 13.5149472,15.6790944 L9.80998461,17.4209191 C9.63676546,17.5022939 9.45419332,17.5435907 9.2670864,17.5435907 C8.84086431,17.5435907 8.43240343,17.3182631 8.20112965,16.9555919 C7.97028099,16.5933895 7.94363916,16.1440935 8.12999028,15.753813 L9.88518638,12.077367 C10.0095622,11.81693 10.2225079,11.6055242 10.4850055,11.4821494 L14.1899681,9.74032473 C14.3631873,9.65894988 14.5457594,9.61765309 14.7328664,9.61765309 Z M14.4894526,11.1101033 L11.1110414,12.6984127 L9.51045294,16.050953 L12.8888641,14.4626436 L14.4894526,11.1101033 Z M13.0226075,6.1644377 C13.0938996,6.1691905 13.1651917,6.1691905 13.2364838,6.1691905 L13.2364838,6.1691905 L13.5121466,6.18344892 C13.5596746,6.18344892 13.5929443,6.21196577 13.5976971,6.26424664 C13.6309667,6.56842629 13.6547308,6.87260593 13.6357196,7.17678557 C13.5976971,7.72335837 13.6262139,8.27468397 13.6167083,8.82125677 C13.6167083,9.03513308 13.6214611,9.24900939 13.6452252,9.46763851 L13.6452252,9.46763851 L13.6452252,9.59121149 C13.6404724,9.6625036 13.6024499,9.69102044 13.5359106,9.68626763 C13.526405,9.68626763 13.5121466,9.69102044 13.502641,9.69102044 C13.4836297,9.69577324 13.4598657,9.70527886 13.4408545,9.70052605 C13.3695624,9.68626763 13.2935175,9.69102044 13.2222254,9.69102044 C13.1414276,9.68626763 13.0606299,9.69577324 12.9798322,9.70052605 C12.837248,9.71003166 12.689911,9.71953728 12.542574,9.72429009 C12.4997987,9.72904289 12.4760347,9.70527886 12.4570234,9.6672564 L12.4570234,9.6672564 L12.271664,9.34881834 C12.1195741,9.07315554 11.9532259,8.81175116 11.8201473,8.52658274 L11.8201473,8.52658274 L11.8011361,8.49331309 L11.8011361,8.53608835 C11.7916305,8.81650396 11.777372,9.09216676 11.7821249,9.37258237 C11.7821249,9.4628857 11.777372,9.55318904 11.7726192,9.64349237 C11.7678664,9.71478447 11.729844,9.75280693 11.6585519,9.76231254 L11.6585519,9.76231254 L11.5112149,9.77657096 C11.4066531,9.78607658 11.3068442,9.76231254 11.2070352,9.75280693 L11.2070352,9.75280693 L10.8077994,9.75280693 C10.7555186,9.75280693 10.6747208,9.78132377 10.6557096,9.72429009 C10.646204,9.70527886 10.6414512,9.69102044 10.646204,9.61972833 C10.646204,9.58170588 10.6509568,9.56269465 10.6509568,9.51991939 L10.6509568,9.51991939 L10.6604624,9.31079588 L10.6794736,8.66441414 C10.6889793,8.33171766 10.7032377,7.99902117 10.6937321,7.66632469 C10.6889793,7.45720118 10.6794736,7.24807768 10.669968,7.04370698 C10.669968,7.03420136 10.669968,7.01994294 10.6652152,7.01043733 C10.6319456,6.81081944 10.6366984,6.60644874 10.6557096,6.40207804 C10.6604624,6.39257243 10.6557096,6.37831401 10.6604624,6.36405559 C10.6604624,6.32603313 10.6984849,6.28801068 10.7365073,6.28325787 C10.769777,6.28325787 10.8077994,6.28801068 10.8410691,6.28801068 L10.8410691,6.28801068 L10.8838443,6.28801068 C11.0216757,6.26424664 11.1595071,6.24048261 11.3020914,6.24523541 L11.3020914,6.24523541 L11.458934,6.2357298 C11.5444845,6.23097699 11.630035,6.22622419 11.7155856,6.22622419 C11.729844,6.22622419 11.7488552,6.23097699 11.7631136,6.24048261 C11.7821249,6.25474103 11.8011361,6.25949384 11.8249001,6.25474103 C11.877181,6.24523541 11.9056978,6.25949384 11.9247091,6.30702191 C11.9864956,6.47812295 12.0767989,6.63971839 12.171855,6.79180821 C12.2478999,6.91538119 12.3001808,7.04370698 12.3477089,7.17678557 C12.3952369,7.29085294 12.4475178,7.4001675 12.5093043,7.50948206 L12.5093043,7.50948206 L12.5235627,7.52849329 C12.5235627,7.52849329 12.5283155,7.52849329 12.5330683,7.52374048 L12.5330683,7.52374048 L12.5330683,7.50472925 C12.5330683,7.28134733 12.5330683,7.0579654 12.5283155,6.83458347 C12.5283155,6.69199927 12.5188099,6.55416787 12.5188099,6.41633646 L12.5188099,6.41633646 L12.5188099,6.38781962 C12.5093043,6.30702191 12.5473268,6.24998822 12.6091133,6.20721296 C12.6328773,6.18344892 12.6613941,6.17394331 12.689911,6.17869612 C12.8039783,6.18344892 12.9132929,6.1644377 13.0226075,6.1644377 Z M12,1.36518483 C11.3691932,1.36518483 10.8560545,1.87443384 10.8560545,2.50035449 C10.8560545,2.7121822 10.9139202,2.91435368 11.0223297,3.09018146 C11.3472278,3.06046277 11.6746768,3.04536905 12,3.04536905 C12.3250871,3.04536905 12.6524415,3.06046277 12.977623,3.09027521 C13.0860798,2.91444743 13.1439455,2.7121822 13.1439455,2.50035449 C13.1439455,1.87438696 12.6308068,1.36518483 12,1.36518483 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"email\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.09090909,16.5044548 C5.09090909,16.7087643 5.2517754,16.875 5.44811273,16.875 L18.5518873,16.875 C18.7495118,16.875 18.9090909,16.7100912 18.9090909,16.5044548 L18.9090909,7.49554521 C18.9090909,7.29123572 18.7482246,7.125 18.5518873,7.125 L5.44811273,7.125 C5.25048819,7.125 5.09090909,7.28990884 5.09090909,7.49554521 L5.09090909,16.5044548 Z M18.5518873,6 C19.3516578,6 20,6.67088532 20,7.49554521 L20,16.5044548 C20,17.3304216 19.3529644,18 18.5518873,18 L5.44811273,18 C4.64834215,18 4,17.3291147 4,16.5044548 L4,7.49554521 C4,6.6695784 4.6470356,6 5.44811273,6 L18.5518873,6 Z M5.28875242,8.40614655 C5.12000436,8.66349123 5.18550432,9.01318255 5.43505067,9.18720399 L11.4273828,13.3659638 L11.7273691,13.5751595 L12.0307568,13.3712472 L18.2317117,9.20347374 C18.4840876,9.03384736 18.5553362,8.68535347 18.3908501,8.42509084 C18.2446401,8.19374628 17.9613854,8.10998685 17.7229933,8.21336378 L17.6360272,8.26099773 L17.6360272,8.26099773 L17.634306,8.26215307 L17.6301531,8.26494056 L17.622066,8.27036883 C17.597586,8.28680036 17.530266,8.33198706 17.3451362,8.4562505 L17.2583634,8.51449439 C17.2426263,8.52505752 17.2262335,8.53606078 17.2091576,8.5475225 L17.0982873,8.62194118 C16.4410163,9.06311671 14.980414,10.0435068 11.7346312,12.2221514 C11.170907,11.8290376 10.4395891,11.3190523 9.69015295,10.7964321 L9.28047118,10.5107401 C7.64174412,9.36797184 6.04614146,8.25527648 6.04614146,8.25527648 C5.7965951,8.08125504 5.45750048,8.14880187 5.28875242,8.40614655 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-excel\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5.09 7l-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6L11.09 12z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-img\",\"icon\":[\"24\",\"24\",[],\"\",\"M5 6v12h14V6H5zm0-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm2.4 10.3a.5.5 0 0 1-.8-.6l3-4a.5.5 0 0 1 .754-.054l.579.58 1.765-2.513a.5.5 0 0 1 .83.015l3.891 6a.5.5 0 0 1-.838.544l-3.49-5.379-1.682 2.394a.5.5 0 0 1-.763.067l-.592-.593L7.4 15.3zm.6-4.8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-pdf\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.345 1.345 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292.142-.358.286-.762.43-1.205a41.787 41.787 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a7.96 7.96 0 0 1-.086 1.088c.158.195.33.398.513.606a30.903 30.903 0 0 0 1.73 1.81 14.011 14.011 0 0 0 .863.761c.464-.07.87-.106 1.213-.105.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a8.753 8.753 0 0 1-.538-.38 21.15 21.15 0 0 0-.944.191c-.39.087-.798.188-1.22.3a45.345 45.345 0 0 0-2.27.667zM6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm4.43 8.39c-.07.21-.138.412-.207.606l.055-.016a46.181 46.181 0 0 1 1.608-.459 33.869 33.869 0 0 1 1.538-.37 15.994 15.994 0 0 1-.378-.35 31.732 31.732 0 0 1-1.882-1.98l-.083.32a38.471 38.471 0 0 1-.652 2.248zm-2.157 2.603c.12-.107.248-.279.382-.51a2.35 2.35 0 0 0-.553.37c-.092.092-.09.086-.083.096a.54.54 0 0 0 .138.116c.017.01.025.01.116-.072zm7.434-2.3c-.047 0-.095 0-.146.002.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08zm-5.36-5.49c.065.156.16.334.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-ppt\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5.07 6.96h1.22c.18 0 .353-.013.52-.04a1.21 1.21 0 0 0 .44-.155.844.844 0 0 0 .305-.325c.077-.14.115-.323.115-.55 0-.227-.038-.41-.115-.55a.844.844 0 0 0-.305-.325 1.21 1.21 0 0 0-.44-.155 3.288 3.288 0 0 0-.52-.04h-1.22v2.14zM9.5 8.6h3.22c.447 0 .827.065 1.14.195.313.13.568.302.765.515.197.213.34.457.43.73a2.715 2.715 0 0 1 0 1.695c-.09.277-.233.522-.43.735a2.133 2.133 0 0 1-.765.515c-.313.13-.693.195-1.14.195h-1.65v2.56H9.5V8.6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-word\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54l-1.92 7.14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-zip\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5 0h1v1h-1V5zm1 1h1v1h-1V6zm-1 1h1v1h-1V7zm1 1h1v1h-1V8zm-1 1h1v1h-1V9zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm6.586 1H6v14h12V9.414L12.586 5zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0V10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"folder\",\"icon\":[\"24\",\"24\",[],\"\",\"M12.685 6H18.5A1.5 1.5 0 0 1 20 7.5v11a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 18.5v-13A1.5 1.5 0 0 1 5.5 4h4.66a1.5 1.5 0 0 1 1.095.474L12.685 6zM5.5 5a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5h-6.248l-1.727-1.842A.5.5 0 0 0 10.161 5H5.5zM5 10V9h14v1H5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"handle\",\"icon\":[\"16\",\"16\",[],\"\",\"M1 0h14a1 1 0 0 1 1 1v1.2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 6.4h14a1 1 0 0 1 1 1v1.2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7.4a1 1 0 0 1 1-1zm0 6.4h14a1 1 0 0 1 1 1V15a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-1.2a1 1 0 0 1 1-1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"heart-outline\",\"icon\":[\"24\",\"24\",[],\"\",\"m11.466 22.776c.141.144.333.224.534.224s.393-.08.534-.224l9.594-9.721c2.491-2.523 2.491-6.63 0-9.154-1.21-1.226-2.819-1.901-4.532-1.901s-3.321.675-4.531 1.9l-1.065 1.08-1.065-1.079c-1.21-1.226-2.819-1.901-4.531-1.901-1.713 0-3.322.675-4.532 1.901-2.491 2.524-2.491 6.631 0 9.153zm-8.527-17.822c.926-.937 2.157-1.454 3.464-1.454 1.308 0 2.538.517 3.463 1.455l1.599 1.62c.281.285.786.285 1.067 0l1.599-1.621c.928-.937 2.158-1.454 3.465-1.454 1.308 0 2.538.517 3.464 1.454 1.917 1.943 1.917 5.104 0 7.048l-9.06 9.181-9.061-9.182c-1.917-1.942-1.917-5.104 0-7.047z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"heart\",\"icon\":[\"24\",\"24\",[],\"\",\"m11.466 22.776c.141.144.333.224.534.224s.393-.08.534-.224l9.594-9.721c4.001-4.053 1.158-11.055-4.532-11.055-3.417 0-4.985 2.511-5.596 2.98-.614-.471-2.172-2.98-5.596-2.98-5.672 0-8.55 6.984-4.531 11.055z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"history\",\"icon\":[\"24\",\"24\",[],\"\",\"M12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 Z M12,2.05714286 C6.50871163,2.05714286 2.05714286,6.50871163 2.05714286,12 C2.05714286,17.4912884 6.50871163,21.9428571 12,21.9428571 C17.4912884,21.9428571 21.9428571,17.4912884 21.9428571,12 C21.9428571,6.50871163 17.4912884,2.05714286 12,2.05714286 Z M12,5.82857143 C12.5680643,5.82857143 13.0285714,6.28907854 13.0285714,6.85714286 L13.0285714,11.5739518 L17.0130241,15.5584045 C17.4147062,15.9600866 17.4147062,16.611342 17.0130241,17.0130241 C16.611342,17.4147062 15.9600866,17.4147062 15.5584045,17.0130241 L11.2726902,12.7273098 C11.0797956,12.5344153 10.9714286,12.2727941 10.9714286,12 L10.9714286,6.85714286 C10.9714286,6.28907854 11.4319357,5.82857143 12,5.82857143 Z\"]}","import Archive from './archive.svg';\r\nimport Bell from './bell.svg';\r\nimport Bookmark from './bookmark.svg';\r\nimport Broadcast from './broadcast.svg';\r\nimport Calendar from './calendar.svg';\r\nimport Cog from './cog.svg';\r\nimport Folder from './folder.svg';\r\nimport Handle from './handle.svg';\r\nimport Heart from './heart.svg';\r\nimport HeartOutline from './heart-outline.svg';\r\nimport Interactive from './interactive.svg';\r\nimport Link from './link.svg';\r\nimport Playlist from './playlist.svg';\r\nimport PublisherArchive from './publisher-archive.svg';\r\nimport Resources from './resources.svg';\r\nimport StarOutline from './star-o.svg';\r\nimport Star from './star.svg';\r\nimport Tag from './tag.svg';\r\nimport Time from './time.svg';\r\nimport Video from './video.svg';\r\nimport Subject from './subject.svg';\r\nimport Series from './series.svg';\r\nimport WhiteWave from './white-wave.svg';\r\nimport Compass from './compass.svg';\r\nimport History from './history.svg';\r\nimport Email from './email.svg';\r\nimport YearLevel from './year-level.svg';\r\nimport Subjects from './subjects.svg';\r\n\r\nimport File from './file.svg';\r\nimport FilePDF from './file-pdf.svg';\r\nimport FileImg from './file-img.svg';\r\nimport FilePowerpoint from './file-ppt.svg';\r\nimport FileWord from './file-word.svg';\r\nimport FileZip from './file-zip.svg';\r\nimport FileExcel from './file-excel.svg';\r\n\r\nexport {\r\n Archive,\r\n Bell,\r\n Bookmark,\r\n Broadcast,\r\n Calendar,\r\n Cog,\r\n Folder,\r\n Handle,\r\n Interactive,\r\n Link,\r\n Playlist,\r\n PublisherArchive,\r\n Resources,\r\n StarOutline,\r\n Star,\r\n Tag,\r\n Time,\r\n Video,\r\n Subject,\r\n Series,\r\n File,\r\n FilePDF,\r\n FileImg,\r\n FilePowerpoint,\r\n FileWord,\r\n FileZip,\r\n FileExcel,\r\n Heart,\r\n HeartOutline,\r\n WhiteWave,\r\n Compass,\r\n History,\r\n Email,\r\n YearLevel,\r\n Subjects\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"interactive\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.978 13.65l7.525-9.99a.2.2 0 0 1 .357.154l-1.289 7.5 5.194-1.04a.2.2 0 0 1 .198.318l-7.447 9.733a.2.2 0 0 1-.355-.16l1.268-6.566-5.277.37a.2.2 0 0 1-.174-.32z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"link\",\"icon\":[\"24\",\"24\",[],\"\",\"M17 10c2.2 0 4 1.8 4 4s-1.8 4-4 4h-5a3.99 3.99 0 0 1-3-1.367v-.028a4.447 4.447 0 0 1-.889-2.679c0-.698.162-1.356.443-1.94A4 4 0 0 1 12 10h1.872v.098c0 .573-.322 1.081-.818 1.402H12c-.722 0-1.368.316-1.824.811-.453.418-.732.976-.732 1.591v.196c0 .575.244 1.1.645 1.508.46.545 1.146.894 1.911.894h5c1.375 0 2.5-1.125 2.5-2.5s-1.125-2.5-2.5-2.5h-.686a5.22 5.22 0 0 0 .24-1.5H17zm-9.556 3.926l.002.074H7c-2.2 0-4-1.8-4-4s1.8-4 4-4h5c1.462 0 2.743.797 3.441 1.975a4.48 4.48 0 0 1-.44 4.63v.024a3.982 3.982 0 0 1-3 1.37h-1.873v-.096c0-.574.322-1.082.817-1.403H12c.722 0 1.368-.316 1.824-.811.452-.418.731-.976.731-1.591v-.195c0-.576-.244-1.101-.645-1.51A2.496 2.496 0 0 0 12 7.5H7A2.507 2.507 0 0 0 4.5 10c0 1.375 1.125 2.5 2.5 2.5h.642c-.128.452-.198.93-.198 1.426z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"playlist\",\"icon\":[\"24\",\"24\",[],\"\",\"M4,19.0049107 C4,19.5548349 4.44525903,20 4.99508929,20 L19.0049107,20 C19.5548349,20 20,19.554741 20,19.0049107 L20,4.99508929 C20,4.44516513 19.554741,4 19.0049107,4 L4.99508929,4 C4.44516513,4 4,4.44525903 4,4.99508929 L4,19.0049107 Z M4.99508929,3 L19.0049107,3 C20.1067681,3 21,3.8926228 21,4.99508929 L21,19.0049107 C21,20.1067681 20.1073772,21 19.0049107,21 L4.99508929,21 C3.8932319,21 3,20.1073772 3,19.0049107 L3,4.99508929 C3,3.8932319 3.8926228,3 4.99508929,3 Z M17.5,17.3 C17.7761424,17.3 18,17.0761424 18,16.8 C18,16.5238576 17.7761424,16.3 17.5,16.3 L9.5,16.3 C9.22385763,16.3 9,16.5238576 9,16.8 C9,17.0761424 9.22385763,17.3 9.5,17.3 L17.5,17.3 Z M17.5,12.7 C17.7761424,12.7 18,12.4761424 18,12.2 C18,11.9238576 17.7761424,11.7 17.5,11.7 L9.5,11.7 C9.22385763,11.7 9,11.9238576 9,12.2 C9,12.4761424 9.22385763,12.7 9.5,12.7 L17.5,12.7 Z M8.07195299,7.22930174 L6.86542219,6.50538326 C6.38401051,6.21653625 6,6.43413716 6,6.98678206 L6,8.51032805 C6,9.06455544 6.38746271,9.27850253 6.86542219,8.99172685 L8.07195299,8.26780837 C8.55336467,7.97896136 8.54991246,7.51607743 8.07195299,7.22930174 Z M8.07195299,11.7293017 L6.86542219,11.0053833 C6.38401051,10.7165363 6,10.9341372 6,11.4867821 L6,13.010328 C6,13.5645554 6.38746271,13.7785025 6.86542219,13.4917268 L8.07195299,12.7678084 C8.55336467,12.4789614 8.54991246,12.0160774 8.07195299,11.7293017 Z M8.07195299,16.2293017 L6.86542219,15.5053833 C6.38401051,15.2165363 6,15.4341372 6,15.9867821 L6,17.510328 C6,18.0645554 6.38746271,18.2785025 6.86542219,17.9917268 L8.07195299,17.2678084 C8.55336467,16.9789614 8.54991246,16.5160774 8.07195299,16.2293017 Z M17.5,8.3 C17.7761424,8.3 18,8.07614237 18,7.8 C18,7.52385763 17.7761424,7.3 17.5,7.3 L9.5,7.3 C9.22385763,7.3 9,7.52385763 9,7.8 C9,8.07614237 9.22385763,8.3 9.5,8.3 L17.5,8.3 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"publisher-archive\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.6403207,10.2808023 C19.6403207,9.97696656 19.8864872,9.73065903 20.1901489,9.73065903 C20.4938106,9.73065903 20.7399771,9.97696656 20.7399771,10.2808023 L20.7399771,17.1575931 C20.7399771,18.7397289 19.3544729,20 17.6701031,20 L6.32989691,20 C4.64552709,20 3.26002291,18.7397289 3.26002291,17.1575931 L3.26002291,10.2808023 C3.26002291,9.97696656 3.50618937,9.73065903 3.80985109,9.73065903 C4.11351281,9.73065903 4.35967927,9.97696656 4.35967927,10.2808023 L4.35967927,17.1575931 C4.35967927,18.1074218 5.23070097,18.8997135 6.32989691,18.8997135 L17.6701031,18.8997135 C18.769299,18.8997135 19.6403207,18.1074218 19.6403207,17.1575931 L19.6403207,10.2808023 Z M20.1901489,4 C21.1786273,4 22,4.74713037 22,5.69627507 L22,7.98853868 C22,8.29237442 21.7538335,8.53868195 21.4501718,8.53868195 L2.54982818,8.53868195 C2.24616646,8.53868195 2,8.29237442 2,7.98853868 L2,5.69627507 C2,4.74713037 2.82137271,4 3.80985109,4 L20.1901489,4 Z M20.9003436,5.69627507 C20.9003436,5.37943754 20.5934534,5.10028653 20.1901489,5.10028653 L3.80985109,5.10028653 C3.40654659,5.10028653 3.09965636,5.37943754 3.09965636,5.69627507 L3.09965636,7.43839542 L20.9003436,7.43839542 L20.9003436,5.69627507 Z M15.069874,11.4269341 C15.069874,12.3760788 14.2485013,13.1232092 13.2600229,13.1232092 L10.7399771,13.1232092 C9.75149871,13.1232092 8.930126,12.3760788 8.930126,11.4269341 C8.930126,10.4777894 9.75149871,9.73065903 10.7399771,9.73065903 L13.2600229,9.73065903 C14.2485013,9.73065903 15.069874,10.4777894 15.069874,11.4269341 Z M13.9702176,11.4269341 C13.9702176,11.1100966 13.6633274,10.8309456 13.2600229,10.8309456 L10.7399771,10.8309456 C10.3366726,10.8309456 10.0297824,11.1100966 10.0297824,11.4269341 C10.0297824,11.7437716 10.3366726,12.0229226 10.7399771,12.0229226 L13.2600229,12.0229226 C13.6633274,12.0229226 13.9702176,11.7437716 13.9702176,11.4269341 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"resources\",\"icon\":[\"24\",\"24\",[],\"\",\"M4 6.83c0-.523.423-.948.948-.948H17.17c.524 0 .949.423.949.949v12.22a.947.947 0 0 1-.949.949H4.95a.947.947 0 0 1-.95-.948V6.83zm.941 12.222c0 .005 12.228.007 12.228.007.005 0 .007-12.228.007-12.228 0-.005-12.228-.007-12.228-.007-.005 0-.007 12.228-.007 12.228zm2.353-9.405a.47.47 0 1 1 0-.941h7.588a.47.47 0 1 1 0 .941H7.294zm0 2.824a.47.47 0 1 1 0-.942h7.588a.47.47 0 1 1 0 .942H7.294zm0 2.823a.47.47 0 1 1 0-.941h2.88a.47.47 0 1 1 0 .941h-2.88zM6.353 4.941a.47.47 0 1 1 0-.941h11.766C19.155 4 20 4.848 20 5.88v12.232a.47.47 0 1 1-.941 0V5.88a.945.945 0 0 0-.94-.938H6.353z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"series\",\"icon\":[\"24\",\"24\",[],\"\",\"M20.49,3.51c0.97,0,1.76,0.79,1.76,1.76v9.27c0,0.77-0.49,1.42-1.18,1.66l0.09-10.84c0-0.39-0.3-0.7-0.68-0.7l-14.27,0 C6.46,3.99,7.1,3.51,7.85,3.51H20.49z M18.38,5.56c0.97,0,1.76,0.79,1.76,1.75v9.27c0.01,0.77-0.49,1.42-1.17,1.66l0.09-10.86 c0-0.38-0.3-0.68-0.68-0.68l-14.28,0c0.25-0.67,0.89-1.14,1.64-1.14H18.38z M16.15,7.7c0.97,0,1.75,0.79,1.75,1.76v9.27 c0,0.97-0.79,1.75-1.75,1.75H3.5c-0.97,0-1.75-0.79-1.75-1.75V9.46c0-0.97,0.79-1.76,1.75-1.76H16.15z M16.14,8.85H3.51 c-0.38,0-0.68,0.3-0.68,0.68l0,0v9.13c0,0.38,0.3,0.68,0.68,0.68l0,0h12.62c0.38,0,0.68-0.3,0.68-0.68l0,0V9.53 C16.82,9.15,16.52,8.85,16.14,8.85L16.14,8.85z M8.46,12.41v3.37c0,0.18,0.21,0.28,0.35,0.18l2.31-1.69c0.12-0.09,0.12-0.27,0-0.35 L8.8,12.23C8.66,12.13,8.46,12.23,8.46,12.41\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"star-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.64 16.055a.768.768 0 0 1 .72 0l3.767 1.998-.806-4.602 3.357-3.249-4.626-.654L12 5.35 9.948 9.548l-4.626.654 3.357 3.25-.807 4.601 3.768-1.998zm-3.75 3.148a.768.768 0 0 1-1.116-.811l.804-4.583-3.344-3.235a.768.768 0 0 1 .426-1.312l4.607-.652 2.043-4.18a.768.768 0 0 1 1.38 0l2.043 4.18 4.607.652a.768.768 0 0 1 .426 1.312l-3.344 3.235.804 4.583a.768.768 0 0 1-1.116.81L12 17.023l-4.11 2.18z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"star\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.89 19.203a.768.768 0 0 1-1.116-.811l.804-4.583-3.344-3.235a.768.768 0 0 1 .426-1.312l4.607-.652 2.043-4.18a.768.768 0 0 1 1.38 0l2.043 4.18 4.607.652a.768.768 0 0 1 .426 1.312l-3.344 3.235.804 4.583a.768.768 0 0 1-1.116.81L12 17.023l-4.11 2.18z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"subject\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.15,21.08H5.1c-1.09,0-1.98-0.89-1.98-1.98V5.06c0-1.09,0.89-1.98,1.98-1.98h14.04c1.09,0,1.98,0.89,1.98,1.98V19.1 C21.12,20.19,20.24,21.08,19.15,21.08z M20.12,19.16V5c0-0.51-0.41-0.92-0.92-0.92H7.04C6.54,4.08,6.12,4.49,6.12,5v14.16 c0,0.51,0.41,0.92,0.92,0.92h12.16C19.71,20.08,20.12,19.67,20.12,19.16z M19.12,6.95V6.81c0-0.36-0.29-0.65-0.65-0.65H8.78 c-0.36,0-0.65,0.29-0.65,0.65v0.13c0,0.36,0.29,0.65,0.65,0.65h9.69C18.83,7.6,19.12,7.31,19.12,6.95z M19.12,9.95V9.81 c0-0.36-0.29-0.65-0.65-0.65H8.78c-0.36,0-0.65,0.29-0.65,0.65v0.13c0,0.36,0.29,0.65,0.65,0.65h9.69 C18.83,10.6,19.12,10.31,19.12,9.95z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"subjects\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.9999608,6.48873431 C12.828049,6.08104273 13.7442836,5.92395943 14.6596155,6.03432052 L14.6596155,6.03432052 L18.7411881,6.52627319 C18.8894198,6.54415652 19.0011921,6.67308566 19.0011921,6.8263023 L19.0011921,6.8263023 L19.0011921,7.51037994 L19.7056558,7.51037994 C19.8682123,7.51037994 20,7.64563269 20,7.81246321 L20,7.81246321 L20,17.6979167 C20,17.8647473 19.8682515,18 19.7056558,18 L19.7056558,18 L4.29434418,18 C4.13174845,18 4,17.8647473 4,17.6979167 L4,17.6979167 L4,7.81246321 C4,7.64563269 4.13174845,7.51037994 4.29434418,7.51037994 L4.29434418,7.51037994 L4.99872941,7.51037994 L4.99872941,6.8263023 C4.99872941,6.67308566 5.11050171,6.54415652 5.25873344,6.52627319 L5.25873344,6.52627319 L9.34030602,6.03432052 C10.2557557,5.92391915 11.1718332,6.08104273 11.9999608,6.48873431 Z M4.99876866,8.11454648 L4.58868835,8.11454648 L4.58868835,17.3958335 L19.4113116,17.3958335 L19.4113116,8.11454648 L19.0011136,8.11454648 L19.0011136,16.4188559 C19.0011136,16.5051309 18.9652036,16.5872572 18.9023709,16.6445725 C18.8482116,16.6940336 18.7784717,16.7209392 18.7067694,16.7209392 C18.6953489,16.7209392 18.6838891,16.7202544 18.6724293,16.718885 L18.6724293,16.718885 L14.5908959,16.2269323 C13.7425175,16.1246671 12.8935504,16.2838045 12.1353983,16.6870655 C12.0504702,16.7322572 11.9494513,16.7322572 11.8645232,16.6870655 C11.1063318,16.2838045 10.2570508,16.1246671 9.40902557,16.2269323 L9.40902557,16.2269323 L5.32745299,16.718885 C5.24401623,16.7289544 5.16030474,16.7018878 5.09751132,16.6445725 C5.03467865,16.5872572 4.99876866,16.5051309 4.99876866,16.4188559 L4.99876866,16.4188559 L4.99876866,8.11454648 Z M14.5909352,6.63437873 C13.8015826,6.53924264 13.0113666,6.67074955 12.2943049,7.01452032 L12.2943049,7.01452032 L12.2943049,15.9488546 C13.0426063,15.6408908 13.8514249,15.5294825 14.6596155,15.6269144 L14.6596155,15.6269144 L18.4124645,16.0792337 L18.4124645,7.0949953 Z M11.7056558,7.01452032 C10.9886334,6.67074955 10.1983389,6.53920236 9.40902557,6.63437873 L9.40902557,6.63437873 L5.58745701,7.0949953 L5.58745701,16.0791935 L9.34034527,15.6268741 C9.53041311,15.6039963 9.72055945,15.5925977 9.90984238,15.5925977 C10.5256104,15.5925977 11.1332938,15.7133907 11.7056558,15.9489351 L11.7056558,15.9489351 Z M12.8179628,13.2954357 C13.418268,13.1280413 14.0360375,13.080876 14.6541996,13.1553093 L14.6541996,13.1553093 L17.7187541,13.5245759 C17.8801725,13.5440301 17.9956731,13.6941453 17.9767566,13.8598481 C17.9591745,14.0135883 17.8320178,14.1267286 17.6848064,14.1267286 C17.6733466,14.1267286 17.6617691,14.1260439 17.6500738,14.1246341 L17.6500738,14.1246341 L14.5855585,13.7553675 C14.0427486,13.690037 13.4998209,13.7314023 12.9722777,13.8784564 C12.8155688,13.9222383 12.6537188,13.8271828 12.6110978,13.6661523 C12.5684767,13.505162 12.6610578,13.3391773 12.8179628,13.2954357 Z M9.3348116,13.1553496 C9.95195322,13.0815205 10.5768655,13.1297732 11.1712838,13.295919 C11.3281496,13.3397412 11.4206914,13.5057662 11.3779526,13.6667564 C11.3352531,13.827787 11.1734031,13.9226814 11.0166157,13.8788592 C10.4945669,13.7329328 9.9450067,13.6906412 9.40325643,13.7554078 L9.40325643,13.7554078 L6.33901581,14.1246341 C6.32735978,14.1260439 6.315743,14.1267286 6.3042832,14.1267286 C6.15707186,14.1267286 6.02991518,14.0135883 6.01229378,13.8598481 C5.99333801,13.6941453 6.10887791,13.5440704 6.27029626,13.5246162 L6.27029626,13.5246162 Z M12.8179236,11.9098804 C13.4183465,11.7424457 14.036116,11.695361 14.6541603,11.7697541 L14.6541603,11.7697541 L17.7187149,12.1390207 C17.8801332,12.1584748 17.9956339,12.3085498 17.9767174,12.4742525 C17.9591352,12.6279928 17.8319785,12.741133 17.6847672,12.741133 L17.6847672,12.741133 L17.6500346,12.7390386 L14.5855192,12.369772 C14.0425524,12.3043609 13.4997032,12.3457664 12.9722384,12.4928609 C12.8155296,12.5366428 12.6536795,12.4415873 12.6110585,12.280597 C12.5684375,12.1196068 12.6610185,11.9536221 12.8179236,11.9098804 Z M9.3348116,11.7697541 C9.95183548,11.6959249 10.5769048,11.7441777 11.1712838,11.9103235 C11.3281496,11.9541457 11.4206914,12.1201707 11.3779526,12.2811609 C11.3352531,12.4421914 11.1734031,12.5370456 11.0166157,12.4932636 C10.4944884,12.347297 9.94484971,12.3050053 9.40325643,12.3698123 L9.40325643,12.3698123 L6.33901581,12.7390386 C6.32735978,12.7404483 6.315743,12.741133 6.3042832,12.741133 C6.15707186,12.741133 6.02991518,12.6279928 6.01229378,12.4742525 C5.99333801,12.3085498 6.10887791,12.1584748 6.27029626,12.1390207 L6.27029626,12.1390207 Z M12.8179236,10.5243251 C13.4183072,10.3569307 14.036116,10.3097655 14.6541603,10.3841988 L14.6541603,10.3841988 L17.7187149,10.7534654 C17.8801332,10.7729195 17.9956339,10.9229945 17.9767174,11.0886973 C17.9591352,11.2424375 17.8319785,11.3555778 17.6847672,11.3555778 C17.6733074,11.3555778 17.6617299,11.354893 17.6500346,11.3534833 L17.6500346,11.3534833 L14.5855192,10.9842167 C14.0426308,10.9188459 13.4997817,10.9602112 12.9722384,11.1073056 C12.8155296,11.1510472 12.6536795,11.056032 12.6110585,10.8950417 C12.5684375,10.7340515 12.6610185,10.5680668 12.8179236,10.5243251 Z M9.3348116,10.3841585 C9.95199246,10.3103696 10.5769048,10.3586224 11.1712838,10.5247682 C11.3281496,10.5685904 11.4206914,10.7346154 11.3779526,10.8956056 C11.3352531,11.0566362 11.1734031,11.1515306 11.0166157,11.1077084 C10.4945669,10.961782 9.94496745,10.9194903 9.40325643,10.984257 L9.40325643,10.984257 L6.33901581,11.3534833 C6.32735978,11.354893 6.315743,11.3555778 6.3042832,11.3555778 C6.15707186,11.3555778 6.02991518,11.2424375 6.01229378,11.088657 C5.99333801,10.9229542 6.10887791,10.7728793 6.27029626,10.7534251 L6.27029626,10.7534251 Z M12.8179236,9.13876988 C13.4183072,8.97133519 14.036116,8.9242102 14.6541603,8.99864352 L14.6541603,8.99864352 L17.7187149,9.36791011 C17.8801332,9.38736427 17.9956339,9.53743924 17.9767174,9.70314198 C17.9591352,9.85688223 17.8319785,9.97002249 17.6847672,9.97002249 C17.6733074,9.97002249 17.6617299,9.96933776 17.6500346,9.96792804 L17.6500346,9.96792804 L14.5855192,9.59866145 C14.0426308,9.53329063 13.4997817,9.5746559 12.9722384,9.72175031 C12.8155296,9.76549197 12.6536795,9.67043644 12.6110585,9.50948647 C12.5684375,9.34849622 12.6610185,9.18251154 12.8179236,9.13876988 Z M9.3348116,8.99860324 C9.95195322,8.92477409 10.5768655,8.97302686 11.1712838,9.13917266 C11.3281496,9.18299487 11.4206914,9.34901984 11.3779526,9.51001008 C11.3352531,9.6710406 11.1734031,9.76589475 11.0166157,9.72211281 C10.4945669,9.57618646 9.9450067,9.5338948 9.40325643,9.59866145 L9.40325643,9.59866145 L6.33901581,9.96788776 C6.32735978,9.96929749 6.315743,9.96998221 6.3042832,9.96998221 C6.15707186,9.96998221 6.02991518,9.85684195 6.01229378,9.70310171 C5.99333801,9.53739896 6.10887791,9.38732399 6.27029626,9.36786983 L6.27029626,9.36786983 Z M12.8179236,7.75317433 C13.418268,7.58573964 14.0360375,7.53857437 14.6541603,7.61304797 L14.6541603,7.61304797 L17.7187149,7.98231456 C17.8801332,8.00176872 17.9956339,8.15184369 17.9767174,8.31754644 C17.9591352,8.47128668 17.8319785,8.58442694 17.6847672,8.58442694 L17.6847672,8.58442694 L17.6500346,8.58233249 L14.5855192,8.2130659 C14.0427093,8.14769508 13.4997817,8.18906035 12.9722384,8.33615477 C12.8155296,8.37985615 12.6536795,8.28488117 12.6110585,8.12389092 C12.5684375,7.96290068 12.6610185,7.79691599 12.8179236,7.75317433 Z M9.3348116,7.61304797 C9.95222794,7.53921882 10.576944,7.58747159 11.1712838,7.75361739 C11.3281496,7.7974396 11.4206914,7.96346456 11.3779526,8.12445481 C11.3352531,8.28548533 11.1734031,8.38033948 11.0166157,8.33655754 C10.4946061,8.19063118 9.94535991,8.14829925 9.40325643,8.21310618 L9.40325643,8.21310618 L6.33901581,8.58233249 C6.32735978,8.58374222 6.315743,8.58442694 6.3042832,8.58442694 C6.15707186,8.58442694 6.02991518,8.47128668 6.01229378,8.31754644 C5.99333801,8.15184369 6.10887791,8.00176872 6.27029626,7.98231456 L6.27029626,7.98231456 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"tag\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.85651379,4 C10.5597673,4 11.2342681,4.27911643 11.7318501,4.77635695 L11.7318501,4.77635695 L19.5192508,12.5634018 C20.1602555,13.2045708 20.1602555,14.2439177 19.5192159,14.8851217 L19.5192159,14.8851217 L14.8855145,19.5192848 C14.2443321,20.1602442 13.2049876,20.1602442 12.5637184,19.519198 L12.5637184,19.519198 L4.7762613,11.7314233 C4.27913559,11.2340016 4,10.5595161 4,9.85635067 L4,9.85635067 L4,5.64191268 C4,4.7351029 4.73513649,4 5.64195885,4 L5.64195885,4 L9.85651379,4 Z M9.85658948,5.26315824 L5.64195885,5.26315824 C5.4327466,5.26315824 5.26315823,5.43273884 5.26315823,5.64191268 L5.26315823,5.64191268 L5.26315823,9.85642637 C5.26315823,10.2247328 5.40935021,10.5779817 5.66959105,10.8383776 L5.66959105,10.8383776 L13.4568376,18.6259418 C13.6047616,18.7738142 13.8445582,18.7738142 13.9923822,18.6260417 L13.9923822,18.6260417 L18.6259486,13.9920135 C18.7738119,13.8441123 18.7738119,13.6043763 18.6260161,13.4565426 L18.6260161,13.4565426 L10.8388259,5.6697082 C10.5782887,5.40934993 10.2250082,5.26315824 9.85658948,5.26315824 L9.85658948,5.26315824 Z M7.78947471,6.10526373 C8.71963876,6.10526373 9.4736857,6.85931068 9.4736857,7.78947472 C9.4736857,8.71963876 8.71963876,9.4736857 7.78947471,9.4736857 C6.85931067,9.4736857 6.10526373,8.71963876 6.10526373,7.78947472 C6.10526373,6.85931068 6.85931067,6.10526373 7.78947471,6.10526373 Z M7.78947471,7.36842197 C7.5569337,7.36842197 7.36842197,7.55693371 7.36842197,7.78947472 C7.36842197,8.02201573 7.5569337,8.21052747 7.78947471,8.21052747 C8.02201572,8.21052747 8.21052746,8.02201573 8.21052746,7.78947472 C8.21052746,7.55693371 8.02201572,7.36842197 7.78947471,7.36842197 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"time\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 4c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm0 1.077a6.88 6.88 0 0 0-4.896 2.027A6.877 6.877 0 0 0 5.077 12c0 1.85.72 3.588 2.027 4.896A6.877 6.877 0 0 0 12 18.923a6.88 6.88 0 0 0 4.896-2.027A6.877 6.877 0 0 0 18.923 12a6.88 6.88 0 0 0-2.027-4.896A6.877 6.877 0 0 0 12 5.077zm2.524 9.599a.6.6 0 0 1-.848.848l-2.5-2.5A.6.6 0 0 1 11 12.6V8.624a.6.6 0 0 1 1.2 0v3.727l2.324 2.325z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"video\",\"icon\":[\"24\",\"24\",[],\"\",\"M4.5 6a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5h15a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5h-15zm0-1h15A1.5 1.5 0 0 1 21 6.5v11a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 17.5v-11A1.5 1.5 0 0 1 4.5 5zM10 9.26v5.48a.256.256 0 0 0 .39.218l4.482-2.74a.256.256 0 0 0 0-.436l-4.483-2.74a.256.256 0 0 0-.389.219z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"white-wave\",\"icon\":[\"1200\",\"244\",[],\"\",\"M1104.19651,33.5198863 C1084.14716,45.4511816 1067.10689,82.9623447 1047.23647,124.40502 C1023.86518,173.149287 924.725009,160.996474 830.060105,199.668011 C735.395201,238.339548 706.121292,249.351671 618.615175,241.737466 C531.109058,234.12326 495.404437,207.34459 432.2827,199.668011 C370.933901,192.207048 283.214734,200.240922 234.995453,186.264588 C153.311618,162.588569 167.948341,80.4093241 122.421855,59.9864363 C102.62311,51.1048469 61.8158253,37.3273576 0,18.6539685 L0,0 L1200,0 C1161.79495,7.07406031 1129.86046,18.2473557 1104.19651,33.5198863 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"year-level\",\"icon\":[\"24\",\"24\",[],\"\",\"M14.5628141,2 C15.3668342,2 15.7688442,2.10471204 16.0703518,2.31413613 C16.3718593,2.52356021 16.6733668,2.73298429 16.8743719,3.15183246 C16.9748744,3.46596859 17.0753769,3.88481675 17.0753769,4.72251309 L17.0753769,9.85340314 C17.0753769,10.6212914 16.9909269,11.0372309 16.8220268,11.3431864 L16.7738693,11.4240838 L16.7738693,11.4240838 L19.3869347,11.4240838 C20.1909548,11.4240838 20.5929648,11.5287958 20.8944724,11.7382199 C21.1959799,11.947644 21.4974874,12.1570681 21.6984925,12.5759162 C21.8994975,12.9947644 22,13.4136126 22,14.1465969 L22,19.2774869 C22,20.1151832 21.8994975,20.5340314 21.6984925,20.8481675 C21.4974874,21.1623037 21.2964824,21.4764398 20.8944724,21.6858639 C20.4924623,21.895288 20.0904523,22 19.3869347,22 L14.4623116,22 C13.6582915,22 13.2562814,21.895288 12.9547739,21.6858639 C12.6532663,21.4764398 12.3517588,21.2670157 12.1507538,20.8481675 C12.1034481,20.774237 12.0617091,20.6945067 12.0255366,20.6076117 C12.002845,20.6555797 11.9772366,20.7004967 11.9497487,20.7434555 C11.7487437,21.0575916 11.5477387,21.3717277 11.1457286,21.5811518 C10.7437186,21.7905759 10.3417085,21.895288 9.63819095,21.895288 L4.61306533,21.895288 C3.80904523,21.895288 3.40703518,21.7905759 3.10552764,21.5811518 C2.8040201,21.3717277 2.50251256,21.1623037 2.30150754,20.7434555 C2.10050251,20.4293194 2,20.0104712 2,19.1727749 L2,14.0418848 C2,13.2041885 2.10050251,12.7853403 2.30150754,12.4712042 C2.50251256,12.1570681 2.70351759,11.8429319 3.10552764,11.6335079 C3.40703518,11.5287958 3.80904523,11.4240838 4.61306533,11.4240838 L7.32663317,11.4240838 L7.32663317,11.4240838 C7.12562814,11.0052356 7.02512563,10.5863874 7.02512563,9.7486911 L7.02512563,4.72251309 C7.02512563,3.88481675 7.12562814,3.46596859 7.32663317,3.04712042 C7.42713568,2.73298429 7.72864322,2.41884817 8.03015075,2.31413613 C8.4321608,2.10471204 8.83417085,2 9.63819095,2 L14.5628141,2 Z M12.0749659,12.71176 L12.0874744,12.6846501 L12.0874744,12.6846501 L12.1507538,12.5759162 L12.1507538,12.5759162 L14.361809,12.5759162 C13.758794,12.5759162 13.5577889,12.6806283 13.4572864,12.6806283 C13.3567839,12.6806283 13.2562814,12.8900524 13.1557789,12.9947644 C13.0696339,13.1742708 13.0573275,13.2768458 13.0555694,13.8300185 L13.0552764,19.2774869 C13.0552764,20.0104712 13.1557789,20.2198953 13.1557789,20.4293194 C13.2562814,20.5340314 13.3567839,20.7434555 13.5577889,20.7434555 C13.7444365,20.8406881 13.8444262,20.8476333 14.5015017,20.8481294 L19.5879397,20.8481675 C20.2914573,20.8481675 20.4924623,20.7434555 20.6934673,20.7434555 C20.7939698,20.6387435 20.9949749,20.5340314 20.9949749,20.3246073 C21.0811199,20.145101 21.0934263,20.0425259 21.0951844,19.4893533 L21.0954774,14.0418848 C21.0954774,13.3089005 20.9949749,13.0994764 20.9949749,12.8900524 C20.8944724,12.7853403 20.7939698,12.5759162 20.5929648,12.5759162 C20.4206748,12.4861631 20.3222234,12.4733412 19.7912888,12.4715095 L11.9497487,12.4712042 L11.9497487,12.4712042 C11.9970544,12.5451347 12.0387934,12.624865 12.0749659,12.71176 Z M8.03015075,12.1570681 C8.4321608,12.3664921 8.73366834,12.4712042 9.43718593,12.4712042 L4.61306533,12.4712042 C3.90954774,12.4712042 3.70854271,12.5759162 3.50753769,12.5759162 C3.40703518,12.6806283 3.20603015,12.7853403 3.20603015,12.8900524 C3.10552764,13.2041885 3.00502513,13.3089005 3.00502513,14.1465969 L3.00502513,19.2774869 C3.00502513,20.0104712 3.10552764,20.2198953 3.20603015,20.4293194 C3.30653266,20.5340314 3.40703518,20.7434555 3.50753769,20.7434555 C3.70854271,20.7434555 3.80904523,20.8481675 4.61306533,20.8481675 L9.53768844,20.8481675 C10.241206,20.8481675 10.4422111,20.7434555 10.6432161,20.7434555 C10.7437186,20.6387435 10.9447236,20.5340314 10.9447236,20.3246073 C11.0380474,20.1301421 11.0447134,20.0259643 11.0451895,19.3413674 L11.0452261,14.0418848 C11.0452261,13.3089005 10.9447236,13.0994764 10.9447236,12.8900524 C10.8442211,12.7853403 10.7437186,12.5759162 10.6432161,12.5759162 C10.4787574,12.4902427 10.3815773,12.4746657 10.0213993,12.4718336 L9.53768844,12.4712042 L9.53768844,12.4712042 C8.83417085,12.4712042 8.4321608,12.3664921 8.13065327,12.1570681 C7.82914573,11.947644 7.52763819,11.7382199 7.42713568,11.4240838 L7.32663317,11.4240838 C7.52763819,11.7382199 7.72864322,12.052356 8.03015075,12.1570681 Z M17.5778894,16.4502618 C17.9798995,16.4502618 18.281407,16.6596859 18.4824121,16.8691099 L18.427,16.923 L18.4619013,16.9649688 C18.6095785,17.1682872 18.6834171,17.4375467 18.6834171,17.7068063 L18.6834171,18.1256545 C18.6834171,18.8586387 18.080402,19.382199 17.4773869,19.382199 L15.7688442,19.382199 C15.5678392,19.486911 15.3668342,19.2774869 15.3668342,18.9633508 C15.3668342,18.7539267 15.5678392,18.5445026 15.7688442,18.5445026 L17.4773869,18.5445026 C17.678392,18.5445026 17.879397,18.3350785 17.879397,18.1256545 L17.879397,17.7068063 C17.879397,17.4973822 17.678392,17.2879581 17.4773869,17.2879581 L15.8693467,17.2879581 C15.6683417,17.2879581 15.4673367,17.078534 15.4673367,16.8691099 C15.4673367,16.6596859 15.6683417,16.4502618 15.8693467,16.4502618 L17.5778894,16.4502618 Z M7.52763819,14.2513089 C8.23115578,14.2513089 8.73366834,14.8795812 8.73366834,15.5078534 L8.73366834,15.9267016 C8.73366834,16.6596859 8.13065327,17.1832461 7.52763819,17.1832461 L6.62311558,17.1832461 C6.42211055,17.1832461 6.22110553,17.3926702 6.22110553,17.6020942 L6.22110553,18.4397906 L8.33165829,18.4397906 C8.53266332,18.4397906 8.73366834,18.6492147 8.73366834,18.8586387 C8.73366834,19.0680628 8.53266332,19.2774869 8.33165829,19.2774869 L5.81909548,19.2774869 C5.61809045,19.2774869 5.41708543,19.0680628 5.41708543,18.8586387 L5.41708543,17.7068063 C5.41708543,16.973822 6.0201005,16.4502618 6.62311558,16.4502618 L7.42713568,16.4502618 C7.72864322,16.4502618 7.82914573,16.2408377 7.82914573,15.9267016 L7.82914573,15.5078534 C7.82914573,15.2984293 7.6281407,15.0890052 7.42713568,15.0890052 L5.81909548,15.0890052 C5.61809045,15.0890052 5.41708543,14.8795812 5.41708543,14.6701571 C5.41708543,14.460733 5.61809045,14.2513089 5.81909548,14.2513089 L7.52763819,14.2513089 Z M17.4773869,14.2513089 C18.1809045,14.2513089 18.6834171,14.8795812 18.6834171,15.5078534 L18.6834171,15.9267016 C18.6834171,16.2408377 18.5829146,16.5549738 18.3819095,16.7643979 C18.1809045,16.4502618 17.879397,16.3455497 17.4773869,16.3455497 C17.678392,16.3455497 17.879397,16.1361257 17.879397,15.9267016 L17.879397,15.5078534 C17.879397,15.2984293 17.678392,15.0890052 17.4773869,15.0890052 L15.7688442,15.0890052 C15.5678392,15.0890052 15.3668342,14.8795812 15.3668342,14.6701571 C15.3668342,14.460733 15.5678392,14.2513089 15.7688442,14.2513089 L17.4773869,14.2513089 Z M14.4623116,3.04712042 L9.63819095,3.04712042 C8.83417085,3.04712042 8.73366834,3.15183246 8.53266332,3.2565445 C8.4321608,3.2565445 8.23115578,3.36125654 8.13065327,3.57068063 C8.13065327,3.78010471 8.03015075,3.88481675 8.03015075,4.72251309 L8.03015075,9.85340314 C8.03015075,10.5863874 8.13065327,10.7958115 8.13065327,11.0052356 C8.23115578,11.1099476 8.33165829,11.3193717 8.4321608,11.3193717 C8.63316583,11.3193717 8.83417085,11.4240838 9.43718593,11.4240838 L14.5628141,11.4240838 C15.1658291,11.4240838 15.3668342,11.3193717 15.4673367,11.3193717 C15.5678392,11.2146597 15.7688442,11.1099476 15.7688442,11.0052356 C15.8549892,10.8257292 15.8672957,10.7231542 15.8690537,10.1699815 L15.8693467,4.72251309 C15.8693467,3.9895288 15.7688442,3.78010471 15.7688442,3.57068063 C15.6683417,3.46596859 15.5678392,3.2565445 15.3668342,3.2565445 C15.3668342,3.15183246 15.2663317,3.04712042 14.4623116,3.04712042 Z M12.0502513,4.61780105 C12.2512563,4.61780105 12.4522613,4.82722513 12.4522613,5.03664921 L12.4522613,9.43455497 C12.4522613,9.64397906 12.2512563,9.85340314 12.0502513,9.85340314 C11.8492462,9.85340314 11.6482412,9.64397906 11.6482412,9.43455497 L11.6482412,5.03664921 C11.6482412,4.82722513 11.8492462,4.61780105 12.0502513,4.61780105 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close-caption\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm5.486 9.759c-1.002 0-1.834-.372-2.495-1.114-.66-.743-.991-1.68-.991-2.81 0-1.208.327-2.149.981-2.823C6.635 8.337 7.548 8 8.719 8c.579 0 1.226.08 1.941.24v1.127c-.76-.223-1.38-.335-1.86-.335-.687 0-1.24.259-1.657.776-.417.517-.625 1.207-.625 2.068 0 .834.214 1.508.642 2.023.429.515.99.773 1.682.773.615 0 1.248-.157 1.9-.472v1.162c-.87.265-1.622.397-2.256.397zm7 0c-1.002 0-1.834-.372-2.495-1.114-.66-.743-.991-1.68-.991-2.81 0-1.208.327-2.149.981-2.823C13.635 8.337 14.548 8 15.719 8c.579 0 1.226.08 1.941.24v1.127c-.76-.223-1.38-.335-1.86-.335-.687 0-1.24.259-1.657.776-.417.517-.625 1.207-.625 2.068 0 .834.214 1.508.642 2.023.429.515.99.773 1.682.773.615 0 1.248-.157 1.9-.472v1.162c-.87.265-1.622.397-2.256.397z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"contract\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.5 8.5V5H10v5H5V8.5h3.5zm0 7H5V14h5v5H8.5v-3.5zm7-7H19V10h-5V5h1.5v3.5zm0 7V19H14v-5h5v1.5h-3.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"full-screen\",\"icon\":[\"24\",\"24\",[],\"\",\"M6.5 6.5V10H5V5h5v1.5H6.5zm0 11H10V19H5v-5h1.5v3.5zm11-11H14V5h5v5h-1.5V6.5zm0 11V14H19v5h-5v-1.5h3.5z\"]}","import Quality240 from './quality-240.svg';\r\nimport Quality480 from './quality-480.svg';\r\nimport QualityHD from './quality-hd.svg';\r\nimport CloseCaption from './close-caption.svg';\r\nimport Contract from './contract.svg';\r\nimport FullScreen from './full-screen.svg';\r\nimport Mute from './mute.svg';\r\nimport Next from './next.svg';\r\nimport Play from './play.svg';\r\nimport PlayCircle from './play-circle.svg';\r\nimport Pause from './pause.svg';\r\nimport Previous from './previous.svg';\r\nimport Volume from './volume.svg';\r\n\r\nexport {\r\n Quality240,\r\n Quality480,\r\n QualityHD,\r\n CloseCaption,\r\n Contract,\r\n FullScreen,\r\n Mute,\r\n Next,\r\n Play,\r\n PlayCircle,\r\n Pause,\r\n Previous,\r\n Volume\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"mute\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.733 12.018l-1.57-1.57a.555.555 0 1 1 .785-.785l1.57 1.57 1.57-1.57a.555.555 0 1 1 .785.785l-1.57 1.57 1.57 1.57a.555.555 0 1 1-.785.785l-1.57-1.57-1.57 1.57a.555.555 0 1 1-.785-.785l1.57-1.57zM4 10.03c0-.557.443-1.01 1.01-1.01H8l4.284-4.246c.395-.393.716-.253.716.282v13.879c0 .548-.324.682-.721.303L7.814 14.97H5.002A1.003 1.003 0 0 1 4 13.96v-3.93z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"next\",\"icon\":[\"24\",\"24\",[],\"\",\"M16 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01a.501.501 0 0 1-.495-.5v-11zm-10.86.005a.5.5 0 0 1 .761-.427l9.003 5.5a.5.5 0 0 1 0 .853l-9.003 5.5a.5.5 0 0 1-.76-.426v-11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"pause\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01A.501.501 0 0 1 8 17.5v-11zm6 0c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01a.501.501 0 0 1-.495-.5v-11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"play-circle\",\"icon\":[\"24\",\"24\",[],\"\",\"M0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 Z M23,12 C23,5.92486775 18.0751322,1 12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12 Z M9,7.49836245 C9,6.94698209 9.38671875,6.74169922 9.84669815,7.02918634 L17.1533018,11.5958137 C17.6209203,11.8880752 17.6132812,12.3666992 17.1533018,12.6541863 L9.84669815,17.2208137 C9.37907967,17.5130752 9,17.2950531 9,16.7516375 L9,7.49836245 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"play\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.5 6.505v11l9.002-5.5-9.002-5.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"previous\",\"icon\":[\"24\",\"24\",[],\"\",\"M5 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01A.501.501 0 0 1 5 17.5v-11zm13.602.005v11a.5.5 0 0 1-.76.426l-9.003-5.5a.5.5 0 0 1 0-.853l9.002-5.5a.5.5 0 0 1 .761.427z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-240\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm1 4.818C4 9.644 4.94 8.8 6.261 8.8c1.272 0 2.182.777 2.182 1.81 0 .76-.45 1.334-1.285 2.178L5.58 14.347v.022h2.96v.932H4.062v-.769L6.407 12.2c.724-.737.923-1.064.923-1.54 0-.526-.473-.946-1.104-.946-.663 0-1.157.468-1.157 1.1v.017H4v-.013zm8.426 4.483v-1.206h-3.18v-.98c.553-1.043 1.264-2.178 2.646-4.187h1.62v4.235h.857v.932h-.856v1.206h-1.087zm-2.146-2.142v.03h2.164V9.773h-.018c-1.029 1.492-1.638 2.433-2.146 3.387zm7.234 2.27c-1.564 0-2.496-1.277-2.496-3.321 0-2.036.941-3.308 2.496-3.308 1.55 0 2.486 1.263 2.486 3.303s-.927 3.326-2.486 3.326zm0-.932c.843 0 1.333-.888 1.333-2.39 0-1.488-.499-2.375-1.333-2.375-.84 0-1.347.896-1.347 2.371 0 1.502.499 2.394 1.347 2.394z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-480\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm3.964 9.269v-1.2H3.8v-.976c.55-1.037 1.257-2.166 2.632-4.166h1.613v4.215h.853v.927h-.853v1.2h-1.08zm-2.136-2.132v.031h2.154V9.767h-.018c-1.024 1.485-1.63 2.421-2.136 3.37zm7.185 2.26c-1.467 0-2.47-.761-2.47-1.842 0-.822.58-1.468 1.442-1.63v-.022c-.72-.185-1.19-.743-1.19-1.433 0-.962.926-1.67 2.218-1.67 1.297 0 2.215.703 2.215 1.674 0 .681-.466 1.235-1.186 1.429v.022c.861.167 1.446.813 1.446 1.63 0 1.085-1.016 1.841-2.475 1.841zm0-.867c.76 0 1.297-.448 1.297-1.059 0-.62-.536-1.063-1.297-1.063-.76 0-1.296.448-1.296 1.063 0 .611.536 1.06 1.296 1.06zm0-2.988c.638 0 1.095-.395 1.095-.94 0-.55-.453-.945-1.095-.945-.646 0-1.098.395-1.098.945 0 .545.452.94 1.098.94zm5.709 3.854c-1.556 0-2.483-1.27-2.483-3.304 0-2.026.936-3.292 2.483-3.292 1.542 0 2.474 1.257 2.474 3.287 0 2.03-.923 3.31-2.474 3.31zm0-.927c.84 0 1.327-.883 1.327-2.377 0-1.481-.497-2.365-1.327-2.365-.835 0-1.34.892-1.34 2.36 0 1.494.496 2.382 1.34 2.382z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-hd\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm2 2.25h1.31v2.976h3.406V8.25h1.31v7.482h-1.31v-3.374H6.31v3.374H5V8.25zm7.597 0H15.7c.573 0 1.069.098 1.488.293.42.196.762.463 1.027.802.266.339.463.735.592 1.19.13.454.194.939.194 1.456a5.3 5.3 0 0 1-.194 1.457 3.43 3.43 0 0 1-.592 1.189 2.765 2.765 0 0 1-1.027.802c-.419.195-.915.293-1.488.293h-3.102V8.25zm1.31 6.413h1.29c.51 0 .927-.068 1.251-.204.325-.136.58-.325.765-.566.185-.241.311-.524.378-.849.066-.325.1-.676.1-1.053 0-.377-.034-.728-.1-1.053a2.043 2.043 0 0 0-.378-.849 1.832 1.832 0 0 0-.765-.566c-.324-.136-.742-.204-1.252-.204h-1.289v5.344z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"volume\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.8 11.25c-.137-.815-.44-1.549-.727-2.009a.48.48 0 0 1 .167-.67.507.507 0 0 1 .687.163c.35.56.7 1.41.86 2.359.24 1.439.001 2.866-.866 4.183a.508.508 0 0 1-.691.147.48.48 0 0 1-.15-.674c.724-1.1.922-2.285.72-3.5zm1.86 5.959c1.856-3.7 1.676-7.108 0-10.416a.558.558 0 0 1 .201-.728.483.483 0 0 1 .678.215c1.828 3.61 2.028 7.398.001 11.438a.483.483 0 0 1-.677.218.557.557 0 0 1-.203-.727zM4 10.03c0-.557.443-1.01 1.01-1.01H8l4.284-4.246c.395-.393.716-.253.716.282v13.879c0 .548-.324.682-.721.303L7.814 14.97H5.002A1.003 1.003 0 0 1 4 13.96v-3.93z\"]}","import * as FontAwesome from '@fortawesome/fontawesome';\r\nimport * as _ from 'underscore';\r\nimport { importedSvgs } from './ImportedSvgs';\r\n\r\nconst cvPrefix = 'cv' as FontAwesome.IconPrefix;\r\n\r\n_.extend(FontAwesome.config, {\r\n autoReplaceSvg: false,\r\n autoAddCss: false,\r\n familyPrefix : cvPrefix,\r\n autoA11y: true,\r\n observeMutations: false,\r\n replacementClass: 'cv-svg',\r\n keepOriginalSource: false\r\n});\r\n\r\n// Register our custom icons with FA\r\nFontAwesome.library.add(...importedSvgs);\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check-circle-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 3c4.972 0 9 4.028 9 9s-4.028 9-9 9-9-4.028-9-9 4.028-9 9-9zm0 1.212a7.737 7.737 0 0 0-5.508 2.28A7.737 7.737 0 0 0 4.212 12c0 2.081.809 4.037 2.28 5.508A7.737 7.737 0 0 0 12 19.788a7.737 7.737 0 0 0 5.508-2.28A7.737 7.737 0 0 0 19.788 12a7.737 7.737 0 0 0-2.28-5.508A7.737 7.737 0 0 0 12 4.212zm3.186 4.434a.772.772 0 0 1 1.058-.068.7.7 0 0 1 .07 1.016l-5.25 5.76a.771.771 0 0 1-1.094.035l-2.25-2.16a.7.7 0 0 1 0-1.018.772.772 0 0 1 1.06 0l1.683 1.616 4.723-5.181z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check-circle\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 3c4.972 0 9 4.028 9 9s-4.028 9-9 9-9-4.028-9-9 4.028-9 9-9zm3.186 5.646l-4.723 5.18-1.683-1.615a.772.772 0 0 0-1.06 0 .7.7 0 0 0 0 1.018l2.25 2.16a.771.771 0 0 0 1.094-.035l5.25-5.76a.7.7 0 0 0-.07-1.016.772.772 0 0 0-1.058.068z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.247 7.341a1 1 0 0 1 1.506 1.318l-7 8a1 1 0 0 1-1.46.048l-3-3a1 1 0 0 1 1.414-1.414l2.244 2.244 6.296-7.196z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close-caption-badge\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5h-9zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4zM11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9H11zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9H16z\"]}","import CheckCircle from './check-circle.svg';\r\nimport CheckCircleOutline from './check-circle-o.svg';\r\nimport Check from './check.svg';\r\nimport CloseCaptionBadge from './close-caption-badge.svg';\r\nimport Question from './question.svg';\r\nimport Info from './info.svg';\r\nimport Lock from './lock.svg';\r\nimport Verified from './verified.svg';\r\nimport VisibleOff from './visible-off.svg';\r\nimport VisibleOn from './visible-on.svg';\r\nimport WarningOutline from './warning-o.svg';\r\nimport Warning from './warning.svg';\r\n\r\nexport {\r\n CheckCircle,\r\n CheckCircleOutline,\r\n Check,\r\n CloseCaptionBadge,\r\n Info,\r\n Lock,\r\n Verified,\r\n VisibleOff,\r\n VisibleOn,\r\n WarningOutline,\r\n Warning,\r\n Question\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"info\",\"icon\":[\"24\",\"24\",[],\"\",\"M21 11.88c.026 2.49-.824 4.62-2.552 6.387-1.727 1.768-3.837 2.679-6.327 2.732-2.491.027-4.62-.823-6.388-2.55C3.965 16.72 3.054 14.61 3 12.12c-.027-2.491.823-4.62 2.55-6.388C7.28 3.965 9.39 3.054 11.88 3c2.491-.027 4.62.823 6.388 2.55 1.767 1.73 2.678 3.84 2.732 6.33zm-10-.38V15a2.5 2.5 0 0 0 2.5 2.5h.75a1 1 0 0 0 0-2h-.75a.5.5 0 0 1-.5-.5v-3.75a1.75 1.75 0 0 0-1.75-1.75h-.75a1 1 0 1 0 0 2h.5zm.636-3.25c.294 0 .553-.1.778-.301.224-.2.336-.477.336-.828 0-.316-.107-.582-.321-.797A1.073 1.073 0 0 0 11.636 6c-.319 0-.588.108-.807.324a1.07 1.07 0 0 0-.329.797c0 .356.113.634.34.832.227.198.492.297.796.297z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"lock\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.01 9.5C7.156 5.97 8.87 4 12 4s4.844 1.97 4.99 5.5h1.51a.5.5 0 0 1 .5.5v9.5a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5V10a.5.5 0 0 1 .5-.5h1.51zm2 0h5.98C14.88 7.037 13.932 6 12 6c-1.933 0-2.88 1.037-2.99 3.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"question\",\"icon\":[\"24\",\"24\",[],\"\",\"M21 11.88c.026 2.49-.824 4.62-2.552 6.387-1.727 1.768-3.837 2.679-6.327 2.732-2.491.027-4.62-.823-6.388-2.55C3.965 16.72 3.054 14.61 3 12.12c-.027-2.491.823-4.62 2.55-6.388C7.28 3.965 9.39 3.054 11.88 3c2.491-.027 4.62.823 6.388 2.55 1.767 1.73 2.678 3.84 2.732 6.33zM8.142 9.17c0 .247.103.476.309.687.206.212.46.318.76.318.508 0 .854-.303 1.036-.908.193-.579.428-1.017.707-1.314.278-.297.712-.446 1.302-.446.503 0 .914.147 1.233.442.319.294.478.656.478 1.085 0 .22-.052.423-.157.61a2.305 2.305 0 0 1-.385.51c-.153.153-.4.38-.744.68-.39.342-.701.638-.932.887-.23.25-.415.539-.554.868-.14.33-.209.72-.209 1.17 0 .358.095.629.285.81.19.183.425.274.703.274.536 0 .855-.279.956-.836a12.2 12.2 0 0 1 .133-.55c.03-.104.071-.209.125-.313.053-.105.135-.22.245-.346.11-.126.255-.272.438-.438a48.078 48.078 0 0 0 1.37-1.257c.254-.25.474-.545.658-.888.185-.343.278-.742.278-1.197a2.87 2.87 0 0 0-.486-1.608c-.325-.492-.784-.882-1.378-1.169-.595-.286-1.28-.43-2.057-.43-.836 0-1.567.172-2.194.515s-1.104.775-1.43 1.297c-.327.523-.49 1.038-.49 1.547zm3.868 9.579c.294 0 .553-.1.778-.301.224-.2.336-.477.336-.828 0-.316-.107-.582-.321-.797a1.073 1.073 0 0 0-.793-.324c-.319 0-.588.108-.807.324a1.07 1.07 0 0 0-.329.797c0 .356.113.634.34.832.227.198.492.297.796.297z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"verified\",\"icon\":[\"24\",\"24\",[],\"\",\"M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-off\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.293 6.609l-.793.79A8.794 8.794 0 0 0 11.997 7C8.006 6.978 4 10.17 4 12c0 .925 1.062 2.216 2.63 3.254l-.715.714C4.174 14.76 3 13.228 3 12c0-2.44 4.5-6.025 9.003-6 1.119.006 2.239.234 3.29.609zm2.802 1.442C19.833 9.26 21 10.786 21 12c0 2.45-4.504 6-9 6-1.112 0-2.23-.223-3.279-.595l.794-.792A8.659 8.659 0 0 0 12 17c3.989 0 8-3.161 8-5 0-.911-1.055-2.196-2.62-3.235l.715-.714zm-7.65 7.635l.787-.785A3.005 3.005 0 0 0 15 12c0-.264-.034-.52-.098-.763l.787-.785a4 4 0 0 1-5.245 5.235zM8.318 13.57a4 4 0 0 1 5.257-5.246l-.785.782a3.003 3.003 0 0 0-3.687 3.68l-.785.784zm-3.466 6.285a.5.5 0 1 1-.706-.708l15-14.971a.5.5 0 1 1 .706.708l-15 14.97z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-on\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6zm1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12zm8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"warning-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M13.026 4.377l8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0zM12 5L3.5 19h17L12 5zm0 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm.75-3.677a.689.689 0 0 1-.7.677.689.689 0 0 1-.7-.677V8.677c0-.374.313-.677.7-.677.387 0 .7.303.7.677v5.646z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"warning\",\"icon\":[\"24\",\"24\",[],\"\",\"M13.026 4.377l8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0zM12 18a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm.75-3.677V8.677a.689.689 0 0 0-.7-.677c-.387 0-.7.303-.7.677v5.646c0 .374.313.677.7.677.387 0 .7-.303.7-.677z\"]}","import { Core } from 'libs/common/core';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { NotificationType } from 'libs/shared/apps/notifications/enums/NotificationType';\r\n\r\nexport interface NotificationsAppLinks {\r\n notifications: Core.AppLink;\r\n videoDetails: Core.AppLink;\r\n\r\n // Move these back to Library Editor at some point\r\n pastReleases: Core.AppLink;\r\n awaitingReview: Core.AppLink;\r\n editStaffRequest: Core.AppLink;\r\n}\r\n\r\nexport abstract class BaseNotificationsAppVariables {\r\n public abstract get appLinks(): NotificationsAppLinks;\r\n public abstract get notificationTypesWithAppLinks(): Array<NotificationType>;\r\n\r\n public abstract get notificationsEmptyStateUrl(): string;\r\n public abstract get bellIconColor(): 'dark' | 'light';\r\n\r\n public get name(): string {\r\n return AppVariables.NOTIFICATIONS;\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nexport interface SearchAppLinks {\r\n searchResults: Core.AppLink;\r\n videoDetails: Core.AppLink;\r\n series: Core.AppLink;\r\n tagSearch: Core.AppLink;\r\n\r\n folder?: Core.AppLink;\r\n newLibrary?: Core.AppLink;\r\n classification?: Core.AppLink;\r\n}\r\n\r\nexport abstract class BaseSearchAppVariables {\r\n public abstract get appLinks(): SearchAppLinks;\r\n\r\n public get name(): string {\r\n return AppVariables.SEARCH;\r\n }\r\n\r\n public abstract get addSlugs(): boolean;\r\n\r\n public abstract get searchBarPlaceholder(): string;\r\n}","export * from './BaseSearchAppVariables';\r\nexport * from './BaseNotificationsAppVariables';","export * from './collections';\r\nexport * from './models';\r\nexport * from './props';\r\nexport * from './requests';\r\nexport * from './services';\r\nexport * from './app-variables';\r\nexport * from './ImageUrls';\r\nexport * from './QueryParams';\r\nexport * from './DialogOptions';\r\nexport * from './RegionalUrl';\r\nexport * from './AppLinkWithLabel';\r\nexport * from './WidgetContext';\r\nexport * from './RegionalUrl';","import { BaseObject } from 'libs/shared/interfaces';\r\n\r\n/**\r\n * This maps directly against the widget types from Domain.\r\n * Update is only required where the backend changes.\r\n */\r\nexport enum WidgetType {\r\n Row = 0, // At full-size, this will contain a row of 4 items\r\n LargeRow = 1, // At full-size, this will contain a row of 3 times\r\n Hero = 2,\r\n ResourcesTile = 3 // Deprecated. Widget's with this type will fall back to the `Row` type (0).\r\n}\r\n\r\nexport interface Widget extends BaseObject {\r\n collectionId: number;\r\n dashboardId: number;\r\n type: WidgetType;\r\n}","export * from './primitives';\r\n\r\nexport * from './Audience';\r\nexport * from './Avatar';\r\nexport * from './Banner';\r\nexport * from './Category';\r\nexport * from './Channel';\r\nexport * from './Config';\r\nexport * from './Cover';\r\nexport * from './Curriculum';\r\nexport * from './EntitySetting';\r\nexport * from './HeroBanner';\r\nexport * from './Image';\r\nexport * from './Interactive';\r\nexport * from './Library';\r\nexport * from './Playlist';\r\nexport * from './Rating';\r\nexport * from './Season';\r\nexport * from './Series';\r\nexport * from './Season';\r\nexport * from './Subject';\r\nexport * from './Tag';\r\nexport * from './Theme';\r\nexport * from './Thumbnail';\r\nexport * from './User';\r\nexport * from './Video';\r\nexport * from './Widget';\r\nexport * from './Classification';\r\nexport * from './Presentation';\r\nexport * from './PresentationAudience';\r\nexport * from './Poster';\r\nexport * from './Resource';\r\nexport * from './Person';\r\nexport * from './Company';\r\nexport * from './LanguageConfig';\r\nexport * from './Clip';\r\nexport * from './Link';\r\nexport * from './Folder';\r\nexport * from './Glance';\r\nexport * from './Customer';\r\nexport * from './Organisation';\r\nexport * from './TallPoster';\r\nexport * from './Share';\r\nexport * from './Restriction';\r\nexport * from './Video';\r\nexport * from './Following';\r\nexport * from './UserChannel';\r\nexport * from './Group';\r\nexport * from './VideoHistory';\r\nexport * from './EntitySetting';\r\nexport * from './Subtitle';\r\nexport * from './Language';\r\nexport * from './FileUpload';","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { EmptyStateComponentOptions, EmptyStateComponent } from 'libs/shared/legacy/components/empty-state/EmptyStateComponent';\r\nimport { EmptyStateHelper } from 'libs/shared/legacy/utils/EmptyStateHelper';\r\n\r\ninterface EmptyStateBehaviorOptions {\r\n region: string;\r\n type: number;\r\n shouldRender: () => boolean;\r\n componentOptions?: EmptyStateComponentOptions;\r\n emptyStateComponents: { [type: number]: (self: any) => EmptyStateComponentOptions };\r\n}\r\n\r\nexport class EmptyStateBehavior extends Core.Behavior {\r\n public options: EmptyStateBehaviorOptions;\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n type: 0,\r\n shouldRender: EmptyStateHelper.isCollectionEmpty.bind(null, this.view)\r\n };\r\n }\r\n\r\n public set defaults(defaults: ObjectHash) {}\r\n\r\n private shouldRender(): boolean {\r\n if (_.isFunction(this.options.shouldRender))\r\n return this.options.shouldRender();\r\n\r\n return false;\r\n }\r\n\r\n public getComponent(): EmptyStateComponent {\r\n const options = this.options.emptyStateComponents[this.options.type](this);\r\n\r\n return new EmptyStateComponent(options);\r\n }\r\n\r\n public renderEmptyState(): void {\r\n\r\n if (!this.shouldRender()) return;\r\n\r\n const component = this.getComponent();\r\n\r\n this.view.showChildView(this.options.region, component);\r\n }\r\n\r\n public onRender(): void {\r\n this.renderEmptyState();\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Trigger } from 'bootstrap';\r\nimport { Core } from 'libs/common/core';\r\n\r\nexport enum PopoverPlacement {\r\n auto = 'auto',\r\n top = 'top',\r\n bottom = 'bottom',\r\n left = 'left',\r\n right = 'right'\r\n}\r\n\r\nexport type PopoverSize = 'popover-sm' | 'popover-md' | 'popover-lg';\r\n\r\nexport interface PopoverBehaviorOptions {\r\n toggleEventName?: string;\r\n renderContent: (region: string) => void;\r\n placement?: PopoverPlacement;\r\n title?: string;\r\n containerSelector?: string;\r\n size?: PopoverSize;\r\n boundary?: any;\r\n customClasses?: string;\r\n}\r\n\r\nexport class PopoverBehavior extends Core.Behavior {\r\n public options: PopoverBehaviorOptions;\r\n private popoverInitialized: boolean;\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n title: '',\r\n placement: PopoverPlacement.bottom,\r\n size: 'popover-md'\r\n };\r\n }\r\n\r\n public set defaults(defaults: ObjectHash) {}\r\n\r\n public get ui(): ObjectHash {\r\n return {\r\n popoverContainer: this.options.containerSelector\r\n };\r\n }\r\n\r\n public set ui(ui: ObjectHash) {\r\n let viewUi = {};\r\n if (this.view.ui)\r\n viewUi = _.result(this.view, 'ui');\r\n\r\n (this.view as any)._ui = _.extend({}, viewUi, ui);\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .popover': 'onClickPopover',\r\n 'inserted.bs.popover': 'onPopoverInserted',\r\n 'hidden.bs.popover': 'onPopoverHidden'\r\n };\r\n }\r\n\r\n private bindListeners(): void {\r\n if (!this.options.toggleEventName) return;\r\n\r\n this.listenTo((this.view as any).channelName, `${this.options.toggleEventName}`, this.toggle);\r\n }\r\n\r\n private bindBodyClickListener(): void {\r\n $('body').one(`click.popover${this.view.cid}`, this.onClickOutside.bind(this));\r\n }\r\n\r\n private bindDropdownListener(): void {\r\n $('body').one(`show.bs.dropdown.popover${this.view.cid}`, this.onClickOutside.bind(this));\r\n }\r\n\r\n private onPopoverInserted(): void {\r\n this.bindBodyClickListener();\r\n this.bindDropdownListener();\r\n\r\n this.view.addRegion('content', {\r\n el: '.popover-content',\r\n replaceElement: true\r\n });\r\n\r\n this.options.renderContent('content');\r\n }\r\n\r\n private onPopoverHidden(): void {\r\n $('body').off(`click.popover${this.view.cid}`);\r\n $('body').off(`show.bs.dropdown.popover${this.view.cid}`);\r\n }\r\n\r\n private toggle(): void {\r\n this.view.$el.popover('toggle');\r\n }\r\n\r\n private hide(): void {\r\n this.view.$el.popover('hide');\r\n }\r\n\r\n private onClickPopover(e: JQueryEventObject): void {\r\n // Stop event propagation so that popover doesn't close\r\n e.stopPropagation();\r\n }\r\n\r\n private onClickOutside(e: JQueryEventObject): void {\r\n this.hide();\r\n }\r\n\r\n private getTrigger(): Trigger {\r\n return this.options.toggleEventName ? 'manual' : 'click';\r\n }\r\n\r\n private onAttach(): void {\r\n if (this.popoverInitialized) return;\r\n\r\n this.bindListeners();\r\n\r\n this.view.$el.popover({\r\n title: this.options.title,\r\n content: '<div class=\"popover-content\"></div>',\r\n placement: this.options.placement,\r\n trigger: this.getTrigger(),\r\n html: true,\r\n container: this.view.getUI('popoverContainer') as any,\r\n boundary: this.options.boundary || 'scrollParent',\r\n delay: 1 // Required so popover can be rendered into on inserted.bs.popover\r\n });\r\n\r\n if (this.options.size)\r\n this.view.getUI('popoverContainer').addClass(this.options.size);\r\n\r\n if (this.options.customClasses)\r\n this.view.getUI('popoverContainer').addClass(this.options.customClasses);\r\n\r\n this.popoverInitialized = true;\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nexport type TooltipPlacement = 'auto' | 'top' | 'bottom' | 'left' | 'right';\r\n\r\n/**\r\n * If a selector is not passed in, the tooltip\r\n * will be added to the view's element.\r\n * \r\n * For multiple tooltips in a single component,\r\n * omit the title option and instead add the title\r\n * attribute to the elements in the template.\r\n */\r\nexport interface TooltipOptions {\r\n selector?: string;\r\n title?: string;\r\n placement?: TooltipPlacement;\r\n}\r\n\r\nexport class TooltipBehavior extends Core.Behavior {\r\n public get defaults(): ObjectHash {\r\n return {\r\n placement: 'top'\r\n };\r\n }\r\n\r\n public set defaults(defaults: ObjectHash) {}\r\n\r\n public get ui(): ObjectHash {\r\n if (!this.options.selector)\r\n return {};\r\n\r\n return {\r\n tooltip: this.options.selector\r\n };\r\n }\r\n\r\n public set ui(ui: ObjectHash) {\r\n let viewUi = {};\r\n if (this.view.ui)\r\n viewUi = _.result(this.view, 'ui');\r\n\r\n (this.view as any)._ui = _.extend({}, viewUi, ui);\r\n }\r\n\r\n private getElement(): JQuery<HTMLElement> {\r\n if (this.options.selector)\r\n return this.view.getUI('tooltip');\r\n\r\n return this.view.$el;\r\n }\r\n\r\n private getOptions(): ObjectHash {\r\n const options: ObjectHash = {\r\n placement: this.options.placement\r\n };\r\n\r\n if (this.options.title)\r\n options.title = this.options.title;\r\n\r\n return options;\r\n }\r\n\r\n public onRender(): void {\r\n const el = this.getElement();\r\n\r\n if (!el.length) return;\r\n\r\n el.tooltip(this.getOptions());\r\n }\r\n\r\n public onBeforeDetach(): void {\r\n const element = this.getElement();\r\n\r\n if (element instanceof jQuery)\r\n element.tooltip('dispose');\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<h4 class=\\\"mt-3 text-muted\\\">\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.heading : stack1), depth0))\n + \"</h4>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<p>\"\n + ((stack1 = container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.description : stack1), depth0)) != null ? stack1 : \"\")\n + \"</p>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<img src=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.imageUrl : stack1), depth0))\n + \"\\\" class=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.imageClass : stack1), depth0))\n + \"\\\"/>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.heading : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.description : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport EmptyStateTemplate from './EmptyState.hbs';\r\nimport { Core } from 'libs/common/core';\r\n\r\nexport type EmptyStateImageSize = 'sm' | 'lg';\r\n\r\nexport interface EmptyStateComponentOptions extends Core.ComponentOptions {\r\n imageUrl: string;\r\n heading?: string | (() => string);\r\n description?: string | (() => string);\r\n appLink?: Core.AppLinkHash;\r\n customClass?: string;\r\n customImageClass?: string;\r\n}\r\n\r\nexport class EmptyStateComponent extends Core.Component {\r\n protected options: EmptyStateComponentOptions;\r\n\r\n public constructor(options: EmptyStateComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'EmptyStateComponent';\r\n }\r\n\r\n public get className(): string {\r\n let className = 'd-flex flex-column justify-content-center align-items-center text-center h-100';\r\n\r\n if (this.options.customClass)\r\n className += ` ${this.options.customClass}`;\r\n\r\n return className;\r\n }\r\n\r\n public get template(): string {\r\n return EmptyStateTemplate;\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n imageSize: 'lg',\r\n paddedContainer: true\r\n };\r\n }\r\n\r\n public get appLinks(): Core.AppLinkHash {\r\n return this.options.appLink || {};\r\n }\r\n\r\n private getImageClass(): string {\r\n return this.options.customImageClass;\r\n }\r\n\r\n private getHeading(): string {\r\n if (_.isFunction(this.options.heading))\r\n return this.options.heading();\r\n\r\n return this.options.heading;\r\n }\r\n private getDescription(): string {\r\n if (_.isFunction(this.options.description))\r\n return this.options.description();\r\n\r\n return this.options.description;\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n imageUrl: this.options.imageUrl,\r\n imageClass: this.getImageClass(),\r\n heading: this.getHeading(),\r\n description: this.getDescription()\r\n };\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.lambda, alias4=container.escapeExpression;\n\n return \"<img \"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.lazyload : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"src=\\\"\"\n + alias4(alias3(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.url : stack1), depth0))\n + \"\\\" class=\\\"img-fluid lazy-img w-100 \"\n + alias4(alias3(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.thumbnail : stack1), depth0))\n + \"\\\" />\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.playIcon : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n return \"data-\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<div class=\\\"\"\n + container.escapeExpression(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.playSvgContainer : stack1), depth0))\n + \"\\\" \"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.lazyload : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.playSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</div>\\r\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n return \"style=\\\"display: none;\\\"\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<span class=\\\"badge float-right \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.durationOverlay : stack1), depth0))\n + \"\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.duration : stack1), depth0))\n + \"</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.lambda;\n\n return ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.url : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"<div class=\\\"\"\n + container.escapeExpression(alias3(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias3(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.playSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</div>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.duration : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { BehaviorChannels } from 'libs/common/backbone/constants/BehaviorChannels';\r\n\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\r\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\r\n\r\nimport ThumbnailTemplate from './Thumbnail.hbs';\r\nimport styles from './thumbnail.scss';\r\n\r\nexport interface ThumbnailComponentOptions extends Core.ComponentOptions {\r\n model: Core.Model;\r\n onClickHandler?: Function;\r\n thumbnailOptions?: ImageOptions;\r\n playIcon?: boolean;\r\n lazyload?: boolean;\r\n appLink?: Core.AppLink;\r\n href?: string;\r\n channelName?: string;\r\n classNameOverride?: string;\r\n}\r\n\r\n/**\r\n * @Backbone\r\n */\r\nexport class ThumbnailComponent extends Core.Component {\r\n protected options: ThumbnailComponentOptions;\r\n\r\n constructor(options: ThumbnailComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n if (this.options.channelName) {\r\n this.listenTo(this.options.channelName, 'show:play:icon', this.showPlayIcon);\r\n }\r\n\r\n this.listenTo(this.model, 'change:thumbnail', this.render);\r\n }\r\n\r\n public get name(): string {\r\n return 'ThumbnailComponent';\r\n }\r\n\r\n public get template(): string {\r\n return ThumbnailTemplate;\r\n }\r\n\r\n public get tagName(): string {\r\n return 'a';\r\n }\r\n\r\n public get className(): string {\r\n if (this.options.classNameOverride)\r\n return this.options.classNameOverride;\r\n\r\n let className = `${styles.thumbnailContainer} responsive-img`;\r\n\r\n if (this.options.onClickHandler)\r\n className += ' cursor-pointer';\r\n\r\n return className;\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n [`.${styles.playSvgContainer}`]: 'showPlayIcon',\r\n img: 'img'\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n click: 'onClick'\r\n };\r\n }\r\n\r\n public get appLinks(): Core.AppLinkHash {\r\n if (!this.options.appLink)\r\n return {};\r\n\r\n return {\r\n '[this]': this.options.appLink\r\n };\r\n }\r\n\r\n public get attributes(): ObjectHash {\r\n if (this.options.appLink || !this.options.href)\r\n return {};\r\n\r\n return {\r\n href: this.options.href,\r\n target: '_blank'\r\n };\r\n }\r\n\r\n private showPlayIcon(): void {\r\n this.$el.find(`.${styles.playSvgContainer}`).show();\r\n }\r\n\r\n private onClick(e: JQuery.Event): void {\r\n /**\r\n * Do nothing if an appLink was specified;\r\n */\r\n if (this.options.appLink)\r\n return;\r\n\r\n if (!_.isFunction(this.options.onClickHandler))\r\n return;\r\n\r\n return this.options.onClickHandler.apply(this, arguments);\r\n }\r\n\r\n private onImageLoad(): void {\r\n if (!this.options.channelName)\r\n return;\r\n\r\n Radio.channel(this.options.channelName)\r\n .trigger('thumbnail:load');\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n const duration = this.model.get('duration');\r\n return {\r\n styles,\r\n url: ImageHelper.legacyCreateThumbnailUrl(this.model.get('thumbnail'), this.options.thumbnailOptions),\r\n duration: duration && DurationHelper.ToDisplayDuration(duration),\r\n playSvg: SvgHelper.getSvg(cvSvgLibrary.Play),\r\n playIcon: this.options.playIcon,\r\n lazyload: this.options.lazyload\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n Radio.channel(BehaviorChannels.LAZY_LOAD).trigger('update:loader');\r\n\r\n if (!this.options.lazyload)\r\n return;\r\n /**\r\n * Need to bind this event listener this way because \r\n * img element events don't bubble so cannot be used as delegate events\r\n * in our backbone \"events\" property\r\n */\r\n if (this.options.channelName) {\r\n const $image = this.getUI('img');\r\n $image.length && ($image[0].onload = _.bind(this.onImageLoad, this));\r\n }\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"thumbnailContainer\":\"cv--thumbnailContainer--1u9bn\",\"thumbnail\":\"cv--thumbnail--1CQyt\",\"svgContainer\":\"cv--svgContainer--2L1Hd\",\"playSvgContainer\":\"cv--playSvgContainer--17LPb\",\"durationOverlay\":\"cv--durationOverlay--15X7K\"};","import { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { BaseNotificationsAppVariables } from 'libs/shared/interfaces';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { EmptyStateComponentOptions } from 'libs/shared/legacy/components/empty-state/EmptyStateComponent';\r\nimport { SharedEmptyState } from 'libs/shared/legacy/enums/EmptyState';\r\n\r\nimport styles from './empty-state.scss';\r\n\r\nexport interface EmptyStateOptions extends Pick<EmptyStateComponentOptions, Exclude<keyof EmptyStateComponentOptions, 'imageUrl'>> {}\r\n\r\nexport const EmptyStateComponents: { [type: number]: (self: any) => EmptyStateComponentOptions } = {\r\n [SharedEmptyState.Notifications]: (self: any): EmptyStateComponentOptions => {\r\n const appVariables: BaseNotificationsAppVariables = InstanceManager.getInstance(AppVariables.NOTIFICATIONS);\r\n\r\n const emptyStateObject = {\r\n imageUrl: appVariables.notificationsEmptyStateUrl,\r\n heading: self.options.componentOptions.noNotificationsText,\r\n customClass: `${styles.paddedContainer} ${self.options.componentOptions.customClass}`,\r\n customImageClass: self.options.componentOptions.imageSize === 'sm' ? styles.imageSmall : styles.imageLarge\r\n };\r\n\r\n InstanceManager.releaseInstance(AppVariables.NOTIFICATIONS);\r\n return emptyStateObject;\r\n }\r\n};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"paddedContainer\":\"cv--paddedContainer--1cCVc\",\"imageLarge\":\"cv--imageLarge--3Wy1u\",\"imageSmall\":\"cv--imageSmall--3t8Qq\"};","export enum SharedEmptyState {\r\n Notifications\r\n}","export enum SortType {\r\n MostRecent = 1,\r\n AtoZ = 2,\r\n ProductionYear = 3,\r\n Newest = 4,\r\n SeriesSort = 5\r\n}","import { BaseCollectionIdentifier, BaseCollectionIdentifierOptions } from 'libs/common/backbone/interfaces';\r\n\r\nimport { SortType } from 'libs/shared/legacy/enums/SortType';\r\n\r\nexport interface CollectionIdentifierOptions extends BaseCollectionIdentifierOptions<SortType> { }\r\n\r\nexport class CollectionIdentifier extends BaseCollectionIdentifier<SortType> {\r\n protected getSortTypeParam(): string {\r\n return SortType[this.sort];\r\n }\r\n}","export * from './CollectionIdentifier';","import { Core } from 'libs/common/core';\r\n\r\nexport const EmptyStateHelper = {\r\n isCollectionEmpty(view: Core.View, collectionName: string = 'collection'): boolean {\r\n return (view as any)[collectionName] && !(view as any)[collectionName].length;\r\n }\r\n};","import * as _ from 'underscore';\r\nimport * as Handlebars from 'handlebars';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nexport const LangHelper = {\r\n register(): void {\r\n Handlebars.registerHelper('lang', (phraseKey: string, templateOptions: Handlebars.HelperOptions) => {\r\n if (!this.isValid(phraseKey, templateOptions))\r\n return;\r\n\r\n /**\r\n * - `templateOptions.data.root` contains any properties available in the `.hbs` template that ran this helper.\r\n * - ALL template's that run this helper receive this `languageNamespace` property, so that we can access the \r\n * correct phrase. `languageNamespace` is added as a result of 3 things:\r\n * 1. The `public get lang()` property on your component which returns the namespace string that's received here\r\n * 2. `RegisterViewDataExtensions` reads the `lang` property from your component, and makes it available in\r\n * your template under `languageNamespace`.\r\n */\r\n const namespace = templateOptions.data.root.languageNamespace;\r\n\r\n return LanguageService.getPhrase(namespace, phraseKey, templateOptions.hash);\r\n });\r\n },\r\n\r\n isValid(key: string, options: Handlebars.HelperOptions): boolean {\r\n if (typeof key !== 'string') {\r\n Core.ErrorHelper.throw(new DevError('No language key provided.'));\r\n return false;\r\n }\r\n\r\n if (typeof options !== 'object') {\r\n Core.ErrorHelper.throw(new DevError('All options must be key-value pairs, e.g. `smartCount=options.videoCount`'));\r\n return false;\r\n }\r\n\r\n if (_.isUndefined(options.data.root.languageNamespace)) {\r\n Core.ErrorHelper.throw(new DevError('No `lang` property provided.'));\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n};","import { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { CustomerType } from 'libs/shared/enums/CustomerType';\r\nimport { OnlineUserRole } from 'libs/shared/enums/UserRole';\r\n\r\nconst DEFAULT_ONLINE_MODULES: OnlineModules = {\r\n curriculum: false\r\n};\r\n\r\ninterface OnlineModules {\r\n curriculum: boolean;\r\n}\r\n\r\nexport interface AppOptions {\r\n onlineModules?: OnlineModules;\r\n customerType: CustomerType;\r\n onlineRole: OnlineUserRole;\r\n}\r\n\r\nexport class AppOptionsService {\r\n private options: AppOptions;\r\n\r\n constructor(options: AppOptions) {\r\n this.options = {\r\n onlineModules: DEFAULT_ONLINE_MODULES,\r\n ...options\r\n };\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.AppOptions;\r\n }\r\n\r\n public get hasCurriculum(): boolean {\r\n return this.options.onlineModules.curriculum;\r\n }\r\n\r\n public get isTeacher(): boolean {\r\n return this.options.onlineRole === OnlineUserRole.Staff;\r\n }\r\n\r\n public get onlineRole(): OnlineUserRole {\r\n return this.options.onlineRole;\r\n }\r\n\r\n public get onlineCustomerType(): CustomerType {\r\n return this.options.customerType;\r\n }\r\n}\r\n\r\n","import { FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces';\r\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { BootstrapKeys } from 'libs/shared/constants/BootstrapKeys';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\nimport { Config } from 'libs/shared/interfaces';\r\n\r\nexport class ConfigDataService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.Config;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.CONFIG;\r\n }\r\n\r\n public getConfig(callback?: (Config: Config) => void, errorCallback?: () => void): Config {\r\n return this.get<Config>({\r\n resource: '/api/config',\r\n eventPrefix: SharedDataPrefixes.CONFIG,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getVersion(callback?: (version: string) => void): string {\r\n return this.get<string>({\r\n resource: '/api/version',\r\n eventPrefix: 'version',\r\n bootstrapName: BootstrapKeys.VERSION,\r\n callback,\r\n expiryTime: CacheDurations.STANDARD,\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: SharedDataServices.Config,\r\n dataChannelName: SharedDataChannels.CONFIG\r\n};\r\n\r\nexport const ConfigDataServiceHelper = {\r\n getConfigFetchOptions(setData: (data: Config) => void, onError?: (error: DataServiceError) => void): FetchOptions {\r\n return {\r\n ...BaseFetchOptions,\r\n eventPrefix: SharedDataPrefixes.CONFIG,\r\n fetchData: (d: ConfigDataService) => d.getConfig(),\r\n setData,\r\n onError\r\n };\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\n\r\ninterface ApplicationContext {\r\n pageLoad: boolean;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nexport interface AppContextServiceOptions {\r\n}\r\n\r\nconst CONTEXT_HISTORY_LENGTH = 5;\r\nconst ROUTE_HISTORY_LENGTH = 3;\r\n\r\nexport class StaticContextService extends Core.Service {\r\n private static instance: StaticContextService;\r\n\r\n private routeHistory: ApplicationContext[] = [];\r\n private contextHistory: ApplicationContext[] = [];\r\n\r\n public get name(): string {\r\n return SharedServices.Context;\r\n }\r\n\r\n public static get Instance(): StaticContextService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.setContext);\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.updateRouteHistory);\r\n }\r\n\r\n /**\r\n * Context specific methods.\r\n * The Context History keeps track of ALL APPLINKS.\r\n */\r\n private setContext(appLink: Core.AppLink): void {\r\n if (this.contextHistory.length >= CONTEXT_HISTORY_LENGTH)\r\n this.contextHistory.unshift();\r\n\r\n this.contextHistory.push({\r\n pageLoad: !this.contextHistory.length,\r\n appLink\r\n });\r\n }\r\n\r\n public getCurrentContext(): ApplicationContext {\r\n if (!this.contextHistory.length) return;\r\n return this.contextHistory[this.contextHistory.length - 1];\r\n }\r\n\r\n public getPreviousContext(): ApplicationContext {\r\n if (!this.contextHistory.length || this.contextHistory.length - 2 < 0) return;\r\n return this.contextHistory[this.contextHistory.length - 2];\r\n }\r\n\r\n /**\r\n * Route specific methods.\r\n * The Route History works the same way as the Context History, except\r\n * it will ONLY take applinks that change the route. This is useful\r\n * for things like tracking state for in-application back buttons where we\r\n * would not be interested in applinks that do not map to routes.\r\n */\r\n private updateRouteHistory(appLink: Core.AppLink): void {\r\n if (!Core.AppLinkHelper.getHref(appLink) && Core.LocationUtils.GetCurrentPath() !== '/')\r\n return;\r\n\r\n if (this.routeHistory.length >= ROUTE_HISTORY_LENGTH)\r\n this.routeHistory.unshift();\r\n\r\n this.routeHistory.push({\r\n pageLoad: !this.routeHistory.length,\r\n appLink\r\n });\r\n }\r\n\r\n public getCurrentRoute(): ApplicationContext {\r\n if (!this.routeHistory.length) return;\r\n return this.routeHistory[this.routeHistory.length - 1];\r\n }\r\n\r\n public getPreviousRoute(): ApplicationContext {\r\n if (!this.routeHistory.length || this.routeHistory.length - 2 < 0) return;\r\n return this.routeHistory[this.routeHistory.length - 2];\r\n }\r\n\r\n /**\r\n * Other utilities\r\n */\r\n public fromPageLoad(): boolean {\r\n return this.contextHistory.length === 1;\r\n }\r\n}\r\n\r\nexport const ContextService: StaticContextService = new StaticContextService();","import { Core } from 'libs/common/core';\r\n\r\nimport { ImageUrls } from 'libs/shared/interfaces';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\n\r\ninterface ImageUrlServiceOptions extends Core.ServiceOptions {\r\n imageUrls: ImageUrls;\r\n}\r\n\r\nexport class ImageUrlService extends Core.Service {\r\n private imageUrls: ImageUrls;\r\n\r\n constructor(options: ImageUrlServiceOptions) {\r\n super(options);\r\n\r\n this.imageUrls = options.imageUrls;\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.ImageUrl;\r\n }\r\n\r\n public getImageUrls(): ImageUrls {\r\n return this.imageUrls;\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { LanguageConfig } from 'libs/shared/interfaces';\r\nimport { BootstrapKeys } from 'libs/shared/constants/BootstrapKeys';\r\n\r\nexport class LanguageDataService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.Language;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.LANGUAGE;\r\n }\r\n\r\n public getLanguageConfig(callback?: (languageConfig: LanguageConfig) => void): void {\r\n const languageConfig: LanguageConfig = { locale: '', phrases: null };\r\n\r\n this.get<string>({\r\n resource: '/api/locale',\r\n eventPrefix: SharedDataPrefixes.LOCALE,\r\n expiryTime: CacheDurations.STANDARD,\r\n bootstrapName: BootstrapKeys.LOCALE,\r\n callback: (locale: string) => {\r\n languageConfig.locale = locale;\r\n\r\n if (languageConfig.phrases && _.isFunction(callback))\r\n callback(languageConfig);\r\n }\r\n });\r\n\r\n this.get<ObjectHash>({\r\n resource: '/api/phrases',\r\n eventPrefix: SharedDataPrefixes.PHRASES,\r\n expiryTime: CacheDurations.STANDARD,\r\n bootstrapName: BootstrapKeys.PHRASES,\r\n callback: (phrases: any) => {\r\n languageConfig.phrases = phrases;\r\n\r\n if (languageConfig.locale && _.isFunction(callback))\r\n callback(languageConfig);\r\n }\r\n });\r\n }\r\n}","import { FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\nimport { BaseUserDataService, CurrentUser } from 'libs/shared/interfaces';\r\n\r\nexport class UserDataService extends BaseDataService implements BaseUserDataService {\r\n public get name(): string {\r\n return SharedDataServices.User;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.USER;\r\n }\r\n\r\n public getCurrentUser<T = CurrentUser>(callback?: (user: T) => void, errorCallback?: () => void): T {\r\n return this.get<T>({\r\n resource: '/api/currentuser',\r\n eventPrefix: SharedDataPrefixes.CURRENT_USER,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getWorkspace(callback: (workspace: HashObject) => void, errorCallback?: () => void): HashObject {\r\n return this.get({\r\n resource: '/api/domain/v2/me/workspace?query=categorytree',\r\n eventPrefix: SharedDataPrefixes.WORKSPACE,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: SharedDataServices.User,\r\n dataChannelName: SharedDataChannels.USER\r\n};\r\n\r\nexport const UserDataServiceHelper = {\r\n getCurrentUserFetchOptions<T> (\r\n setData: (data: T) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions {\r\n return {\r\n ...BaseFetchOptions,\r\n eventPrefix: SharedDataPrefixes.CURRENT_USER,\r\n fetchData: (d: UserDataService) => d.getCurrentUser(),\r\n setData,\r\n onError\r\n };\r\n },\r\n\r\n // For marionette views\r\n currentUser: {\r\n dataServiceName: SharedDataServices.User,\r\n eventName: `${SharedDataPrefixes.CURRENT_USER}:sync`,\r\n getData: (instance: UserDataService) => instance.getCurrentUser(),\r\n getInstance: (context: Backbone.Events) => InstanceManager.getInstance(SharedDataServices.User, context),\r\n beforeOnBeforeRender: true\r\n }\r\n};","import * as _ from 'underscore';\r\n\r\nconst padLeft = (value: string | number, totalLength: number, padChar: string) => {\r\n value = value.toString();\r\n\r\n var diff = totalLength - value.length;\r\n\r\n if (diff <= 0)\r\n return value;\r\n\r\n return new Array(diff + 1).join(padChar) + value;\r\n};\r\n\r\nconst DurationHelper = {\r\n /**\r\n * Copypasta from Online. Feel free to improve it if you see fit - Sha\r\n */\r\n ToDisplayDuration(milliseconds: number): string {\r\n if (!_.isNumber(milliseconds))\r\n return '';\r\n\r\n const time = new Date(milliseconds);\r\n\r\n const h = time.getUTCHours(),\r\n m = padLeft(time.getUTCMinutes(), 2, '0'),\r\n s = padLeft(time.getUTCSeconds(), 2, '0');\r\n\r\n if (h > 0) {\r\n return `${h}:${m}:${s}`;\r\n }\r\n\r\n return `${m}:${s}`;\r\n }\r\n};\r\n\r\nexport { DurationHelper };","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Banner } from 'libs/shared/interfaces';\r\nimport { ImageType, ImageSize, ResizeType } from 'libs/shared/enums/Images';\r\n\r\nexport interface ImageOptions {\r\n size?: ImageSize;\r\n bgColor?: string;\r\n width?: number;\r\n height?: number;\r\n resizeType?: ResizeType;\r\n ratio?: string;\r\n name?: string;\r\n format?: 'png' | 'jpg';\r\n}\r\n\r\nexport interface CategoryMapperImageOptions {\r\n fallbackBaseUrl: string;\r\n fallbackCategoryName: string;\r\n type: ImageType;\r\n}\r\n\r\nenum ImageTypeString {\r\n Banner = 'banner',\r\n Thumbnail = 'thumbnail'\r\n}\r\n\r\nconst ImageTypes: { [index: number]: ImageTypeString } = {\r\n [ImageType.Banners]: ImageTypeString.Banner,\r\n [ImageType.Thumbnails]: ImageTypeString.Thumbnail\r\n};\r\n\r\nconst endpoints = {\r\n categoryMapper: (type: ImageTypeString) => `/v1/category-map/${type}`\r\n};\r\n\r\nexport const ImageHelper = {\r\n createUrl(baseUrl: string, options?: ImageOptions): string {\r\n return ImageHelper._createUrl(baseUrl, options);\r\n },\r\n\r\n createBannerUrl(\r\n banner: Banner, mappingOptions?: CategoryMapperImageOptions, imageOptions?: ImageOptions\r\n ): string {\r\n // Return existing banner url where we have one saved \r\n if (banner && banner.url)\r\n return ImageHelper._createUrl(banner.url, imageOptions);\r\n\r\n return ImageHelper._createCategoryMappedUrl(mappingOptions, imageOptions);\r\n },\r\n\r\n /**\r\n * Ensures that strings are properly escaped before using them\r\n * within a URL.\r\n */\r\n Rfc3986EncodeURIComponent(str: string): string {\r\n return encodeURIComponent(str).replace(/[!'()*]/g, escape);\r\n },\r\n\r\n _createCategoryMappedUrl(mappingOptions: CategoryMapperImageOptions, options?: ImageOptions): string {\r\n const { fallbackBaseUrl, fallbackCategoryName, type } = mappingOptions;\r\n\r\n // Generate a fallback url against the image mapper\r\n const baseUrl = UrlHelper.safeUrlConcat(fallbackBaseUrl, `${endpoints.categoryMapper(ImageTypes[type])}`);\r\n\r\n const ops = { name: ImageHelper.Rfc3986EncodeURIComponent(fallbackCategoryName), ...options };\r\n\r\n return ImageHelper._createUrl(baseUrl, ops);\r\n },\r\n\r\n _createUrl(baseUrl: string, options?: ImageOptions): string {\r\n if (!baseUrl)\r\n return;\r\n\r\n if (ObjectHelper.isEmpty(options))\r\n return baseUrl;\r\n\r\n const params = $.param(options);\r\n\r\n const separator = baseUrl.indexOf('?') === -1\r\n ? '?'\r\n : '&';\r\n\r\n let url = baseUrl;\r\n\r\n if (url.endsWith('/'))\r\n url = url.slice(0, -1);\r\n\r\n return url + `${separator}${params}`;\r\n },\r\n\r\n // For Backbone ThumbnailComponent\r\n legacyCreateThumbnailUrl(thumbnail: string | Core.Model | HashObject, options?: ImageOptions): string {\r\n if (!thumbnail)\r\n return '';\r\n\r\n let baseUrl;\r\n\r\n if (!thumbnail)\r\n return;\r\n\r\n if (thumbnail instanceof Core.Model)\r\n baseUrl = thumbnail.get('url');\r\n else if (typeof thumbnail === 'string')\r\n baseUrl = thumbnail;\r\n else\r\n baseUrl = thumbnail.url;\r\n\r\n if (!baseUrl) return;\r\n\r\n const ops = {\r\n size: ImageSize.Small,\r\n bgColor: '000',\r\n ...options\r\n };\r\n\r\n return ImageHelper._createUrl(baseUrl as string, ops);\r\n }\r\n};","import { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { BaseLibraryDataService } from 'libs/shared/interfaces';\r\n\r\nexport const SharedLibraryDataServiceHelper = {\r\n libraries: {\r\n dataServiceName: SharedDataServices.Library,\r\n eventName: 'libraries:sync',\r\n getData: (instance: BaseLibraryDataService) => instance.getLibraries(),\r\n getInstance: (context: Backbone.Events) => InstanceManager.getInstance(SharedDataServices.Library, context),\r\n beforeOnBeforeRender: true\r\n }\r\n};","export interface MaskHelperOptions {\r\n targetSelector?: string;\r\n additionalClasses?: string;\r\n fade?: boolean;\r\n}\r\n\r\n/**\r\n * Mask class is tied to styling in _mask.scss\r\n */\r\nconst MASK_CLASS = 'mask';\r\nconst MASK_LOCK = 'mask-lock';\r\nconst DEFAULT_TARGET_SELECTOR = '#app';\r\n\r\nexport const MaskHelper = {\r\n\r\n showMask(options: MaskHelperOptions = {}): JQuery {\r\n const { targetSelector, additionalClasses, fade = true } = options;\r\n\r\n const $existingEl = $(`.${MASK_CLASS}`);\r\n\r\n if ($existingEl.length) return;\r\n\r\n var $mask = $('<div>', { class: `${MASK_CLASS} ${additionalClasses ? additionalClasses : ''}` });\r\n\r\n if (fade) $mask.addClass('fade show');\r\n\r\n $($mask).appendTo(MaskHelper.getTarget(targetSelector));\r\n $(MaskHelper.getTarget(targetSelector)).addClass(MASK_LOCK);\r\n\r\n return $mask;\r\n },\r\n\r\n hideMask(maskEl?: JQuery): void {\r\n const $maskEl = maskEl || $(`.${MASK_CLASS}`);\r\n\r\n if (!$maskEl.length) return;\r\n\r\n const $lockedEl = $(`.${MASK_LOCK}`);\r\n $lockedEl.removeClass(MASK_LOCK);\r\n\r\n $maskEl.remove();\r\n },\r\n\r\n getTarget(targetSelector?: string): JQuery {\r\n const target = targetSelector || DEFAULT_TARGET_SELECTOR;\r\n\r\n const $el = $(target);\r\n if (!$el.length) return;\r\n\r\n return $el;\r\n }\r\n};\r\n","export const NumberHelper = {\r\n padNumber(num: number, padLength: number): string {\r\n let numberString = num.toString();\r\n\r\n if (numberString.length >= padLength)\r\n return numberString;\r\n\r\n padLength = padLength - numberString.length;\r\n\r\n while (padLength > 0) {\r\n numberString = '0' + numberString;\r\n padLength--;\r\n }\r\n return numberString;\r\n }\r\n};","import * as FA from '@fortawesome/fontawesome';\r\nimport { localSvgs } from 'libs/shared/images/svg';\r\n\r\ninterface SVGDefinition extends FA.IconDefinition {}\r\ninterface SVGIcon extends FA.Icon {}\r\ninterface SVGIconParams extends FA.IconParams {}\r\n\r\nexport interface SVGOptions {\r\n prefix?: string;\r\n iconOptions?: SVGIconParams;\r\n}\r\n\r\nconst CV_PREFIX = 'cv';\r\n\r\nexport class StaticSvgHelper {\r\n private static instance: StaticSvgHelper;\r\n\r\n private constructor() {}\r\n\r\n public static get Instance(): StaticSvgHelper {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public getSvg(svgName: string, options: SVGOptions = {}): string {\r\n const iconMeta = this.faIconLookup(svgName, options);\r\n const icon = this.getIcon(iconMeta, options);\r\n\r\n if (!icon || icon && !icon.html.length) return;\r\n\r\n return icon.html.pop();\r\n }\r\n\r\n private getIcon(iconDefinition: SVGDefinition, options: SVGOptions): SVGIcon {\r\n return FA.icon(iconDefinition, options.iconOptions || {});\r\n }\r\n\r\n private faIconLookup(iconName: string, options?: SVGOptions): SVGDefinition {\r\n let { prefix = CV_PREFIX } = options;\r\n\r\n // Deliberately cast to FA types\r\n return FA.findIconDefinition({\r\n prefix: <FA.IconPrefix> prefix,\r\n iconName: <FA.IconName> iconName\r\n });\r\n }\r\n}\r\n\r\nexport const SvgHelper = StaticSvgHelper.Instance;\r\nexport const cvSvgLibrary = localSvgs;","export const UserHelper = {\r\n getInitials(firstName: string, lastName: string): string {\r\n let initials = '';\r\n\r\n if (firstName?.length)\r\n initials = firstName[0];\r\n\r\n if (lastName?.length)\r\n initials += lastName[0];\r\n\r\n return initials.toUpperCase();\r\n }\r\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nconst namespace = 'shared.videoActionsHelper';\r\n\r\nexport enum VideoAction {\r\n AddToPlaylist,\r\n RemoveFromPlaylist,\r\n Share,\r\n Edit\r\n}\r\n\r\ninterface BaseVideoActionOptions {\r\n label: string;\r\n svgName: string;\r\n}\r\n\r\nexport const getVideoActionOptions = (): { [index: string]: BaseVideoActionOptions } => ({\r\n [VideoAction.AddToPlaylist]: {\r\n label: LanguageService.getPhrase(namespace, 'addToPlaylist'),\r\n svgName: cvSvgLibrary.AddToPlaylists\r\n },\r\n [VideoAction.RemoveFromPlaylist]: {\r\n label: LanguageService.getPhrase(namespace, 'removeFromPlaylist'),\r\n svgName: cvSvgLibrary.Delete\r\n },\r\n [VideoAction.Share]: {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n svgName: cvSvgLibrary.Share2\r\n },\r\n [VideoAction.Edit]: {\r\n label: LanguageService.getPhrase(namespace, 'edit'),\r\n svgName: cvSvgLibrary.Edit\r\n }\r\n});","import './apps/classrooms/components/classroom-activities-list/classroom-actitivies-list.lang.json'; import './apps/classrooms/components/classroom-details-form/classroom-details-form.lang.json'; import './apps/classrooms/components/classroom-group-details-form/classroom-group-details-form.lang.json'; import './apps/classrooms/components/classroom-group-dropdown/classroom-group-dropdown.lang.json'; import './apps/classrooms/components/classroom-item/classroom-item.lang.json'; import './apps/classrooms/components/classroom-students-list/classroom-students-list.lang.json'; import './apps/classrooms/components/manage-classroom-groups/manage-classroom-groups.lang.json'; import './apps/classrooms/components/manage-classroom-student-item/manage-classroom-student-item.lang.json'; import './apps/classrooms/components/manage-classroom-students/empty-state/manage-classroom-students-empty-state.lang.json'; import './apps/classrooms/components/manage-classroom-students/manage-classroom-students.lang.json'; import './apps/classrooms/validation/classrooms-validation.lang.json'; import './apps/classrooms/views/add-students-to-classroom/add-students-to-classroom.lang.json'; import './apps/classrooms/views/classroom/classroom.lang.json'; import './apps/classrooms/views/classrooms/classrooms.lang.json'; import './apps/classrooms/views/create-classroom-group/create-classroom-group.lang.json'; import './apps/classrooms/views/create-classroom/create-classroom.lang.json'; import './apps/classrooms/views/delete-classroom-group/delete-classroom-group.lang.json'; import './apps/classrooms/views/delete-classroom/delete-classroom.lang.json'; import './apps/classrooms/views/edit-classroom-group/edit-classroom-group.lang.json'; import './apps/classrooms/views/edit-classroom/edit-classroom.lang.json'; import './apps/classrooms/views/manage-classroom/manage-classroom.lang.json'; import './apps/classrooms/views/remove-students-from-classroom/remove-students-from-classroom.lang.json'; import './apps/content-updates/components/classification-banner/classification-banner.lang.json'; import './apps/content-updates/components/classification-update-breadcrumbs/classification-update-breadcrumbs.lang.json'; import './apps/content-updates/components/whats-new-breadcrumbs/whats-new-breadcrumbs.lang.json'; import './apps/content-updates/views/classification-update/classification-update.lang.json'; import './apps/content-updates/views/content-updates/content-updates.lang.json'; import './apps/dashboard/views/dashboard-widget/dashboard-widget-view.lang.json'; import './apps/dashboard/views/dashboard/dashboard.lang.json'; import './apps/default/views/error/error.lang.json'; import './apps/default/views/my-videos/my-videos.lang.json'; import './apps/playlists/components/playlist-details/playlist-details.lang.json'; import './apps/playlists/components/playlist-header/playlist-header.lang.json'; import './apps/playlists/components/select-playlist/select-playlist.lang.json'; import './apps/playlists/views/add-to-playlist/add-to-playlist.lang.json'; import './apps/playlists/views/delete-playlist/delete-playlist.lang.json'; import './apps/playlists/views/edit-playlist/edit-playlist.lang.json'; import './apps/playlists/views/new-playlist/new-playlist.lang.json'; import './apps/playlists/views/playlist/playlist-view.lang.json'; import './apps/playlists/views/playlists/playlists.lang.json'; import './apps/playlists/views/remove-video-from-playlist/remove-video-from-playlists.lang.json'; import './apps/search/components/filter-actions/filter-actions.lang.json'; import './apps/search/components/reset-button/reset-button.lang.json'; import './apps/search/components/search-filters/search-filters.lang.json'; import './apps/search/constants/search-app-variables.lang.json'; import './apps/search/utils/search-utils.lang.json'; import './apps/search/views/search-results/search-results.lang.json'; import './apps/settings/views/settings/settings.lang.json'; import './apps/subjects/views/classification/classifications-view.lang.json'; import './apps/subjects/views/preferences/base-preferences.lang.json'; import './apps/subjects/views/preferences/curriculum-presentation/curriculum-presentation-selector.lang.json'; import './apps/subjects/views/preferences/level-preferences/level-preferences.lang.json'; import './apps/subjects/views/preferences/subject-preferences/subject-preferences.lang.json'; import './apps/subjects/views/preferences/subject-presentation/subject-presentation-selector.lang.json'; import './apps/subjects/views/preferences/summary/preferences-summary.lang.json'; import './apps/subjects/views/preferences/welcome/preferences-welcome.lang.json'; import './apps/upload/components/upload-file-select/upload-file-select.lang.json'; import './apps/upload/components/uploading-item/uploading-item.lang.json'; import './apps/upload/services/upload-services.lang.json'; import './apps/upload/views/cancel-upload/cancel-upload.lang.json'; import './apps/upload/views/edit-upload/edit-upload.lang.json'; import './apps/user-manager/components/bulk-upload-file-select/bulk-upload-file-select.lang.json'; import './apps/user-manager/components/delete-uploaded-student-popup/delete-uploaded-student-popup.lang.json'; import './apps/user-manager/components/delete-uploaded-teacher-popup/delete-uploaded-teacher-popup.lang.json'; import './apps/user-manager/components/edit-uploaded-user-popup/edit-uploaded-user-popup.lang.json'; import './apps/user-manager/components/manage-users-list/students/manage-students.lang.json'; import './apps/user-manager/components/manage-users-list/teachers/manage-teachers.lang.json'; import './apps/user-manager/components/student-review-table/student-review-table.lang.json'; import './apps/user-manager/components/teacher-review-table/teacher-review-table.lang.json'; import './apps/user-manager/components/user-details-form/student-details-form.lang.json'; import './apps/user-manager/components/user-details-form/teacher-details-form.lang.json'; import './apps/user-manager/components/user-details-form/user-details-form.lang.json'; import './apps/user-manager/validation/user-validation/user-validation.lang.json'; import './apps/user-manager/views/create-student/create-student.lang.json'; import './apps/user-manager/views/create-teacher/create-teacher.lang.json'; import './apps/user-manager/views/edit-student/edit-student.lang.json'; import './apps/user-manager/views/edit-teacher/edit-teacher.lang.json'; import './apps/user-manager/views/remove-user/remove-user.lang.json'; import './apps/user-manager/views/school-student-manager/empty-state/school-student-manager-empty-state.lang.json'; import './apps/user-manager/views/school-student-manager/school-student-manager.lang.json'; import './apps/user-manager/views/school-teacher-manager/empty-state/school-teacher-manager-empty-state.lang.json'; import './apps/user-manager/views/school-teacher-manager/school-teacher-manager.lang.json'; import './apps/user-manager/views/student-upload-review/student-upload-review.lang.json'; import './apps/user-manager/views/teacher-upload-review/teacher-upload-review.lang.json'; import './apps/watch-history/components/watch-history-video-list/watch-history-video-list.lang.json'; import './apps/watch-history/views/watch-history/watch-history.lang.json'; import './shared/components/immersive-reader/immersive-reader.lang.json'; import './shared/components/play-page/play-page.lang.json'; import './shared/components/share/copy-embed-html/copy-embed-html.lang.json'; import './shared/components/share/tokenized-typeahead/tokenized-typeahead.lang.json'; import './shared/components/synopsis/synopsis.lang.json'; import './shared/components/user-options/user-options.lang.json'; import './shared/components/video-details/video-details.lang.json'; import './shared/errors/general/not-found/not-found.lang.json'; import './shared/errors/general/private-resource/private-resource-error.lang.json'; import './shared/errors/general/region-locked-resource/region-locked-resource-error.lang.json'; import './shared/errors/general/unspecified-error/unspecified-error.lang.json'; import './shared/errors/playlists/playlist-not-found/playlist-not-found-error.lang.json'; import './shared/errors/playlists/playlist-private/playlist-private-error.lang.json'; import './shared/errors/videos/video-not-found/video-not-found-error.lang.json'; import './shared/errors/videos/video-private/video-private-error.lang.json'; import './shared/hooks/hooks.lang.json'; import './shared/layouts/teacher-layout/drag-mask/drag-mask.lang.json'; import './shared/utils/shared-utils.lang.json'; import './shared/views/favourite-videos/favourite-videos-view.lang.json'; import './shared/views/left-nav/left-nav-view.lang.json'; import './shared/views/play/play-view.lang.json'; import './shared/views/series/series-view.lang.json'; import './shared/views/share/share.lang.json';\r\nimport '../../../libs/shared/src/apps/notifications/components/notification-list/notification-list.lang.json'; import '../../../libs/shared/src/apps/notifications/services/services.lang.json'; import '../../../libs/shared/src/apps/notifications/utils/notifications-utils.lang.json'; import '../../../libs/shared/src/apps/notifications/views/notifications/notifications.lang.json'; import '../../../libs/shared/src/apps/notifications/views/popover/notifications-popover.lang.json'; import '../../../libs/shared/src/apps/playlists/components/empty-state/empty-state.lang.json'; import '../../../libs/shared/src/apps/playlists/components/playlist-list/playlist-item.lang.json'; import '../../../libs/shared/src/apps/playlists/components/sort-select/playlist-sort-select.lang.json'; import '../../../libs/shared/src/apps/playlists/hooks/playlists-hooks.lang.json'; import '../../../libs/shared/src/apps/playlists/validation/playlists-validation.lang.json'; import '../../../libs/shared/src/apps/search/components/search-tips/search-tips.lang.json'; import '../../../libs/shared/src/apps/search/services/search-services.lang.json'; import '../../../libs/shared/src/apps/search/views/search-bar/search-bar.lang.json'; import '../../../libs/shared/src/apps/subjects/components/coming-soon/coming-soon.lang.json'; import '../../../libs/shared/src/apps/subjects/components/hero-video/hero-video.lang.json'; import '../../../libs/shared/src/apps/upload/errors/file-type/file-type.lang.json'; import '../../../libs/shared/src/apps/upload/errors/internet-connectivity/internet-connectivity.lang.json'; import '../../../libs/shared/src/apps/upload/utils/upload-utils.lang.json'; import '../../../libs/shared/src/components/back-button/back-button.lang.json'; import '../../../libs/shared/src/components/badges/badge.lang.json'; import '../../../libs/shared/src/components/channel-form-field/channel-form-field.lang.json'; import '../../../libs/shared/src/components/confirmation-popup/confirmation-popup.lang.json'; import '../../../libs/shared/src/components/curriculum-links/curriculum-links.lang.json'; import '../../../libs/shared/src/components/edit-link/edit-link.lang.json'; import '../../../libs/shared/src/components/edit-resource/edit-resource.lang.json'; import '../../../libs/shared/src/components/edit-video-details/edit-video-details.lang.json'; import '../../../libs/shared/src/components/edit-video-links/edit-video-links.lang.json'; import '../../../libs/shared/src/components/edit-video-resources/edit-video-resources.lang.json'; import '../../../libs/shared/src/components/edit-video-subtitles/edit-video-subtitles.lang.json'; import '../../../libs/shared/src/components/favourite-button/favourite-button.lang.json'; import '../../../libs/shared/src/components/forms/form-buttons/form-buttons.lang.json'; import '../../../libs/shared/src/components/image-select/image-select.lang.json'; import '../../../libs/shared/src/components/language-select/language-select.lang.json'; import '../../../libs/shared/src/components/pagination/pagination.lang.json'; import '../../../libs/shared/src/components/rating-select/rating-select.lang.json'; import '../../../libs/shared/src/components/search-bar/search-bar.lang.json'; import '../../../libs/shared/src/components/video-list/components/video-item-description/video-item-description.lang.json'; import '../../../libs/shared/src/components/widgets/dynamic-widget/dynamic-widget.lang.json'; import '../../../libs/shared/src/components/widgets/fixed-widget/fixed-widget.lang.json'; import '../../../libs/shared/src/components/widgets/greeting-widget/greeting.lang.json'; import '../../../libs/shared/src/components/widgets/items/interactive-widget-item/interactive-widget-item.lang.json'; import '../../../libs/shared/src/components/widgets/items/subject-widget-item/subject-widget-item.lang.json'; import '../../../libs/shared/src/legacy/behaviors/file-drop/file-drop.lang.json'; import '../../../libs/shared/src/legacy/components/file-select/file-select.lang.json'; import '../../../libs/shared/src/legacy/components/pagination/pagination.lang.json'; import '../../../libs/shared/src/legacy/errors/too-many-files/too-many-files.lang.json'; import '../../../libs/shared/src/legacy/errors/too-many-resources/too-many-resources.lang.json'; import '../../../libs/shared/src/legacy/errors/too-many-subtitles/too-many-subtitles.lang.json'; import '../../../libs/shared/src/utils/shared-utils.lang.json'; import '../../../libs/shared/src/utils/video-actions/video-actions-helper.lang.json'; import '../../../libs/shared/src/views/delete-link/delete-link-view.lang.json'; import '../../../libs/shared/src/views/delete-resource/delete-resource-view.lang.json'; import '../../../libs/shared/src/views/delete-subtitle/delete-subtitle-view.lang.json'; import '../../../libs/shared/src/views/edit-link/edit-link-view.lang.json'; import '../../../libs/shared/src/views/edit-resource/edit-resource-view.lang.json';\r\n\r\nimport './styles';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport {\r\n RegisterLayouts,\r\n RegisterApplications,\r\n RegisterCaches,\r\n RegisterDataProviders,\r\n RegisterDataServices,\r\n RegisterServices,\r\n RegisterAjaxMiddleware,\r\n RegisterErrorHandlers,\r\n RegisterRuntimeEnvironment,\r\n RegisterStore,\r\n RegisterApplicationVariables,\r\n RegisterHandlebarsHelpers,\r\n RegisterViewDataExtensions,\r\n RegisterAppOptions,\r\n RegisterAnalytics\r\n} from './startup';\r\n\r\nconst shell = new Core.Shell({\r\n region: '#app',\r\n layoutService: new Core.LayoutService({})\r\n});\r\n\r\nshell\r\n .addInitializationStep(RegisterStore)\r\n .addInitializationStep(RegisterLayouts)\r\n .addInitializationStep(RegisterCaches)\r\n .addInitializationStep(RegisterDataProviders)\r\n .addInitializationStep(RegisterStore)\r\n .addInitializationStep(RegisterDataServices)\r\n .addInitializationStep(RegisterServices)\r\n .addInitializationStep(RegisterApplicationVariables)\r\n // .addInitializationStep(RegisterAnalytics)\r\n .addInitializationStep(RegisterApplications)\r\n .addInitializationStep(RegisterAjaxMiddleware)\r\n .addInitializationStep(RegisterViewDataExtensions)\r\n .addInitializationStep(RegisterHandlebarsHelpers)\r\n .addInitializationStep(RegisterErrorHandlers)\r\n .addInitializationStep(RegisterAppOptions);\r\n\r\nshell\r\n .addStartUpStep(RegisterRuntimeEnvironment);\r\n\r\nshell.start();","import React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { UserAction, EntityType, WorkflowPhase, LocationContext, AssocDescriptor } from 'libs/analytics/interfaces';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nimport { ClassroomManagerTabs } from 'apps/classrooms/views/manage-classroom/ManageClassroomView';\r\n\r\nclass ClassroomsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.CLASSROOMS;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'classrooms(/)': 'index',\r\n 'classrooms/:id': 'classroom',\r\n 'classrooms/:id/manage': 'manageClassroom'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newClassroom',\r\n 'editClassroom',\r\n 'deleteClassroom',\r\n 'addStudents',\r\n 'removeStudents',\r\n 'newGroup',\r\n 'editGroup',\r\n 'deleteGroup'\r\n ];\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class ClassroomsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Classrooms Application';\r\n }\r\n\r\n public static get router(): any {\r\n return ClassroomsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.CLASSROOMS;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public index(): void {\r\n import('apps/classrooms/views/classrooms/ClassroomsView').then(({ ClassroomsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ClassroomsView />);\r\n });\r\n }\r\n\r\n public classroom(id: string): void {\r\n import('apps/classrooms/views/classroom/ClassroomView').then(({ ClassroomView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ClassroomView id={id} />);\r\n });\r\n }\r\n\r\n public manageClassroom(id: string, params: HashObject<ClassroomManagerTabs>): void {\r\n let tab: ClassroomManagerTabs = params.tab;\r\n\r\n if (![ 'students', 'groups' ].includes(tab))\r\n tab = 'students';\r\n\r\n import('apps/classrooms/views/manage-classroom/ManageClassroomView').then(({ ManageClassroomView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ManageClassroomView id={id} activeTab={tab} />);\r\n });\r\n }\r\n\r\n public newClassroom(): void {\r\n import('apps/classrooms/views/create-classroom/CreateClassroomView').then(({ CreateClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Create,\r\n entity: EntityType.Classroom,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CreateClassroomView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public editClassroom(id: string): void {\r\n import('apps/classrooms/views/edit-classroom/EditClassroomView').then(({ EditClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Edit,\r\n entity: EntityType.Classroom,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditClassroomView id={id} analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public deleteClassroom(id: string): void {\r\n import('apps/classrooms/views/delete-classroom/DeleteClassroomView').then(({ DeleteClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Delete,\r\n entity: EntityType.Classroom,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteClassroomView id={id} analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public addStudents(classroomId: string): void {\r\n import('apps/classrooms/views/add-students-to-classroom/AddStudentsToClassroomView')\r\n .then(({ AddStudentsToClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Associate,\r\n entity: EntityType.Classroom,\r\n location: LocationContext.Popup,\r\n descriptor: AssocDescriptor.User,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <AddStudentsToClassroomView\r\n classroomId={classroomId}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public removeStudents(classroomId: string, params: HashObject): void {\r\n const studentIds = params.studentIds;\r\n\r\n import('apps/classrooms/views/remove-students-from-classroom/RemoveStudentsFromClassroomView')\r\n .then(({ RemoveStudentsFromClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Dissociate,\r\n entity: EntityType.Classroom,\r\n location: LocationContext.Popup,\r\n descriptor: AssocDescriptor.User,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveStudentsFromClassroomView\r\n classroomId={classroomId}\r\n studentIds={studentIds}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public newGroup(classroomId: string, params: HashObject): void {\r\n const { addStudents = []} = params;\r\n\r\n import('apps/classrooms/views/create-classroom-group/CreateClassroomGroupView').then(({ CreateClassroomGroupView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.ClassroomGroup,\r\n location: LocationContext.Popup,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CreateClassroomGroupView\r\n classroomId={classroomId}\r\n studentIds={addStudents}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public editGroup(classroomId: string, groupId: string): void {\r\n import('apps/classrooms/views/edit-classroom-group/EditClassroomGroupView').then(({ EditClassroomGroupView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.ClassroomGroup,\r\n actionType: UserAction.Edit,\r\n location: LocationContext.Popup,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditClassroomGroupView\r\n classroomId={classroomId}\r\n groupId={groupId}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public deleteGroup(classroomId: string, groupId: string): void {\r\n import('apps/classrooms/views/delete-classroom-group/DeleteClassroomGroupView').then(({ DeleteClassroomGroupView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.ClassroomGroup,\r\n actionType: UserAction.Delete,\r\n location: LocationContext.Popup,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteClassroomGroupView\r\n classroomId={classroomId}\r\n groupId={groupId}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n}","import { Flight } from 'libs/common/flight';\r\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { EditClassroomRequest } from 'apps/classrooms/interfaces/EditClassroomRequest';\r\nimport { MockStudent, MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nexport const ClassroomRequests = {\r\n getAll(): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: 'classrooms',\r\n successResponse: () => {\r\n return Flight.Simulator.getAll('classrooms');\r\n },\r\n timeout: 1000\r\n };\r\n },\r\n\r\n getClassroom(id: string): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${id}`,\r\n key: `classroom:${id}`,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n return Flight.Simulator.get('classrooms', id);\r\n },\r\n timeout: 5000\r\n };\r\n },\r\n\r\n createClassroom(\r\n classroom: EditClassroomRequest, success?: (data: MockClassroom) => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: 'create:classroom',\r\n type: HttpVerbs.POST,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n return Flight.Simulator.create('classrooms', {\r\n ...classroom,\r\n students: [],\r\n groups: [],\r\n activities: [],\r\n isFavourited: false\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n editClassroom(classroom: EditClassroomRequest, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: `update:classroom`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', classroom);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n deleteClassroom(id: string, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: `delete:classroom`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n Flight.Simulator.delete('classrooms', id);\r\n return {};\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * Student management requests\r\n */\r\n addStudents(\r\n students: MockStudent[], classroomId: string, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/students`,\r\n key: `add:students:classroom`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [ `classroom:${classroomId}`, 'students', 'groups:with:all:students' ],\r\n successResponse: () => {\r\n return Flight.Simulator.assoc('classrooms', classroomId, 'students', 'school:students', students);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n removeStudents(\r\n studentIds: string[], classroomId: string, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/students`,\r\n key: `remove:students:classroom`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ `classroom:${classroomId}`, ...studentIds.map(s => `students:${s}`), 'groups:with:all:students' ],\r\n successResponse: () => {\r\n return Flight.Simulator.dissoc('classrooms', classroomId, 'students', studentIds);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * Group management requests\r\n */\r\n addGroupToClassroom(\r\n group: MockClassroomGroup,\r\n classroomId: string,\r\n success: (group: MockClassroomGroup) => void,\r\n error: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/groups`,\r\n key: `add:classroom:group`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [`classroom:${classroomId}`],\r\n successResponse: () => {\r\n return Flight.Simulator.assoc('classrooms', classroomId, 'groups', 'groups', group);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n editGroup(\r\n group: MockClassroomGroup, classroom: MockClassroom, success: () => void, error: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${group.id}`,\r\n key: `group:${group.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'groups', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n groups: classroom.groups.map(_group => {\r\n if (_group.id !== group.id)\r\n return _group;\r\n\r\n return group;\r\n })\r\n });\r\n\r\n return Flight.Simulator.update('groups', group);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n deleteGroup(groupId: string, classroomId: string, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${groupId}`,\r\n key: `delete:group`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ 'groups', `classroom:${classroomId}` ],\r\n successResponse: () => {\r\n Flight.Simulator.dissoc('classrooms', classroomId, 'groups', groupId);\r\n Flight.Simulator.delete('groups', groupId);\r\n return {};\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n addStudentsToGroup(\r\n students: string[],\r\n groupId: string,\r\n success?: () => void,\r\n error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${groupId}/students`,\r\n key: `add:student:group`,\r\n data: students,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [ `group:${groupId}`, ...students.map(s => `user:${s}:groups`), 'groups:with:all:students' ],\r\n successResponse: () => {\r\n students.forEach(student => {\r\n Flight.Simulator.assoc('groups', groupId, 'students', 'school:students', [student]);\r\n });\r\n return Flight.Simulator.get('groups', groupId);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n removeStudentsFromGroup(\r\n students: string[],\r\n groupId: string,\r\n success?: () => void,\r\n error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: UrlHelper.urlBuilder(`/api/domain/v1/groups/${groupId}/students`, { id: students }),\r\n key: `remove:student:group`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ `group:${groupId}`, 'groups:with:all:students', ...students.map(s => `user:${s}:groups`) ],\r\n successResponse: () => {\r\n students.forEach(student => {\r\n Flight.Simulator.dissoc('groups', groupId, 'students', student);\r\n });\r\n return Flight.Simulator.get('groups', groupId);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n getStarredClassrooms(): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/me/starred-classrooms`,\r\n key: 'starred:classrooms',\r\n successResponse: () => {\r\n return Flight.Simulator.getAll('classrooms').filter(c => c.isFavourited);\r\n }\r\n };\r\n },\r\n\r\n starClassroom(classroom: MockClassroom, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classroom/${classroom.id}/star`,\r\n key: `star:classroom:${classroom.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n isFavourited: true\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n unstarClassroom(\r\n classroom: MockClassroom, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classroom/${classroom.id}/unstar`,\r\n key: `unstar:classroom:${classroom.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n isFavourited: false\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * I'm temporarily using this function to get all of a classrooms groups that every single\r\n * student within that classroom is in. E.g. if EVERY student in classroom 1-A is in the group\r\n * \"Splendid Strawberries\", then that group will be returned here. This is to be temporarily\r\n * used by the bulk group management dropdown above the classroom student manager.\r\n * \r\n * I'm aware that it is slow and ugly - I feel like we're better off waiting to see how backend can\r\n * help us out here before unnecessarily optimizing things on the frontend.\r\n */\r\n getGroupsWithAllStudents(students: MockStudent[]): Flight.SimulatedRequest {\r\n const studentIds = students.map(s => s.id);\r\n return {\r\n url: 'i highly doubt this will be a real request',\r\n key: 'groups:with:all:students',\r\n successResponse: () => {\r\n const groups = Flight.Simulator.getAll('groups');\r\n\r\n return groups.filter(group => {\r\n let allStudentsFound = true;\r\n let index = 0;\r\n\r\n do {\r\n const id = studentIds[index];\r\n if (!group.students.find((stu: MockStudent) => stu.id === id))\r\n allStudentsFound = false;\r\n\r\n index++;\r\n } while (index < studentIds.length);\r\n\r\n return allStudentsFound;\r\n });\r\n }\r\n };\r\n }\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\r\nimport { VideoAction } from 'libs/shared/utils/video-actions/VideoActionsHelper';\r\nimport { Video } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nimport { LiteContentUpdateAppLinks } from 'apps/content-updates/utils';\r\n\r\nclass ContentUpdatesRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'content-updates': 'contentUpdates',\r\n 'content-updates/:id(/:slug)': 'classificationUpdate'\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class ContentUpdatesApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Content Updates Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n public static get router(): typeof ContentUpdatesRouter {\r\n return ContentUpdatesRouter;\r\n }\r\n\r\n public contentUpdates(): void {\r\n const videoActions = [\r\n VideoAction.Share,\r\n VideoAction.AddToPlaylist\r\n ];\r\n\r\n const getActionAppLink = (video: Video, action: VideoAction) => {\r\n switch (action) {\r\n case VideoAction.AddToPlaylist:\r\n return LiteContentUpdateAppLinks.getAddToPlaylistAppLink(video);\r\n\r\n case VideoAction.Share:\r\n return LiteContentUpdateAppLinks.getShareAppLink(video);\r\n }\r\n };\r\n\r\n import('apps/content-updates/views/content-updates/ContentUpdatesView').then(({ ContentUpdatesView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, (\r\n <VideoActionsContext.Provider value={{ videoActions, getActionAppLink }}>\r\n <ContentUpdatesView appLinks={LiteContentUpdateAppLinks} />\r\n </VideoActionsContext.Provider>\r\n ));\r\n });\r\n }\r\n\r\n public classificationUpdate(classificationId: string, slug: string): void {\r\n import('apps/content-updates/views/classification-update/ClassificationUpdateView')\r\n .then(({ ClassificationUpdateView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, (\r\n <ClassificationUpdateView classificationId={classificationId} appLinks={LiteContentUpdateAppLinks} />\r\n ));\r\n });\r\n }\r\n}","import { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { Video, Series, Classification } from 'libs/shared/interfaces';\r\nimport { ContentUpdateAppLinks } from 'libs/shared/apps/content-updates/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nexport const LiteContentUpdateAppLinks: ContentUpdateAppLinks = {\r\n getVideoAppLink: (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ],\r\n params: video.lastProgressPoint ? { t: Math.floor(video.lastProgressPoint) } : {}\r\n }),\r\n getSeriesAppLink: (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n }),\r\n getClassificationUpdateAppLink: (classification: Classification) => ({\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\r\n args: [ classification.id, TextHelper.slugify(classification.name) ]\r\n }),\r\n getClassificationAppLink: (classification: Classification) => ({\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Subjects.CLASSIFICATION,\r\n args: [ classification.id, TextHelper.slugify(classification.name) ]\r\n }),\r\n getShareAppLink: (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SHARE,\r\n args: [video.id],\r\n params: { entityType: 'video' }\r\n }),\r\n getAddToPlaylistAppLink: (video: Video) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.ADD_TO_PLAYLIST,\r\n args: [video.id]\r\n }),\r\n dashboardAppLink: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n contentUpdatesAppLink: {\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CONTENT_UPDATES\r\n }\r\n};","export * from './LiteContentUpdateAppLinks';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\nimport { HashObject } from 'libs/common/react/interfaces';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nclass DashboardAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n '(/)': 'index',\r\n 'dashboard/:id/:name': 'dashboard'\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class DashboardApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Dashboard Application';\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n public static get router(): typeof DashboardAppRouter {\r\n return DashboardAppRouter;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public index(): void {\r\n import('apps/dashboard/views/dashboard/DashboardView').then(({ DashboardView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DashboardView />);\r\n });\r\n }\r\n\r\n public dashboard(id: string, name: string, params: HashObject = {}): void {\r\n const cursor = params.cursor || 1;\r\n\r\n import('apps/dashboard/views/dashboard-widget/DashboardWidgetView').then(({ DashboardWidgetView }) => {\r\n this.layout.showChildView(\r\n LayoutRegions.CONTENT,\r\n <DashboardWidgetView widgetId={id} cursor={cursor} />\r\n );\r\n });\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\nimport { NotFoundError } from 'shared/errors/general/not-found/LiteNotFoundError';\r\n\r\nclass DefaultAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n // These routes should be moved to their own applications eventually\r\n 'videos/:id(/:slug)': 'playVideo',\r\n 'series/:id(/:slug)': 'series',\r\n 'share/:shortCode(/)': 'playSharedVideo',\r\n 'favourited-videos(/)': 'favouriteVideos',\r\n 'my-videos(/)': 'myVideos',\r\n '*path' : 'catchAllRoutes',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [ 'devError', 'dialogError', 'error', 'notFound', 'editVideo', 'share' ];\r\n }\r\n\r\n protected get externalRoutes(): HashObject {\r\n return {\r\n 'logout(/)': 'logOut',\r\n 'login(/)': 'logIn'\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class DefaultApplication extends ReactApplication {\r\n public layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Default Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n public static get router(): typeof DefaultAppRouter {\r\n return DefaultAppRouter;\r\n }\r\n\r\n public myVideos(params: HashObject): void {\r\n import('apps/default/views/my-videos/MyVideosView').then(({ MyVideosView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <MyVideosView cursor={params.cursor} />);\r\n });\r\n }\r\n\r\n public share(id: string, params: HashObject): void {\r\n import('shared/views/share/ShareView').then(({ ShareView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <ShareView\r\n entityId={id}\r\n entityType={params.entityType}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public playVideo(id: string, slugOrParams: string | HashObject, params: HashObject = {}): void {\r\n // Handle appLinks that do not pass a slug\r\n if (typeof slugOrParams !== 'string') {\r\n this.playVideoNoSlug(id, slugOrParams || {});\r\n return;\r\n }\r\n\r\n import('shared/views/play/PlayView').then(({ PlayView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlayView id={id} startTime={params.t} />\r\n );\r\n });\r\n }\r\n\r\n public playVideoNoSlug(id: string, params: HashObject): void {\r\n import('shared/views/play/PlayView').then(({ PlayView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlayView id={id} startTime={params.t} />\r\n );\r\n });\r\n }\r\n\r\n public playSharedVideo(shortCode: string): void {\r\n import('shared/views/play-shared/PlaySharedView').then(({ PlaySharedView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaySharedView shortCode={shortCode} />\r\n );\r\n });\r\n }\r\n\r\n public editVideo(videoId: string): void {\r\n import('shared/views/edit-video/EditVideoView').then(({ EditVideoView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditVideoView id={videoId} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public series(id: string, slug: string, params: HashObject): void {\r\n import('shared/views/series/SeriesView').then(({ SeriesView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SeriesView id={id} cursor={params?.cursor} />\r\n );\r\n });\r\n }\r\n\r\n public favouriteVideos(params: HashObject): void {\r\n import('shared/views/favourite-videos/FavouriteVideosView').then(({ FavouriteVideosView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <FavouriteVideosView cursor={params.cursor} />\r\n );\r\n });\r\n }\r\n\r\n public catchAllRoutes(): void {\r\n Core.ErrorHelper.throw(new NotFoundError());\r\n }\r\n\r\n public notFound(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n import('apps/default/views/not-found/LiteNotFoundView').then(({ NotFoundView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NotFoundView error={error} />);\r\n });\r\n }\r\n\r\n public error(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n import('apps/default/views/error/LiteErrorView').then(({ ErrorView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ErrorView error={error} />);\r\n });\r\n }\r\n\r\n public dialogError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n if (!error)\r\n return;\r\n\r\n const { dialogOptions } = error;\r\n\r\n import('libs/shared/views/dialog/DialogView').then(({ DialogView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DialogView\r\n title={dialogOptions.title}\r\n text={dialogOptions.text}\r\n buttons={dialogOptions.buttons}\r\n onDone={error.onDone}\r\n onFail={error.onFail}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public devError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n import('apps/default/views/dev-error/LiteDevErrorView').then(({ DevErrorView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DevErrorView error={error} />);\r\n });\r\n }\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { EmbedLayoutView } from 'shared/layouts/embed-layout/EmbedLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\n\r\nclass EmbedAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'share/embed/:shortCode': 'embedVideo'\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [VerifiedEmailFilter];\r\n }\r\n}\r\n\r\nexport class EmbedApplication extends ReactApplication {\r\n public layout: EmbedLayoutView;\r\n\r\n public get name(): string {\r\n return 'Embed Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<Core.LayoutViewOptions> {\r\n return {\r\n name: Layouts.EMBED_LAYOUT\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n public static get router(): typeof EmbedAppRouter {\r\n return EmbedAppRouter;\r\n }\r\n\r\n public embedVideo(shortCode: string, params: HashObject = {}): void {\r\n const { a = false } = params;\r\n\r\n import('apps/embed/views/embed/EmbedView').then(({ EmbedView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EmbedView id={shortCode} autoplay={a} />);\r\n });\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nclass NotificationsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public get appRoutes(): HashObject {\r\n return {\r\n 'notifications(/)': 'index'\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class NotificationsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Notifications Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public static get router(): any {\r\n return NotificationsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n import('libs/shared/apps/notifications/views/notifications/NotificationsView')\r\n .then(({ NotificationsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <BackboneViewWrapper view={NotificationsView} options={{ params }} />\r\n );\r\n });\r\n }\r\n}","import { BaseNotificationsAppVariables, NotificationsAppLinks } from 'libs/shared/interfaces';\r\nimport { NotificationType } from 'libs/shared/apps/notifications/enums/NotificationType';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nexport class NotificationsAppVariables extends BaseNotificationsAppVariables {\r\n public get appLinks(): NotificationsAppLinks {\r\n return {\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO\r\n },\r\n\r\n notifications: {\r\n application: AppChannels.NOTIFICATIONS,\r\n action: Actions.Notifications.HOME\r\n },\r\n\r\n /**\r\n * Below this comment is unimplemented applinks\r\n */\r\n pastReleases: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n\r\n awaitingReview: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n\r\n editStaffRequest: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n }\r\n };\r\n }\r\n\r\n public get notificationTypesWithAppLinks(): Array<NotificationType> {\r\n return [\r\n NotificationType.VideoReviewReminder,\r\n NotificationType.VideoReviewAddedToLibrary,\r\n NotificationType.CustomLibraryVideoAvailable,\r\n NotificationType.WorkspaceVideoAvailable,\r\n NotificationType.ExchangeVideoAvailable\r\n // NotificationType.StaffRequest,\r\n // NotificationType.StaffRequestFulfilled,\r\n // NotificationType.ChapterMergeSuccess\r\n ];\r\n }\r\n\r\n // TODO\r\n public get notificationsEmptyStateUrl(): string {\r\n // return '/images/empty-states/illo-no-notifications@2x.png';\r\n return '';\r\n }\r\n\r\n public get bellIconColor(): 'dark' {\r\n return 'dark';\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { Video, Series, Playlist, PropsWithAnalyticsOptions, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PlaylistSortHelper } from 'libs/shared/apps/playlists/utils/PlaylistSortHelper';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\nimport { LocationContext } from 'libs/analytics/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nclass PlaylistsAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'playlists(/)': 'index',\r\n 'playlists/:id(/:slug)': 'playlist'\r\n };\r\n }\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newPlaylist',\r\n 'editPlaylist',\r\n 'deletePlaylist',\r\n 'addToPlaylist',\r\n 'removeVideoFromPlaylist'\r\n ];\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class PlaylistsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Playlists Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n public static get router(): typeof PlaylistsAppRouter {\r\n return PlaylistsAppRouter;\r\n }\r\n\r\n private getPopupProps(): PropsWithAnalyticsOptions<PopupViewProps> {\r\n return {\r\n closePopup: () => this.layout.closePopup(),\r\n analyticsOptions: { location: LocationContext.Popup }\r\n };\r\n }\r\n\r\n public index(params: HashObject): void {\r\n const getPlaylistAppLink = (playlist: Playlist) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\r\n });\r\n\r\n this.setDefaultQueryParams({ sort: params.sort || PlaylistSortType.Newest });\r\n\r\n import('apps/playlists/views/playlists/PlaylistsView').then(({ PlaylistsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistsView getPlaylistAppLink={getPlaylistAppLink}\r\n key={params.sort}\r\n sort={PlaylistSortHelper.getSortTypeFromName(params.sort)}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public playlist(id: string): void {\r\n const getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ],\r\n params: video.lastProgressPoint ? { t: Math.floor(video.lastProgressPoint) } : {}\r\n });\r\n\r\n const getSeriesAppLink = (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n });\r\n\r\n import('apps/playlists/views/playlist/PlaylistView').then(({ PlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistView\r\n key={id}\r\n playlistId={id}\r\n application={AppChannels.PLAYLISTS}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n allowEdit\r\n />\r\n );\r\n });\r\n }\r\n\r\n public newPlaylist(): void {\r\n import('apps/playlists/views/new-playlist/NewPlaylistView').then(({ NewPlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <NewPlaylistView application={AppChannels.PLAYLISTS} {...this.getPopupProps()} />\r\n );\r\n });\r\n }\r\n\r\n public editPlaylist(id: string): void {\r\n import('apps/playlists/views/edit-playlist/EditPlaylistView').then(({ EditPlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditPlaylistView key={id} playlistId={id} {...this.getPopupProps()} />\r\n );\r\n });\r\n }\r\n\r\n public deletePlaylist(id: string): void {\r\n import('apps/playlists/views/delete-playlist/DeletePlaylistView').then(({ DeletePlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeletePlaylistView\r\n key={id}\r\n playlistId={id}\r\n routeToOnDelete={{\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n }}\r\n {...this.getPopupProps()}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public addToPlaylist(videoId: string): void {\r\n import('apps/playlists/views/add-to-playlist/AddToPlaylistView').then(({ AddToPlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <AddToPlaylistView key={videoId} videoId={videoId} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public removeVideoFromPlaylist(videoId: string, playlistId: string): void {\r\n import('apps/playlists/views/remove-video-from-playlist/RemoveVideoFromPlaylistView')\r\n .then(({ RemoveVideoFromPlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveVideoFromPlaylistView\r\n key={`${videoId}:${playlistId}`}\r\n videoId={videoId}\r\n playlistId={playlistId}\r\n {...this.getPopupProps()}\r\n />\r\n );\r\n });\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nclass SearchAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'search(/)': 'index'\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class SearchApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Search Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n public static get router(): typeof SearchAppRouter {\r\n return SearchAppRouter;\r\n }\r\n\r\n public index(queryParams?: HashObject): void {\r\n import('apps/search/views/search-results/SearchResultsView').then(({ SearchResultsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SearchResultsView queryParams={queryParams} />);\r\n });\r\n }\r\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { BaseSearchAppVariables, SearchAppLinks } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nconst namespace = 'search.searchAppVariables';\r\n\r\nexport class SearchAppVariables extends BaseSearchAppVariables {\r\n public get appLinks(): SearchAppLinks {\r\n /**\r\n * These will eventually be swapped out for their actual applinks\r\n */\r\n return {\r\n searchResults: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n series: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES\r\n },\r\n\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO\r\n },\r\n\r\n tagSearch: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n classification: {\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Subjects.CLASSIFICATION\r\n }\r\n };\r\n }\r\n\r\n public get addSlugs(): boolean {\r\n return true;\r\n }\r\n\r\n public get searchBarPlaceholder(): string {\r\n return LanguageService.getPhrase(namespace, 'searchBarPlaceholder');\r\n }\r\n}","import React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nclass SettingsAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.SETTINGS;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'settings(/)': 'index'\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class SettingsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Settings Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SETTINGS;\r\n }\r\n\r\n public static get router(): typeof SettingsAppRouter {\r\n return SettingsAppRouter;\r\n }\r\n\r\n public index(): void {\r\n import('apps/settings/views/settings/SettingsView').then(({ SettingsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SettingsView />);\r\n });\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nimport { SubjectsAppVariables } from 'apps/subjects/constants/SubjectsAppVariables';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nclass SubjectAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'subjects/preferences': 'preferences',\r\n 'subjects/:id(/:slug)': 'classification',\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class SubjectApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n private subjectsAppVariables: SubjectsAppVariables;\r\n\r\n public initialize(): void {\r\n this.subjectsAppVariables = InstanceManager.getInstance(AppVariables.SUBJECTS, this);\r\n }\r\n\r\n public get name(): string {\r\n return 'Subject Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SubjectAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: this.subjectsAppVariables.hasCompletedOnboarding,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public classification(classificationId: string, slug?: string): void {\r\n import('apps/subjects/views/classification/ClassificationView').then(({ ClassificationView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationView\r\n key={classificationId}\r\n id={classificationId}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public preferences(params: HashObject = {}): void {\r\n import('apps/subjects/views/preferences/LiteBasePreferencesView').then(({ BasePreferencesView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <BasePreferencesView\r\n step={params.step || ''}\r\n redirectUrl={params.redirectUrl || ''}\r\n />\r\n );\r\n });\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {}\r\n}","import { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nexport class SubjectsAppVariables {\r\n public hasCompletedOnboarding: boolean;\r\n\r\n constructor(options: { hasCompletedOnboarding: boolean }) {\r\n this.hasCompletedOnboarding = options.hasCompletedOnboarding;\r\n }\r\n\r\n public get name(): string {\r\n return AppVariables.SUBJECTS;\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nclass UploadAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.UPLOAD;\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'editUpload',\r\n 'cancelUpload'\r\n ];\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class UploadApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Upload Application';\r\n }\r\n\r\n public static get router(): any {\r\n return UploadAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.UPLOAD;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public editUpload(uploadId: string): void {\r\n import('apps/upload/views/edit-upload/EditUploadView').then(({ EditUploadView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditUploadView uploadId={uploadId} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public cancelUpload(id: string, params: HashObject): void {\r\n import('apps/upload/views/cancel-upload/CancelUploadView').then(({ CancelUploadView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CancelUploadView\r\n id={id}\r\n name={params.name}\r\n status={params.status}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n });\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { InteractionType, WorkflowPhase, UserAction, EntityType, LocationContext } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { FileSelectButton } from 'libs/shared/components/file-select-button/FileSelectButton';\r\n\r\nimport { Services } from 'shared/constants/Services';\r\n\r\nimport { VideoUploadService } from 'apps/upload/services/VideoUploadService';\r\n\r\nconst namespace = 'shared.uploadFileSelect';\r\n\r\ninterface UploadFileSelectProps {\r\n hideButtonText?: boolean;\r\n}\r\n\r\nexport const UploadFileSelect = React.memo(function(props: UploadFileSelectProps): JSX.Element {\r\n const { hideButtonText = false } = props;\r\n\r\n const videoUploadService = useService<VideoUploadService>(Services.VideoUpload);\r\n\r\n const onFileSelect = (files: FileList) => videoUploadService.addFiles(files as any, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Upload,\r\n workflowPhase: WorkflowPhase.Start,\r\n descriptor: AnalyticsHelper.mapInteractionType(InteractionType.FileSelect),\r\n location: LocationContext.TopNav\r\n });\r\n\r\n return (\r\n <FileSelectButton\r\n svgName={cvSvgLibrary.Upload}\r\n className='btn btn-secondary'\r\n mimeType='video/*'\r\n onFileSelect={onFileSelect}\r\n >\r\n { !hideButtonText && <Text phrase='uploadVideo' namespace={namespace} /> }\r\n </FileSelectButton>\r\n );\r\n});\r\n","import { Radio } from 'backbone';\r\nimport { BaseAlertService, AlertType, BaseAlert, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { PendingItemsHelper } from 'libs/shared/apps/upload/utils/PendingItemsHelper';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\nimport { BasePendingItemsService } from 'libs/shared/apps/upload/services/BasePendingItemsService';\r\nimport { BaseVideoUploadService } from 'libs/shared/apps/upload/services/UploadService';\r\n\r\nimport { Services } from 'shared/constants/Services';\r\nimport { AppChannels, ServiceChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { LeftNavHelper } from 'shared/utils/LeftNavHelper';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('upload.services');\r\n\r\nclass CombinedCollection extends Core.Collection {\r\n public modelId(attrs: HashObject): string {\r\n return attrs.pendingProcessId || attrs.id;\r\n }\r\n\r\n public get comparator(): (item1: Core.Model, item2: Core.Model) => number {\r\n return (item1: Core.Model, item2: Core.Model) => {\r\n const item1Status = item1.get('status');\r\n const item2Status = item2.get('status');\r\n if (item1Status === CombinedUploadStatus.Errored)\r\n return 1;\r\n if (item2Status === CombinedUploadStatus.Errored)\r\n return -1;\r\n\r\n return 0;\r\n };\r\n }\r\n}\r\n\r\nexport enum CombinedUploadStatus {\r\n Uploading,\r\n Processing,\r\n Errored\r\n}\r\n\r\nexport interface CombinedUpload {\r\n id: string;\r\n name: string;\r\n status: CombinedUploadStatus;\r\n progress: number;\r\n pendingProcessId: number;\r\n videoId?: string;\r\n}\r\n\r\n/**\r\n * The sole purpose of this service is to combine the collections in the\r\n * VideoUploadService and the PendingItemsService in a way that's consumable\r\n * by the MyuploadsView\r\n */\r\nexport class CombineUploadsService extends Core.Service {\r\n private videoUploadService: BaseVideoUploadService;\r\n private pendingItemsService: BasePendingItemsService;\r\n private alertService: BaseAlertService;\r\n\r\n private uploads: Core.Collection;\r\n private pendingItems: Core.Collection;\r\n\r\n private combined: CombinedCollection;\r\n\r\n private erroredVideos: Core.Collection;\r\n\r\n public get name(): string {\r\n return Services.CombineUploads;\r\n }\r\n\r\n public get channelName(): string {\r\n return ServiceChannels.COMBINE_UPLOADS;\r\n }\r\n\r\n public initialize(): void {\r\n this.initializeServices();\r\n this.initializeCollections();\r\n this.bindListeners();\r\n }\r\n\r\n private initializeServices(): void {\r\n this.videoUploadService = InstanceManager.getInstance(Services.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n this.alertService = InstanceManager.getInstance(CommonServices.ALERT, this);\r\n }\r\n\r\n private initializeCollections(): void {\r\n this.uploads = this.videoUploadService.getCollection();\r\n this.pendingItems = this.pendingItemsService.getPendingItems();\r\n this.combined = new CombinedCollection();\r\n this.erroredVideos = new Core.Collection();\r\n\r\n this.uploads.each(this.addUpload, this);\r\n this.pendingItems.each(this.addPendingItem, this);\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.uploads, 'add', this.addUpload);\r\n this.listenTo(this.pendingItems, 'add', this.addPendingItem);\r\n\r\n this.listenTo(this.uploads, 'remove', this.removeUpload);\r\n this.listenTo(this.pendingItems, 'remove', this.removePendingItem);\r\n\r\n this.listenTo(this.uploads, 'change', this.onChangeUpload);\r\n this.listenTo(this.pendingItems, 'change', this.onChangePendingItem);\r\n\r\n this.listenTo(\r\n SharedServiceChannels.PENDING_ITEMS,\r\n UploadEventNames.PENDING_ITEM_READY_TO_WATCH,\r\n this.onPendingItemReadyToWatch\r\n );\r\n }\r\n\r\n private getUploadAttrs(upload: Core.Model): CombinedUpload {\r\n return {\r\n id: upload.get('id'),\r\n name: upload.get('name'),\r\n progress: upload.get('progress'),\r\n status: CombinedUploadStatus.Uploading,\r\n pendingProcessId: upload.get('pendingProcessId')\r\n };\r\n }\r\n\r\n private getPendingItemAttrs(pendingItem: Core.Model): CombinedUpload {\r\n return {\r\n id: pendingItem.get('pendingProcessId'),\r\n name: pendingItem.get('video').get('name'),\r\n progress: pendingItem.get('foregroundProgress'),\r\n status: PendingItemsHelper.hasError(pendingItem) ? CombinedUploadStatus.Errored : CombinedUploadStatus.Processing,\r\n pendingProcessId: pendingItem.get('pendingProcessId'),\r\n videoId: pendingItem.get('video').get('id')\r\n };\r\n }\r\n\r\n private addUpload(upload: Core.Model): void {\r\n this.combined.add(this.getUploadAttrs(upload));\r\n }\r\n\r\n private addPendingItem(pendingItem: Core.Model): void {\r\n const existing = this.combined.findWhere({ pendingProcessId: pendingItem.get('pendingProcessId') });\r\n\r\n if (existing) {\r\n existing.set(this.getPendingItemAttrs(pendingItem));\r\n return;\r\n }\r\n\r\n this.combined.add(this.getPendingItemAttrs(pendingItem));\r\n }\r\n\r\n private removeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n this.combined.remove(item);\r\n this.erroredVideos.remove(item);\r\n }\r\n\r\n private removePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n this.combined.remove(item);\r\n this.erroredVideos.remove(item);\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.PROCESSING_CANCELLED);\r\n }\r\n\r\n private onChangeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n item.set(this.getUploadAttrs(upload));\r\n }\r\n\r\n private onChangePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n item.set(this.getPendingItemAttrs(pendingItem));\r\n\r\n if (PendingItemsHelper.hasError(pendingItem)) {\r\n this.onPendingItemError(item);\r\n }\r\n }\r\n\r\n private onPendingItemError(pendingItem: Core.Model): void {\r\n if (this.erroredVideos.findWhere({ id: pendingItem.get('id') }))\r\n return;\r\n\r\n this.erroredVideos.add(pendingItem);\r\n\r\n const alert: BaseAlert = {\r\n heading: DefaultAlertHeading.Fail,\r\n type: AlertType.Fail,\r\n message: getPhrase('errorAlertMessage', { videoName: pendingItem.get('name') })\r\n };\r\n\r\n const { appLink: currentAppLink } = ContextService.getCurrentContext();\r\n\r\n const uploadAppLinks = LeftNavHelper.getMyVideosAppLinks();\r\n const inUploadApp = !!uploadAppLinks.find(a => (\r\n currentAppLink.application === a.application && currentAppLink.action === a.action\r\n ));\r\n\r\n if (!inUploadApp) {\r\n alert.appLinkText = getPhrase('errorAlertAppLinkText');\r\n alert.appLinkClassName = 'info-link';\r\n alert.appLink = {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.MY_VIDEOS\r\n };\r\n }\r\n\r\n this.alertService.createAlert(alert);\r\n }\r\n\r\n private onPendingItemReadyToWatch(pendingItem: Core.Model): void {\r\n const video = pendingItem.get('video');\r\n\r\n const completeUploadAppLink = {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.get('id'), TextHelper.slugify(video.get('name')) ]\r\n };\r\n\r\n this.alertService.createAlert({\r\n type: AlertType.Success,\r\n heading: getPhrase('completeUploadAlertHeading', { videoName: video.get('name') }),\r\n message: getPhrase('completeUploadAlertMessage', { videoName: video.get('name') }),\r\n appLink: completeUploadAppLink,\r\n appLinkText: getPhrase('completeUploadAlertAppLinkText', { videoName: video.get('name') }),\r\n appLinkClassName: 'info-link'\r\n });\r\n }\r\n\r\n public cancelUpload(itemId: string): void {\r\n this.videoUploadService.cancelUpload(itemId);\r\n }\r\n\r\n public cancelProcessing(itemId: string): void {\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: itemId });\r\n this.pendingItemsService.clearPendingItem(pendingItem);\r\n }\r\n\r\n public retryItem(item: CombinedUpload): void {\r\n if (item.status === CombinedUploadStatus.Uploading)\r\n Core.ErrorHelper.throw(new DevError('Cannot retry uploading items.'));\r\n\r\n this.erroredVideos.remove(item);\r\n\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: item.id });\r\n\r\n this.pendingItemsService.retryPendingItem(pendingItem, () => {\r\n this.pendingItemsService.forceFetchPendingItems();\r\n });\r\n }\r\n\r\n public editUpload(item: CombinedUpload): void {\r\n if (item.status !== CombinedUploadStatus.Uploading)\r\n return;\r\n\r\n const upload = this.uploads.get(item.id);\r\n\r\n /**\r\n * If the upload has sending set to true the VideoUploadService is in the middle of \r\n * posting the video to v2/process so we can't let the user edit the video via the edit upload form.\r\n * \r\n * This will only happen if the user clicks edit exactly as the video is posted\r\n */\r\n if (upload.get('sending'))\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.EDIT_UPLOAD,\r\n args: [item.id]\r\n });\r\n }\r\n\r\n public updateUploadMetadata(videoId: string, name: string): void {\r\n const item = this.combined.findWhere({ videoId });\r\n\r\n if (!item) return;\r\n\r\n item.set({ name });\r\n }\r\n\r\n public getCollection(): Core.Collection {\r\n return this.combined;\r\n }\r\n}\r\n","import { Store } from 'redux';\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { VideoOrigin } from 'libs/shared/enums/VideoOrigin';\r\nimport { SubtitleExtractionOptions } from 'libs/shared/enums/SubtitleExtractionOptions';\r\nimport { PendingProcessOrigin } from 'libs/shared/enums/PendingProcessOrigin';\r\nimport { BaseVideoUploadDataService } from 'libs/shared/interfaces';\r\nimport { DataServices } from 'shared/constants/Services';\r\n\r\nconst pendingItemRequests = {\r\n delete(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:clear:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n cancel(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/cancel?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:cancel:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n retry(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/retry?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:retry:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.POST\r\n };\r\n },\r\n\r\n get(id: string, success?: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/${id}`,\r\n key: `pending:item:${id}`,\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getAll(success: (items: HashObject[]) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process?destination=2&status=1&status=-1',\r\n key: 'pending',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n completeUpload(completeRequest: CompletePendingItemRequest, success: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process',\r\n key: `complete:upload:${completeRequest.id}`,\r\n type: HttpVerbs.POST,\r\n success,\r\n data: completeRequest\r\n };\r\n }\r\n};\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\ninterface CompletePendingItemVideo {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\ninterface SubtitleOptions {\r\n subtitleExtractOptions: SubtitleExtractionOptions;\r\n}\r\n\r\ninterface CompletePendingItemRequest {\r\n id: string;\r\n userId: string;\r\n customerId: string;\r\n libraryId: string;\r\n categoryId: string;\r\n fileUrl: string;\r\n pendingProcessOrigin: PendingProcessOrigin;\r\n origin: VideoOrigin;\r\n video: CompletePendingItemVideo;\r\n subtitleOptions: SubtitleOptions;\r\n}\r\n\r\nexport class FlightVideoUploadDataService implements BaseVideoUploadDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.VideoUpload;\r\n }\r\n\r\n public clearPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.delete(ids, callback));\r\n }\r\n public cancelPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.cancel(ids, callback));\r\n }\r\n public retryPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.retry(ids, callback));\r\n }\r\n public getPendingItem(id: string, callback: (item: Core.Model) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.get(id, (data: any) => {\r\n callback(new Core.Model(data));\r\n }));\r\n }\r\n public getPendingItems(callback: (items: HashObject[]) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.getAll(callback));\r\n }\r\n public completeVideoUpload(request: CompletePendingItemRequest, callback?: (item: HashObject) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.completeUpload(request, callback));\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nimport { AlertType, BaseAlert, BaseAlertService } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { PendingProcessOrigin } from 'libs/shared/enums/PendingProcessOrigin';\r\nimport { BasePendingItemsService } from 'libs/shared/apps/upload/services/BasePendingItemsService';\r\nimport { BaseVideoUploadService } from 'libs/shared/apps/upload/services/UploadService';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\nimport { VideoOrigin } from 'libs/shared/enums/VideoOrigin';\r\nimport { SubtitleExtractionOptions } from 'libs/shared/enums/SubtitleExtractionOptions';\r\n\r\nimport { Services, DataServices } from 'shared/constants/Services';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { FlightVideoUploadDataService } from './FlightVideoUploadDataService';\r\nimport { LeftNavHelper } from 'shared/utils/LeftNavHelper';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('upload.services');\r\n\r\nexport class VideoUploadService extends BaseVideoUploadService {\r\n private videoUploadDataService: FlightVideoUploadDataService;\r\n private pendingItemsService: BasePendingItemsService;\r\n private userDataService: UserDataService;\r\n private alertService: BaseAlertService;\r\n\r\n public initialize(): void {\r\n super.initialize();\r\n\r\n this.videoUploadDataService = InstanceManager.getInstance(DataServices.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n this.userDataService = InstanceManager.getInstance(DataServices.User, this);\r\n this.alertService = InstanceManager.getInstance(CommonServices.ALERT, this);\r\n\r\n this.listenTo(this.channelName, UploadEventNames.FILES_ADDED, this.onUploadStart);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_COMPLETE, this.unlockNav);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_CANCELLED, this.unlockNav);\r\n }\r\n\r\n private onUploadStart(files: FileList): void {\r\n const alert: BaseAlert = {\r\n type: AlertType.Success,\r\n heading: getPhrase('startUploadAlertHeading'),\r\n message: files.length === 1\r\n ? getPhrase('startUploadSingleAlertBody', { videoName: files[0].name })\r\n : getPhrase('startUploadMultipleAlertBody', { uploadCount: files.length })\r\n };\r\n\r\n const { appLink: currentAppLink } = ContextService.getCurrentContext();\r\n\r\n const uploadAppLinks = LeftNavHelper.getMyVideosAppLinks();\r\n const inUploadApp = !!uploadAppLinks.find(a => (\r\n currentAppLink.application === a.application && currentAppLink.action === a.action\r\n ));\r\n\r\n // If the user is not on the \"My Uploads\" page, add an applink to the alert\r\n if (!inUploadApp) {\r\n alert.appLinkText = getPhrase('startUploadAlertAppLinkText', { smartCount: files.length });\r\n alert.appLink = {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.MY_VIDEOS\r\n };\r\n alert.appLinkClassName = 'info-link';\r\n }\r\n\r\n this.alertService.createAlert(alert);\r\n }\r\n\r\n private unlockNav(): void {\r\n const collection = this.getCollection();\r\n\r\n if (collection.some(upload => upload.get('progress') < 100))\r\n return;\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.UNLOCK_NAV);\r\n }\r\n\r\n private getUpload(file: File): Core.Model {\r\n const fileId = this.uploader.getId(file);\r\n\r\n return this.getCollection().get(fileId);\r\n }\r\n\r\n private completeUpload(upload: Core.Model, response: any): void {\r\n upload.set('sending', true);\r\n this.userDataService.getCurrentUser((user: HashObject) => {\r\n this.userDataService.getWorkspace((workspace: HashObject) => {\r\n this.videoUploadDataService.completeVideoUpload({\r\n id: upload.get('id'),\r\n userId: user.id,\r\n customerId: user.customerId,\r\n libraryId: workspace.id,\r\n categoryId: workspace.categoryTree.id,\r\n pendingProcessOrigin: PendingProcessOrigin.Upload,\r\n origin: VideoOrigin.Lite,\r\n fileUrl: response.url,\r\n subtitleOptions: {\r\n subtitleExtractOptions: SubtitleExtractionOptions.EmbeddedOnly\r\n },\r\n video: { name: upload.get('name'), description: upload.get('description') }\r\n }, (item: any) => {\r\n upload.set('pendingProcessId', item.pendingProcessId);\r\n this.pendingItemsService.forceFetchPendingItems({\r\n resetTimeout: true,\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n protected onSuccess(file: File, response: any): void {\r\n super.onSuccess(file, response);\r\n\r\n const upload = this.getUpload(file);\r\n\r\n /**\r\n * editingMetadata is set by the EditUploadView.\r\n * If it's set, we wait till the user is done editing the metadata before\r\n * we post the data\r\n */\r\n if (upload.get('editingMetadata')) {\r\n this.listenToOnce(upload, 'change:editingMetadata', () => {\r\n this.completeUpload(upload, response);\r\n });\r\n } else {\r\n this.completeUpload(upload, response);\r\n }\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { UserAction, EntityType, WorkflowPhase, LocationContext, OperationDescriptor } from 'libs/analytics/interfaces';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nclass UserManagerAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.USER_MANAGER;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'user-manager/students(/)': 'studentManager',\r\n 'user-manager/teachers(/)': 'teacherManager',\r\n 'user-manager/students/upload/review': 'studentUploadReview',\r\n 'user-manager/teachers/upload/review': 'teacherUploadReview'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newStudent',\r\n 'editStudent',\r\n 'newTeacher',\r\n 'editTeacher',\r\n 'removeUsers'\r\n ];\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class UserManagerApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'User Manager Application';\r\n }\r\n\r\n public static get router(): any {\r\n return UserManagerAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.USER_MANAGER;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public studentManager(queryParams?: HashObject): void {\r\n import('apps/user-manager/views/school-student-manager/SchoolStudentManagerView')\r\n .then(({ SchoolStudentManagerView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SchoolStudentManagerView queryParams={queryParams} />\r\n );\r\n });\r\n }\r\n\r\n public teacherManager(queryParams?: HashObject): void {\r\n import('apps/user-manager/views/school-teacher-manager/SchoolTeacherManagerView')\r\n .then(({ SchoolTeacherManagerView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SchoolTeacherManagerView queryParams={queryParams} />\r\n );\r\n });\r\n }\r\n\r\n public studentUploadReview(): void {\r\n import('apps/user-manager/views/student-upload-review/StudentUploadReviewView')\r\n .then(({ StudentUploadReviewView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.User,\r\n location: LocationContext.StudentManager,\r\n actionType: UserAction.Create\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <StudentUploadReviewView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public teacherUploadReview(): void {\r\n import('apps/user-manager/views/teacher-upload-review/TeacherUploadReviewView')\r\n .then(({ TeacherUploadReviewView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.User,\r\n location: LocationContext.TeacherManager,\r\n actionType: UserAction.Create\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <TeacherUploadReviewView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public newStudent(): void {\r\n import('apps/user-manager/views/create-student/CreateStudentView')\r\n .then(({ CreateStudentView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Create,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n descriptor: OperationDescriptor.Single,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CreateStudentView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public editStudent(id: string): void {\r\n import('apps/user-manager/views/edit-student/EditStudentView')\r\n .then(({ EditStudentView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Edit,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditStudentView id={id} analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public newTeacher(): void {\r\n import('apps/user-manager/views/create-teacher/CreateTeacherView')\r\n .then(({ CreateTeacherView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Create,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n descriptor: OperationDescriptor.Single,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CreateTeacherView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public editTeacher(id: string): void {\r\n import('apps/user-manager/views/edit-teacher/EditTeacherView')\r\n .then(({ EditTeacherView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Edit,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditTeacherView id={id} analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public removeUsers(params: HashObject): void {\r\n const { userIds = [], userType } = params;\r\n\r\n import('apps/user-manager/views/remove-user/RemoveUserView')\r\n .then(({ RemoveUserView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Delete,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n descriptor: userIds.length === 1 ? OperationDescriptor.Single : OperationDescriptor.Bulk,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveUserView\r\n userIds={userIds}\r\n userType={userType}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n}","import React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { VerifiedEmailFilter } from 'shared/filters/VerifiedEmailFilter';\r\nimport { OnboardingFilter } from 'shared/filters/OnboardingFilter';\r\n\r\nclass WatchHistoryAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.WATCH_HISTORY;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'watch-history(/)': 'index'\r\n };\r\n }\r\n\r\n public get filters(): Core.MiddlewareFunction<Core.AppLink>[] {\r\n return [ VerifiedEmailFilter, OnboardingFilter ];\r\n }\r\n}\r\n\r\nexport class WatchHistoryApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Watch History Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.WATCH_HISTORY;\r\n }\r\n\r\n public static get router(): typeof WatchHistoryAppRouter {\r\n return WatchHistoryAppRouter;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n import('apps/watch-history/views/watch-history/WatchHistoryView').then(({ WatchHistoryView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <WatchHistoryView cursor={params.cursor} />);\r\n });\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { Video, Series } from 'libs/shared/interfaces';\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { SeriesLink } from 'libs/shared/components/series-link/SeriesLink';\r\n\r\nimport { WebPlayer } from 'shared/components/web-player/WebPlayer';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { useInitPlayerContext } from 'shared/hooks/useInitPlayerContext';\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\n\r\nimport styles from './floating-player.scss';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { LocationContext, EntityType, UserAction, WorkflowPhase, ClickDescriptor } from 'libs/analytics/interfaces';\r\n\r\nfunction getSeriesAppLink(series: Series): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n };\r\n}\r\n\r\nfunction getVideoAppLink(video: Video): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ],\r\n params: video.lastProgressPoint ? { t: Math.floor(video.lastProgressPoint) } : {}\r\n };\r\n}\r\n\r\ninterface FloatingPlayerTitleProps {\r\n video: Video;\r\n}\r\n\r\nfunction FloatingPlayerTitle(props: FloatingPlayerTitleProps): JSX.Element {\r\n const { video } = props;\r\n\r\n return (\r\n <h2 className='mb-0 h6'>\r\n {!!video.series && <SeriesLink className='d-block' video={video} appLink={getSeriesAppLink(video.series)} />}\r\n <AppLink appLink={getVideoAppLink(video)}>\r\n {video.name}\r\n </AppLink>\r\n </h2>\r\n );\r\n}\r\n\r\nexport function FloatingPlayer(): React.ReactElement {\r\n useInitPlayerContext();\r\n\r\n const [ playerData, setPlayerData ] = useViewModel(ViewModelKeys.WEB_PLAYER_DATA);\r\n\r\n function onClickClose(): void {\r\n AnalyticsHelper.logUserAction({\r\n id: playerData.video.id\r\n }, {\r\n location: LocationContext.FloatingPlayer,\r\n entity: EntityType.Video,\r\n actionType: UserAction.Click,\r\n descriptor: ClickDescriptor.Close\r\n });\r\n\r\n // TODO: Handle this when the user is on the play page\r\n setPlayerData('video', null);\r\n }\r\n\r\n // TODO: Add this as analyticsOptions to the appLink\r\n function onClickOpenVideo(): void {\r\n AnalyticsHelper.logUserAction({\r\n id: playerData.video.id\r\n }, {\r\n location: LocationContext.FloatingPlayer,\r\n entity: EntityType.Video,\r\n actionType: UserAction.Click,\r\n descriptor: ClickDescriptor.Open\r\n });\r\n }\r\n\r\n if (!playerData?.video)\r\n return <></>;\r\n\r\n let style = {};\r\n let className = styles.fixed;\r\n\r\n if (playerData.viewportPosition) {\r\n className = styles.inline;\r\n style = playerData.viewportPosition;\r\n }\r\n\r\n /**\r\n * Add box shadow when player is floating\r\n */\r\n if (!playerData.viewportPosition)\r\n className += ' shadow';\r\n\r\n return (\r\n <div style={style} className={`${className}`}>\r\n <WebPlayer\r\n id={playerData.video.id}\r\n webPlayerHost={playerData.webPlayerUrl}\r\n className={'embed-responsive-16by9'}\r\n key={playerData.video.id}\r\n startTime={playerData.startTime}\r\n />\r\n\r\n {!playerData.viewportPosition &&\r\n <div className='p-2 bg-white d-flex justify-content-between align-items-center'>\r\n <FloatingPlayerTitle video={playerData.video} />\r\n <span className={`${styles.buttons} flex-shrink-1`}>\r\n <span className={`cursor-pointer ml-1 float-right`} role='button' tabIndex={0} onClick={onClickClose}>\r\n <SvgContainer svgName={cvSvgLibrary.Close} />\r\n </span>\r\n <AppLink appLink={getVideoAppLink(playerData.video)} onClick={onClickOpenVideo}>\r\n {!playerData.isOnPlayPage && <SvgContainer\r\n svgName={cvSvgLibrary.NewWindow}\r\n className={`${styles.flippedIcon} d-inline-block svg-container float-right`} />}\r\n </AppLink>\r\n </span>\r\n </div>}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fixed\":\"cv--fixed--3C4_W\",\"inline\":\"cv--inline--2voRI\",\"closeSvg\":\"cv--closeSvg--2RiDj\",\"buttons\":\"cv--buttons--ZbN3s\",\"flippedIcon\":\"cv--flippedIcon--3nkTw\"};","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { CurrentUser } from 'libs/shared/interfaces';\r\nimport { Text, LanguageNamespaceContext } from 'libs/shared/components/text/Text';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\r\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nimport styles from './user-options.scss';\r\n\r\nconst appLinks: { [key: string]: Core.AppLink } = {\r\n settings: {\r\n application: AppChannels.SETTINGS,\r\n action: Actions.Settings.HOME\r\n },\r\n analytics: null, // TODO\r\n logOut: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.LOG_OUT\r\n },\r\n logIn: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.LOG_IN\r\n }\r\n};\r\n\r\ninterface UserOptionsProps {\r\n user: CurrentUser;\r\n imageCdnUrl: string;\r\n supportSiteUrl: string;\r\n onlyShowSignOut?: boolean;\r\n}\r\n\r\nexport const UserOptions = React.memo(function(props: UserOptionsProps): React.ReactElement {\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.userOptions'>\r\n {props.user\r\n ? (\r\n <Dropdown className='cursor-pointer mx-2 px-2 position-relative'>\r\n <Dropdown.Toggle as='div' id='userOptions' className={`${styles.avatarContainer} no-caret`}>\r\n <Avatar\r\n imageUrl={props.user.avatar}\r\n imageCdnUrl={props.imageCdnUrl}\r\n initials={UserHelper.getInitials(props.user.givenName, props.user.familyName)}\r\n />\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu\r\n alignRight\r\n className={styles.dropdownMenu}\r\n as='ul'\r\n >\r\n <Dropdown.Item as='span'>\r\n <div className='m-0'><strong>{props.user.displayName}</strong></div>\r\n <div className='m-0 text-muted'>{props.user.customerName}</div>\r\n </Dropdown.Item>\r\n\r\n <Dropdown.Divider />\r\n\r\n <Dropdown.Item as={AppLink} appLink={appLinks.settings}>\r\n <Text phrase='settings' />\r\n </Dropdown.Item>\r\n\r\n <Dropdown.Item as={AppLink} appLink={appLinks.analytics}>\r\n <Text phrase='analytics' />\r\n </Dropdown.Item>\r\n\r\n <Dropdown.Item as='a' href={props.supportSiteUrl} target='_blank'>\r\n <Text phrase='helpCentre' />\r\n </Dropdown.Item>\r\n\r\n <Dropdown.Divider />\r\n\r\n <Dropdown.Item as={AppLink} appLink={appLinks.logOut}>\r\n <Text phrase='signOut' />\r\n </Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n ) : (\r\n <AppLink appLink={appLinks.logIn} className='btn btn-dark'>\r\n <Text phrase='logIn' />\r\n </AppLink>\r\n )\r\n }\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}, (prevProps, nextProps): boolean => {\r\n return prevProps.user?.id === nextProps.user?.id\r\n && prevProps.user?.avatar === nextProps.user?.avatar\r\n && prevProps.user?.displayName === nextProps.user?.displayName\r\n && prevProps.user?.customerName === nextProps.user?.customerName;\r\n});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatarContainer\":\"cv--avatarContainer--1nhdk\"};","import * as React from 'react';\r\n\r\ninterface WebPlayerProps {\r\n className?: string;\r\n webPlayerHost: string;\r\n id: string;\r\n startTime?: number; // Timepoint in seconds\r\n}\r\n\r\nexport function WebPlayer(props: WebPlayerProps): React.ReactElement {\r\n let url = `${props.webPlayerHost}home/ev?vid=${props.id}`;\r\n\r\n if (props.startTime)\r\n url += `&t=${props.startTime}`;\r\n\r\n return (\r\n <div className={`embed-responsive ${props.className ? props.className : ''}`}>\r\n <iframe\r\n src={url}\r\n className='embed-responsive-item'\r\n allowFullScreen\r\n allow='autoplay; fullscreen'/>\r\n </div>\r\n );\r\n}","export const DefaultAlertHeading = {\r\n Success: 'Success! 🙌',\r\n Warning: 'Whoops...',\r\n Fail: 'Oops...',\r\n Info: 'FYI'\r\n};","export const ImageUrls = {\r\n EmptyStates: {\r\n VIDEOS: ''\r\n },\r\n\r\n ErrorViews: {\r\n DEFAULT: ''\r\n }\r\n};","export const Actions = {\r\n Default: {\r\n ERROR: 'error',\r\n NOT_FOUND: 'not:found',\r\n DEV_ERROR: 'dev:error',\r\n DIALOG_ERROR: 'dialog:error',\r\n\r\n SERIES: 'series',\r\n PLAY_VIDEO: 'play:video',\r\n FAVOURITE_VIDEOS: 'favourite:videos',\r\n MY_VIDEOS: 'my:videos',\r\n EDIT_VIDEO: 'edit:video',\r\n EDIT_UPLOAD: 'edit:upload',\r\n SHARE: 'share',\r\n\r\n LOG_OUT: 'log:out',\r\n LOG_IN: 'log:in'\r\n },\r\n\r\n Playlists: {\r\n HOME: 'index',\r\n PLAYLIST: 'playlist',\r\n NEW_PLAYLIST: 'new:playlist',\r\n EDIT_PLAYLIST: 'edit:playlist',\r\n DELETE_PLAYLIST: 'delete:playlist',\r\n ADD_TO_PLAYLIST: 'add:to:playlist',\r\n REMOVE_VIDEO_FROM_PLAYLIST: 'remove:video:from:playlist'\r\n },\r\n\r\n Dashboard: {\r\n HOME: 'index',\r\n DASHBOARD: 'dashboard'\r\n },\r\n\r\n Subjects: {\r\n CLASSIFICATION: 'classification',\r\n PREFERENCES: 'preferences'\r\n },\r\n\r\n Notifications: {\r\n HOME: 'index'\r\n },\r\n\r\n Search: {\r\n HOME: 'index'\r\n },\r\n\r\n ContentUpdates: {\r\n CONTENT_UPDATES: 'content:updates',\r\n CLASSIFICATION_UPDATE: 'classification:update'\r\n },\r\n\r\n UserManager: {\r\n STUDENTS: 'student:manager',\r\n TEACHERS: 'teacher:manager',\r\n REMOVE_USERS: 'remove:users',\r\n NEW_STUDENT: 'new:student',\r\n EDIT_STUDENT: 'edit:student',\r\n NEW_TEACHER: 'new:teacher',\r\n EDIT_TEACHER: 'edit:teacher',\r\n STUDENT_UPLOAD_REVIEW: 'student:upload:review',\r\n TEACHER_UPLOAD_REVIEW: 'teacher:upload:review'\r\n },\r\n\r\n Upload: {\r\n EDIT_UPLOAD: 'edit:upload',\r\n CANCEL_UPLOAD: 'cancel:upload'\r\n },\r\n\r\n Classrooms: {\r\n HOME: 'index',\r\n CLASSROOM: 'classroom',\r\n NEW_CLASSROOM: 'new:classroom',\r\n EDIT_CLASSROOM: 'edit:classroom',\r\n DELETE_CLASSROOM: 'delete:classroom',\r\n\r\n MANAGE_CLASSROOM: 'manage:classroom',\r\n ADD_STUDENTS: 'add:students',\r\n REMOVE_STUDENTS: 'remove:students',\r\n\r\n NEW_GROUP: 'new:group',\r\n EDIT_GROUP: 'edit:group',\r\n DELETE_GROUP: 'delete:group'\r\n },\r\n\r\n Settings: {\r\n HOME: 'index'\r\n },\r\n\r\n WatchHistory: {\r\n HOME: 'index'\r\n }\r\n};","export const LayoutRegions = {\r\n CONTENT: 'content',\r\n POPUP: 'popup',\r\n ALERT: 'alert'\r\n};","export const Layouts = {\r\n TEACHER_LAYOUT: 'TeacherLayout',\r\n EMBED_LAYOUT: 'EmbedLayout'\r\n};","export const AppChannels = {\r\n DEFAULT: 'default:application',\r\n PLAYLISTS: 'playlists:application',\r\n DASHBOARD: 'dashboard:application',\r\n SUBJECT: 'subject:application',\r\n EMBED: 'embed:application',\r\n NOTIFICATIONS: 'notifications:application',\r\n SEARCH: 'search:application',\r\n CONTENT_UPDATES: 'content:updates:application',\r\n USER_MANAGER: 'user:manager:application',\r\n UPLOAD: 'upload:application',\r\n CLASSROOMS: 'classrooms:application',\r\n SETTINGS: 'settings:application',\r\n WATCH_HISTORY: 'watch:history:application'\r\n};\r\n\r\nexport const ServiceChannels = {\r\n COMBINE_UPLOADS: 'combine:uploads:service'\r\n};","export const ViewModelKeys = {\r\n SEARCH_BAR_LOCATION: 'search:bar:location',\r\n WEB_PLAYER_DATA: 'web:player:data',\r\n BULK_TEACHER_UPLOAD: 'bulk:teacher:upload',\r\n BULK_STUDENT_UPLOAD: 'bulk:student:upload'\r\n};","import { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\n\r\nexport const DataChannels = {\r\n ...SharedDataChannels,\r\n SETTINGS: 'settings:data:service'\r\n};","import { SharedDataServices, SharedServices } from 'libs/shared/constants/SharedServices';\r\n\r\nexport const Services = {\r\n ...SharedServices,\r\n CombineUploads: 'combine:uploads:service'\r\n};\r\n\r\nexport const DataServices = {\r\n ...SharedDataServices,\r\n Settings: 'SettingsDataService',\r\n FlightUser: 'FlightUserDataService'\r\n};","import { SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\n\r\nconst ObjectWithStatements = {\r\n VIDEO: 'series,season,rating,producers,glance,distributors,resources,tags,productionCompanies,directors,links,thumbnail,interactives[thumbnail,owner[customers[organisation]]],clips[owner[customers[organisation]]]',\r\n PLAYLIST: 'cover,banner,owner,videos[thumbnail,count()]{orderby:orderindex,limit:1}'\r\n};\r\n\r\nconst CollectionWithStatements = {\r\n VIDEO_COLLECTION: `thumbnail,tags,rating,series,season`,\r\n PLAYLIST_COLLECTION: 'videos[thumbnail,count()]{orderby:orderindex,limit:1},thumbnail,cover,subjectpresentationaudiences'\r\n};\r\n\r\nexport const WithStatements = {\r\n ...ObjectWithStatements,\r\n ...CollectionWithStatements\r\n};\r\n\r\nexport const WithStatementHelper = {\r\n ClassificationWithFollowers(currentUserId: string): string {\r\n return `${SharedWithStatements.CLASSIFICATION},followers{id:${currentUserId}}`;\r\n }\r\n};","export enum LeftNavId {\r\n Discover = 'Discover',\r\n Playlists = 'Playlists',\r\n MyVideos = 'MyVideos',\r\n FavouritedVideos = 'FavouritedVideos',\r\n WatchHistory = 'WatchHistory',\r\n Classrooms = 'Classrooms',\r\n Classroom = 'Classroom',\r\n Settings = 'Settings'\r\n}","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst namespace = 'shared.notFoundError';\r\n\r\nexport class NotFoundError extends Core.SilentError {\r\n constructor() {\r\n super(LanguageService.getPhrase(namespace, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'NotFoundError';\r\n }\r\n\r\n public get heading(): string {\r\n return LanguageService.getPhrase(namespace, 'heading');\r\n }\r\n\r\n public get description(): string {\r\n return LanguageService.getPhrase(namespace, 'description');\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst namespace = 'shared.privateResourceError';\r\n\r\nexport class PrivateResourceError extends Core.SilentError {\r\n constructor() {\r\n super(LanguageService.getPhrase(namespace, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'PrivateResourceError';\r\n }\r\n\r\n public get heading(): string {\r\n return LanguageService.getPhrase(namespace, 'heading');\r\n }\r\n\r\n public get description(): string {\r\n return LanguageService.getPhrase(namespace, 'description');\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst namespace = 'shared.regionLockedResourceError';\r\n\r\nexport class RegionLockedResourceError extends Core.SilentError {\r\n constructor() {\r\n super(LanguageService.getPhrase(namespace, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'RegionLockedResourceError';\r\n }\r\n\r\n public get heading(): string {\r\n return LanguageService.getPhrase(namespace, 'heading');\r\n }\r\n\r\n public get description(): string {\r\n return LanguageService.getPhrase(namespace, 'description');\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst namespace = 'shared.unspecifiedError';\r\n\r\nexport class UnspecifiedError extends Core.SilentError {\r\n constructor() {\r\n super(LanguageService.getPhrase(namespace, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'UnspecifiedError';\r\n }\r\n\r\n public get heading(): string {\r\n return LanguageService.getPhrase(namespace, 'heading');\r\n }\r\n\r\n public get description(): string {\r\n return LanguageService.getPhrase(namespace, 'description');\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst namespace = 'shared.playlistNotFoundError';\r\n\r\nexport class PlaylistNotFoundError extends Core.SilentError {\r\n constructor() {\r\n super(LanguageService.getPhrase(namespace, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'PlaylistNotFoundError';\r\n }\r\n\r\n public get heading(): string {\r\n return LanguageService.getPhrase(namespace, 'heading');\r\n }\r\n\r\n public get description(): string {\r\n return LanguageService.getPhrase(namespace, 'description');\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst namespace = 'shared.playlistPrivateError';\r\n\r\nexport class PlaylistPrivateError extends Core.SilentError {\r\n constructor() {\r\n super(LanguageService.getPhrase(namespace, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'PlaylistPrivateError';\r\n }\r\n\r\n public get heading(): string {\r\n return LanguageService.getPhrase(namespace, 'heading');\r\n }\r\n\r\n public get description(): string {\r\n return LanguageService.getPhrase(namespace, 'description');\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst namespace = 'shared.videoNotFoundError';\r\n\r\nexport class VideoNotFoundError extends Core.SilentError {\r\n constructor() {\r\n super(LanguageService.getPhrase(namespace, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'VideoNotFoundError';\r\n }\r\n\r\n public get heading(): string {\r\n return LanguageService.getPhrase(namespace, 'heading');\r\n }\r\n\r\n public get description(): string {\r\n return LanguageService.getPhrase(namespace, 'description');\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst namespace = 'shared.videoPrivateError';\r\n\r\nexport class VideoPrivateError extends Core.SilentError {\r\n constructor() {\r\n super(LanguageService.getPhrase(namespace, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'VideoPrivateError';\r\n }\r\n\r\n public get heading(): string {\r\n return LanguageService.getPhrase(namespace, 'heading');\r\n }\r\n\r\n public get description(): string {\r\n return LanguageService.getPhrase(namespace, 'description');\r\n }\r\n}","import Cookies from 'js-cookie';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { BaseSettingsDataService } from 'libs/shared/interfaces';\r\nimport { SettingName } from 'libs/shared/enums/SettingName';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { DataServices } from 'shared/constants/Services';\r\nimport { FlightUserDataService } from 'shared/services/FlightUserDataService';\r\n\r\nconst RouteWhiteList = [\r\n { application: AppChannels.SUBJECT, action: Actions.Subjects.PREFERENCES },\r\n { application: AppChannels.DEFAULT, action: Actions.Default.SHARE },\r\n { application: AppChannels.DEFAULT, action: Actions.Default.NOT_FOUND }\r\n];\r\n\r\nfunction OnboardingFilter(appLink: Core.AppLink, next: Core.MiddlewareNext<Core.AppLink>): void {\r\n mustCompleteOnboarding(appLink, result => {\r\n if (result) {\r\n // Redirect the user to onboarding\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Subjects.PREFERENCES\r\n });\r\n\r\n Core.AppLinkUtility.routingEnded();\r\n return;\r\n }\r\n\r\n next(appLink);\r\n });\r\n}\r\n\r\nfunction mustCompleteOnboarding(appLink: Core.AppLink, callback: (result: boolean) => void): void {\r\n // Pass if the user is on a whitelisted page\r\n if (RouteWhiteList.find(route => route.application === appLink?.application && route.action === appLink?.action)) {\r\n callback(false);\r\n return;\r\n }\r\n\r\n const userDataService: FlightUserDataService = InstanceManager.getInstance(DataServices.FlightUser);\r\n const settingsDataService: BaseSettingsDataService = InstanceManager.getInstance(DataServices.Settings);\r\n\r\n userDataService.getCurrentUser(user => {\r\n InstanceManager.releaseInstance(DataServices.FlightUser);\r\n\r\n // Pass if the user is not an admin\r\n // TODO: Update to use new, granular roles once they have been created by the backend\r\n if (user.role !== 'Admin' && user.role !== 'SuperAdmin') {\r\n callback(false);\r\n return;\r\n }\r\n\r\n // Pass if the user has completed onboarding\r\n if (Cookies.get('_onboardingComplete') === user.id.toString()) {\r\n callback(false);\r\n return;\r\n }\r\n\r\n settingsDataService.getSetting(user.id, SettingName.HasCompletedOnboarding, setting => {\r\n InstanceManager.releaseInstance(DataServices.Settings);\r\n\r\n // Pass if onboarding has been completed\r\n if (setting.value) {\r\n Cookies.set('_onboardingComplete', user.id, { expires: 30 });\r\n\r\n callback(false);\r\n return;\r\n }\r\n\r\n callback(true);\r\n });\r\n }, () => {\r\n // Pass if the user is not authenticated\r\n InstanceManager.releaseInstance(DataServices.FlightUser);\r\n callback(false);\r\n });\r\n}\r\n\r\nexport { OnboardingFilter, mustCompleteOnboarding };","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { FlightUserDataService } from 'shared/services/FlightUserDataService';\r\nimport { DataServices } from 'shared/constants/Services';\r\nimport { NotFoundError } from 'shared/errors/general/not-found/LiteNotFoundError';\r\n\r\n// TODO: Whitelist whichever route holds email verification when we create it\r\nconst RouteWhitelist = [\r\n { application: AppChannels.DEFAULT, action: Actions.Default.NOT_FOUND },\r\n { application: AppChannels.DEFAULT, action: Actions.Default.ERROR },\r\n { application: AppChannels.DEFAULT, action: Actions.Default.DEV_ERROR },\r\n { application: AppChannels.DEFAULT, action: Actions.Default.DIALOG_ERROR }\r\n];\r\n\r\nexport function VerifiedEmailFilter(appLink: Core.AppLink, next: Core.MiddlewareNext<Core.AppLink>): void {\r\n if (RouteWhitelist.find(route => route.application === appLink.application && route.action === appLink.action)) {\r\n next(appLink);\r\n return;\r\n }\r\n\r\n const userDataService: FlightUserDataService = InstanceManager.getInstance(DataServices.FlightUser);\r\n\r\n userDataService.getCurrentUser(user => {\r\n InstanceManager.releaseInstance(DataServices.FlightUser);\r\n\r\n if (user.emailVerified) {\r\n next(appLink);\r\n return;\r\n }\r\n\r\n Core.AppLinkUtility.routingEnded();\r\n // TODO: Update this to redirect the user to the email verification page when we build it in settings\r\n Core.ErrorHelper.throw(new NotFoundError());\r\n }, () => {\r\n // This will run if the user is not authenticated. In which case, they can access the public version of the product\r\n InstanceManager.releaseInstance(DataServices.FlightUser);\r\n next(appLink);\r\n });\r\n}","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { Video, UpdateVideoRequest } from 'libs/shared/interfaces';\r\nimport { MasterType } from 'libs/shared/enums/MasterType';\r\nimport { WithStatements } from 'shared/constants/WithStatements';\r\n\r\nconst endpoints = {\r\n video: (id: string) => `/api/domain/v2/objects/${id}?query=${WithStatements.VIDEO}`,\r\n\r\n // workspace: () => `api/domain/v2/me/workspace?query=${WithStatements.WORKSPACE_VIDEOS}${addCursor(cursor)}`,\r\n workspace: (id: string, cursor: string) => {\r\n const query = `{orderbydesc:datecreated}${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`;\r\n return `api/domain/v2/objects/${id}/videos?query=${query}`;\r\n },\r\n\r\n getVideosById: (ids: string[], withAssocs?: boolean) => {\r\n const params = ids.map(i => `id=${i}`);\r\n\r\n if (withAssocs)\r\n params.push(`query=${WithStatements.VIDEO_COLLECTION}`);\r\n\r\n return `/api/domain/v2/objects?${params.join('&')}`;\r\n }\r\n};\r\n\r\nexport const VideoRequests = {\r\n video(id: string): Flight.Request {\r\n return {\r\n url: endpoints.video(id),\r\n key: `videos:${id}`\r\n };\r\n },\r\n\r\n workspace(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.workspace(id, cursor),\r\n key: `workspace:${id}:${cursor}`\r\n };\r\n },\r\n\r\n videos(ids: string[], success?: (videos: Video[]) => void): Flight.Request {\r\n return {\r\n url: endpoints.getVideosById(ids),\r\n key: `videos:by:id:${ids.join(',')}`,\r\n success\r\n };\r\n },\r\n\r\n hydratedVideos(\r\n ids: string[],\r\n success?: (videos: Video[]) => void,\r\n error?: (Xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: endpoints.getVideosById(ids, true),\r\n key: `hydrated:videos:by:id:${ids.join(',')}`,\r\n success\r\n };\r\n },\r\n\r\n updateVideo(id: string, data: UpdateVideoRequest, success?: () => void): Flight.Request {\r\n return {\r\n key: `update:video:${id}`,\r\n url: `/api/domain/v2/objects/${id}`,\r\n type: HttpVerbs.PUT,\r\n data,\r\n success\r\n };\r\n },\r\n\r\n /**\r\n * This is simply an example to show the prototype for useVideoMixin\r\n * eventually there will be endpoints in domain that let us fetch members\r\n * without fetching the objects properties, so we can fetch stuff like\r\n * hasInteractives and isFavourited as subsequent calls\r\n */\r\n videoRatings(ids: string[]): Flight.Request {\r\n const params = ids.map(i => `id=${i}`);\r\n\r\n if (!params.length)\r\n return;\r\n\r\n return {\r\n url: `/api/domain/v2/objects?query=rating&${params.join('&')}`,\r\n key: `video:ratings:by:id:${ids.join(',')}`\r\n };\r\n },\r\n\r\n getRestrictions(videoIds: string[]): Flight.Request {\r\n const sortedIds = videoIds.slice().sort();\r\n\r\n return {\r\n url: '/api/domain/v1/restrictedobjects'\r\n + `?objectTypeId=${MasterType.Video}${sortedIds.map(id => `&objectId=${id}`).join('')}`,\r\n key: `restrictions:${sortedIds.join(',')}`,\r\n normalizeOptions: {\r\n namespace: 'domain',\r\n idAttribute: 'objectId'\r\n }\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","import React from 'react';\r\n\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\r\nimport { Config, Video } from 'libs/shared/interfaces';\r\n\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\n\r\nexport interface PlayerPosition {\r\n top: number;\r\n left: number;\r\n width: number;\r\n}\r\n\r\nexport interface PlayerContext {\r\n webPlayerUrl: string;\r\n\r\n /**\r\n * Video that the player is currently plaing\r\n */\r\n video: Video;\r\n\r\n /**\r\n * Position of the video player when we're on a play page\r\n * no position means we're floating on the bottom right of the screen\r\n */\r\n viewportPosition: PlayerPosition;\r\n\r\n /**\r\n * Tells the floating player to not render when it has\r\n * as video but no position. This prevents\r\n * a bug where the floating player flashes briefly when the\r\n * PlayView has set a video but not yet set a position\r\n */\r\n isOnPlayPage: boolean;\r\n\r\n /**\r\n * Determines what time the video should start playing at\r\n */\r\n startTime: number;\r\n}\r\n\r\nexport function useInitPlayerContext(): void {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n\r\n const [ , setPlayerData ] = useViewModel<PlayerContext>(ViewModelKeys.WEB_PLAYER_DATA, {\r\n webPlayerUrl: config.data?.webPlayerUrl || '',\r\n video: null,\r\n viewportPosition: null,\r\n isOnPlayPage: false,\r\n startTime: 0\r\n });\r\n\r\n React.useEffect(() => {\r\n if (!config.data?.webPlayerUrl)\r\n return;\r\n\r\n setPlayerData('webPlayerUrl', config.data.webPlayerUrl);\r\n }, [config.data?.webPlayerUrl]);\r\n}","import React from 'react';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\n\r\nimport { DialogHelper, DialogButton } from 'shared/utils/DialogHelper';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('shared.hooks');\r\n\r\nexport interface NavLockOptions {\r\n id?: string;\r\n title?: string;\r\n text?: string;\r\n allowAppLinks?: boolean;\r\n onConfirmUnlock?: () => void;\r\n}\r\n\r\nexport const useNavLock = () => {\r\n const [ locks, setLocks ] = React.useState<NavLockOptions[]>([]);\r\n\r\n const shell = Radio.channel(CommonChannels.SHELL);\r\n\r\n React.useEffect(() => {\r\n if (locks.find(lockObj => !lockObj.allowAppLinks))\r\n shell.on(Core.EventNames.NAV_IS_LOCKED, onNavigate);\r\n\r\n if (locks.length)\r\n window.addEventListener('beforeunload', onBeforeUnload);\r\n\r\n return () => {\r\n shell.off(Core.EventNames.NAV_IS_LOCKED, onNavigate);\r\n window.removeEventListener('beforeunload', onBeforeUnload);\r\n };\r\n }, [locks]);\r\n\r\n // This hook is specific to setting up navlock listeners for our video upload backbone events.\r\n React.useEffect(() => {\r\n function setupVideoUploadNavLock(): void {\r\n lock({\r\n id: 'upload',\r\n title: getPhrase('uploadLockTitle'),\r\n text: getPhrase('uploadLockBody'),\r\n allowAppLinks: true\r\n });\r\n }\r\n\r\n const uploadChannel = Radio.channel(SharedServiceChannels.VIDEO_UPLOAD);\r\n uploadChannel.on(UploadEventNames.FILES_ADDED, setupVideoUploadNavLock);\r\n uploadChannel.on(UploadEventNames.UNLOCK_NAV, unlock);\r\n\r\n return () => {\r\n uploadChannel.off(UploadEventNames.FILES_ADDED, setupVideoUploadNavLock);\r\n uploadChannel.off(UploadEventNames.UNLOCK_NAV, unlock);\r\n };\r\n }, []);\r\n\r\n function lock(lockOptions: NavLockOptions = {}): void {\r\n if (locks.find(lockObj => lockObj.id === lockOptions.id))\r\n return;\r\n\r\n if (!lockOptions.allowAppLinks)\r\n shell.trigger(Core.EventNames.LOCK_NAV);\r\n\r\n setLocks([ ...locks, lockOptions ]);\r\n }\r\n\r\n function unlock(id: string): void {\r\n const newLocks = locks.filter(lockObj => lockObj.id !== id);\r\n\r\n if (newLocks.length === 0 || !newLocks.find(lockObj => !lockObj.allowAppLinks))\r\n shell.trigger(Core.EventNames.UNLOCK_NAV);\r\n\r\n setLocks(newLocks);\r\n }\r\n\r\n function onNavigate(appLink: Core.AppLink): void {\r\n if (!locks.length)\r\n return;\r\n\r\n const lockOptions = locks.find(lockObj => !lockObj.allowAppLinks);\r\n\r\n const buttons: DialogButton[] = [\r\n {\r\n buttonText: getPhrase('cancel'),\r\n className: 'btn btn-secondary'\r\n },\r\n {\r\n buttonText: getPhrase('discard'),\r\n className: 'btn btn-danger',\r\n onClick: lockOptions.onConfirmUnlock ? lockOptions.onConfirmUnlock : () => {},\r\n success: true\r\n }\r\n ];\r\n\r\n DialogHelper.render(<p>{lockOptions.text}</p>, {\r\n title: lockOptions.title,\r\n buttons,\r\n success: () => onClickDiscard(appLink)\r\n });\r\n }\r\n\r\n function onBeforeUnload(e: any): any {\r\n let lockOptions = locks.find(lockObj => lockObj.allowAppLinks);\r\n if (!lockOptions)\r\n lockOptions = ArrayHelper.first(locks);\r\n\r\n e.returnValue = lockOptions.text;\r\n return lockOptions.text;\r\n }\r\n\r\n function onClickDiscard(appLink: Core.AppLink): void {\r\n shell.trigger(Core.EventNames.NAV_UNLOCKED_BY_USER);\r\n\r\n locks.forEach(lockObj => {\r\n if (lockObj.allowAppLinks)\r\n return;\r\n\r\n unlock(lockObj.id);\r\n });\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n }\r\n\r\n return { lock, unlock };\r\n};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\nimport { PageTitleContextProvider } from 'libs/common/react/context/PageTitleContext';\r\n\r\nexport interface EmbedLayoutComponentProps {\r\n store: Store;\r\n contentChild?: React.ReactNode;\r\n}\r\n\r\nfunction EmbedLayoutComponent(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { contentChild } = props;\r\n\r\n return (\r\n <>\r\n {contentChild}\r\n </>\r\n );\r\n}\r\n\r\nfunction WrapLayoutWithProviders(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { store } = props;\r\n\r\n return (\r\n <Provider store={store}>\r\n <PageTitleContextProvider defaultTitle=''>\r\n <EmbedLayoutComponent {...props} />\r\n </PageTitleContextProvider>\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as EmbedLayoutComponent };","import * as React from 'react';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactLayoutView } from 'libs/common/react/core/ReactLayoutView';\r\n\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\n\r\nimport { EmbedLayoutComponent, EmbedLayoutComponentProps } from './EmbedLayoutComponent';\r\nimport EmbedLayoutTemplate from './EmbedLayout.hbs';\r\n\r\n\r\nexport class EmbedLayoutView extends ReactLayoutView {\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'EmbedLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return EmbedLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(): string {\r\n return Layouts.EMBED_LAYOUT;\r\n }\r\n\r\n public regions(): HashObject {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): EmbedLayoutComponentProps {\r\n return {\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <EmbedLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region position-relative\\\"></div>\\r\\n<div id=\\\"dialog-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\nimport { useDropzone } from 'react-dropzone';\r\n\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { InteractionType, EntityType, WorkflowPhase, UserAction, LocationContext } from 'libs/analytics/interfaces';\r\n\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\nimport { BaseVideoUploadService } from 'libs/shared/apps/upload/services/UploadService';\r\n\r\nimport { HeaderView } from 'shared/views/header/HeaderView';\r\nimport { LeftNavView, LeftNavState } from 'shared/views/left-nav/LeftNavView';\r\nimport { FloatingPlayer } from 'shared/components/floating-player/FloatingPlayer';\r\nimport { Services } from 'shared/constants/Services';\r\nimport { useNavLock } from 'shared/hooks/useNavLock';\r\nimport { PlayerContext } from 'shared/hooks/useInitPlayerContext';\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\n\r\nimport { DragMask } from './drag-mask/DragMask';\r\n\r\nimport styles from './teacher-layout.scss';\r\nimport { PageTitleContextProvider } from 'libs/common/react/context/PageTitleContext';\r\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\r\n\r\ninterface DerivedNavState {\r\n state: LeftNavState;\r\n showMask: boolean;\r\n contentClass: string;\r\n}\r\n\r\nfunction getDerivedNavState(\r\n collapse: boolean, isMobile: boolean, isIPad: boolean, showNav: boolean\r\n): DerivedNavState {\r\n if (!showNav) {\r\n return {\r\n state: LeftNavState.Hidden,\r\n showMask: false,\r\n contentClass: styles.hiddenNavContent\r\n };\r\n }\r\n\r\n if (isMobile) {\r\n return {\r\n state: collapse ? LeftNavState.Hidden : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.hiddenNavContent\r\n };\r\n }\r\n\r\n if (isIPad) {\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.collapsedNavContent\r\n };\r\n }\r\n\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: false,\r\n contentClass: collapse ? styles.collapsedNavContent : styles.openNavContent\r\n };\r\n}\r\n\r\nexport interface TeacherLayoutComponentProps {\r\n showNav: boolean;\r\n\r\n contentChild?: React.ReactNode;\r\n popupChild?: React.ReactNode;\r\n alertChild?: React.ReactNode;\r\n\r\n store: Store;\r\n activeAppLink: Core.AppLink;\r\n appLinkIsRoute: boolean;\r\n}\r\n\r\nconst TeacherLayoutComponent = (props: TeacherLayoutComponentProps): React.ReactElement => {\r\n const { showNav, contentChild, popupChild, alertChild, activeAppLink, appLinkIsRoute } = props;\r\n\r\n const [ collapse, setCollapse ] = React.useState(false);\r\n\r\n // This is executed at the beginning to set up the backbone radio event listeners\r\n useNavLock();\r\n\r\n const mediaQuery = useGetMediaQueryString();\r\n\r\n const isMobile = mediaQuery === MediaQueryStrings.XS;\r\n const isIPad = mediaQuery === MediaQueryStrings.SM;\r\n const isLargeDesktop = mediaQuery === MediaQueryStrings.XXL;\r\n\r\n const containerFluid = !isLargeDesktop && mediaQuery !== MediaQueryStrings.XL;\r\n\r\n const [playerData] = useViewModel<PlayerContext>(ViewModelKeys.WEB_PLAYER_DATA);\r\n\r\n const toggleLeftNav = () => {\r\n setCollapse(!collapse);\r\n };\r\n\r\n React.useEffect(() => {\r\n setCollapse(!isLargeDesktop);\r\n }, [isLargeDesktop]);\r\n\r\n const navState = getDerivedNavState(collapse, isMobile, isIPad, showNav);\r\n\r\n const videoUploadService = useService<BaseVideoUploadService>(Services.VideoUpload);\r\n const onDrop = React.useCallback((acceptedFiles: File[]) => {\r\n videoUploadService.addFiles(acceptedFiles, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Upload,\r\n workflowPhase: WorkflowPhase.Start,\r\n descriptor: AnalyticsHelper.mapInteractionType(InteractionType.DragDrop),\r\n location: LocationContext.VideoUpload\r\n });\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n noClick: true,\r\n noKeyboard: true\r\n });\r\n\r\n // Right align content in the alert-player container.\r\n let alertPlayerContainerClassName = 'd-flex flex-column align-items-end';\r\n let alertContainerClassName = '';\r\n\r\n /**\r\n * If playerViewportPosition is truthy, the player isn't floating,\r\n * so we only apply the fixed position styling to the alert container.\r\n * \r\n * Else if playerViewportPosition is falsy, we fix the entire\r\n * alert-player container.\r\n */\r\n if (playerData?.viewportPosition)\r\n alertContainerClassName = styles.fixedBottomRightContainer;\r\n else\r\n alertPlayerContainerClassName += ` ${styles.fixedBottomRightContainer}`;\r\n\r\n return (\r\n <div {...getRootProps()}>\r\n <HeaderView toggleLeftNav={toggleLeftNav} showNav={showNav} />\r\n {showNav && (\r\n <LeftNavView\r\n navState={navState.state}\r\n activeAppLink={activeAppLink}\r\n appLinkIsRoute={appLinkIsRoute}\r\n />\r\n )}\r\n <div className={`${styles.content} ${navState.contentClass}`}>\r\n <div className={`${containerFluid ? 'container-fluid' : 'container'}`}>\r\n {contentChild}\r\n </div>\r\n </div>\r\n {popupChild}\r\n {navState.showMask && <div className={`modal-backdrop show ${styles.mask}`}></div>}\r\n <div className={alertPlayerContainerClassName}>\r\n {!!alertChild && <div className={alertContainerClassName}>{alertChild}</div>}\r\n <FloatingPlayer />\r\n </div>\r\n {isDragActive && <DragMask />}\r\n <input {...getInputProps()} />\r\n </div>\r\n );\r\n};\r\n\r\nfunction WrapLayoutWithProviders(props: TeacherLayoutComponentProps): React.ReactElement {\r\n return (\r\n <Provider store={props.store}>\r\n <PageTitleContextProvider defaultTitle=''>\r\n <TeacherLayoutComponent {...props} />\r\n </PageTitleContextProvider>\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as TeacherLayoutComponent };","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from 'libs/common/react/core/ReactLayoutView';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\n\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\n\r\nimport { TeacherLayoutComponent, TeacherLayoutComponentProps } from './TeacherLayoutComponent';\r\nimport TeacherLayoutTemplate from './TeacherLayout.hbs';\r\n\r\nexport interface TeacherLayoutViewOptions extends ReactLayoutViewOptions {\r\n showNav: boolean;\r\n}\r\n\r\nexport class TeacherLayoutView extends ReactLayoutView {\r\n protected options: TeacherLayoutViewOptions;\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n // These fields are used to determine which left nav item to highlight\r\n private activeAppLink: Core.AppLink;\r\n private appLinkIsRoute: boolean;\r\n\r\n constructor(options?: TeacherLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.activeAppLink = ContextService.getCurrentContext()?.appLink;\r\n this.appLinkIsRoute = true;\r\n\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.onRouteChange);\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'TeacherLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return TeacherLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(options: TeacherLayoutViewOptions): string {\r\n return `${Layouts.TEACHER_LAYOUT}:${options.showNav}`;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): TeacherLayoutComponentProps {\r\n return {\r\n showNav: this.options.showNav,\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n popupChild: this.childComponents[LayoutRegions.POPUP],\r\n alertChild: this.childComponents[LayoutRegions.ALERT],\r\n store: this.options.store,\r\n activeAppLink: this.activeAppLink,\r\n appLinkIsRoute: this.appLinkIsRoute\r\n };\r\n }\r\n\r\n private onRouteChange(activeAppLink: Core.AppLink, options: Core.ExecuteRouteOptions): void {\r\n this.activeAppLink = activeAppLink;\r\n this.appLinkIsRoute = options.isAppRoute;\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <TeacherLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nimport styles from './drag-mask.scss';\r\n\r\nexport function DragMask(): React.ReactElement {\r\n return (\r\n <>\r\n <div className={styles.dropMask}></div>\r\n <div className={styles.dropContent}>\r\n <div className={styles.border}>\r\n <h1><Text namespace={'shared.dragMask'} phrase={'message'} /></h1>\r\n </div>\r\n </div>\r\n <div className={styles.dropArea}></div>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropMask\":\"cv--dropMask--3bFev\",\"dropContent\":\"cv--dropContent--2_7SU\",\"dropArea\":\"cv--dropArea--3oOzB\",\"border\":\"cv--border--1IoKS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--1SX2l\",\"collapsedNavContent\":\"cv--collapsedNavContent--3LJFz\",\"openNavContent\":\"cv--openNavContent--34Pt4\",\"hiddenNavContent\":\"cv--hiddenNavContent--1gZ0J\",\"mask\":\"cv--mask--mE2Dq\",\"fixedBottomRightContainer\":\"cv--fixedBottomRightContainer--Sgmex\"};","import { Store } from 'redux';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseLibraryDataService, Folder, LibraryAPIResponse } from 'libs/shared/interfaces';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\n\r\nconst requests = {\r\n getLibraries: (success?: (data: LibraryAPIResponse[]) => void): Flight.Request => {\r\n return {\r\n url: '/api/domain/v2/me/libraries?type=customlibrary&type=unpublishedcustomlibrary',\r\n key: 'libraries',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getFolder: (id: string, success?: (data: Core.Model) => void): Flight.Request => {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.FOLDER}`,\r\n key: `folder:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightLibraryDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightLibraryDataService implements BaseLibraryDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightLibraryDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Library;\r\n }\r\n\r\n public get channelName(): string {\r\n return 'library:data:service';\r\n }\r\n\r\n public getLibraries(callback?: (data: Core.Collection) => void): Core.Collection {\r\n const request = requests.getLibraries((libraries: LibraryAPIResponse[]) => {\r\n Radio.channel(this.channelName).trigger('libraries:sync', libraries);\r\n\r\n callback && callback(new Core.Collection(libraries));\r\n });\r\n\r\n const flightResponse = Flight.getResponse<LibraryAPIResponse[]>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Collection(flightResponse.data.map(res => res.data));\r\n }\r\n\r\n public getFolder(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getFolder(id, (folder: Folder) => callback && callback(new Core.Model(folder)));\r\n const flightResponse = Flight.getResponse<Folder>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Store } from 'redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseSeriesDataService, Series } from 'libs/shared/interfaces';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\n\r\nconst requests = {\r\n getOne(id: string, success?: (data: Series) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.SERIES}`,\r\n key: `series:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightSeriesDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightSeriesDataService implements BaseSeriesDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightSeriesDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Series;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.SERIES;\r\n }\r\n\r\n public getSeries(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getOne(id, (series: Series) => callback && callback(new Core.Model(series)));\r\n const flightResponse = Flight.getResponse<Series>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Store } from 'redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { CurrentUser, BaseUserDataService } from 'libs/shared/interfaces';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { DataServices } from 'shared/constants/Services';\r\n\r\ninterface FlightUserDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightUserDataService implements BaseUserDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightUserDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.FlightUser;\r\n }\r\n\r\n public getCurrentUser(success?: (user: CurrentUser) => void, error?: () => void): void {\r\n Flight.dataServiceFetch(this.store.dispatch, this.store.getState(), UserRequests.currentUser(success, error));\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { BaseVideoDataService, Video } from 'libs/shared/interfaces';\r\nimport { Store } from 'redux';\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\nimport { DataServices } from 'shared/constants/Services';\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightVideoDataService implements BaseVideoDataService<Core.Collection> {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.Video;\r\n }\r\n\r\n public clearVideoCache(): void {\r\n this.store.dispatch<Flight.InvalidateAction>({\r\n type: Flight.Actions.INVALIDATE,\r\n keys: ['video'],\r\n request: null\r\n });\r\n }\r\n public getVideos(\r\n ids: string[],\r\n callback?: (videos: Core.Collection<Core.Model>) => void\r\n ): Core.Collection {\r\n const wrappedCallback = (videos: Video[]) => {\r\n if (!FunctionHelper.isFunction(callback))\r\n return;\r\n\r\n callback(new Core.Collection(videos));\r\n };\r\n const request = VideoRequests.videos(ids, wrappedCallback);\r\n const response = Flight.getResponse<Video[]>(this.store.getState(), request.key);\r\n\r\n if (response.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n else\r\n wrappedCallback(response.data);\r\n return new Core.Collection(response.data);\r\n }\r\n}","import { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\r\nimport { SettingName } from 'libs/shared/enums/SettingName';\r\nimport { BaseSettingsDataService, EntitySetting } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices } from 'shared/constants/Services';\r\nimport { DataChannels } from 'shared/constants/RadioChannels';\r\n\r\nconst endpoints = {\r\n getSettings: (entityId: string, kind?: SettingKind) => {\r\n let endpoint = `/api/domain/v3/settings/${entityId}`;\r\n\r\n if (SettingKind[kind])\r\n endpoint += `?kind=${kind}`;\r\n\r\n return endpoint;\r\n },\r\n\r\n updateSetting: (entityId: string) => `/api/domain/v3/settings/${entityId}`\r\n};\r\n\r\nexport class SettingsDataService extends BaseDataService implements BaseSettingsDataService {\r\n public get name(): string {\r\n return DataServices.Settings;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.SETTINGS;\r\n }\r\n\r\n public getSetting(\r\n entityId: string,\r\n name: SettingName,\r\n callback?: (data: EntitySetting) => void\r\n ): EntitySetting {\r\n const actualCallback = FunctionHelper.isFunction(callback) ? (data: EntitySetting[]) => {\r\n const setting = data.find(s => s.name === name);\r\n\r\n if (FunctionHelper.isFunction(callback))\r\n callback(setting);\r\n } : null;\r\n\r\n const settings = this.getSettings(entityId, null, actualCallback);\r\n\r\n return settings ? settings.find(s => s.name === name) : null;\r\n }\r\n\r\n public getSettings(\r\n entityId: string,\r\n kind?: SettingKind,\r\n callback?: (data: EntitySetting[]) => void): EntitySetting[] {\r\n return this.get<EntitySetting[]>({\r\n callback,\r\n resource: endpoints.getSettings(entityId, kind),\r\n eventPrefix: 'settings'\r\n });\r\n }\r\n}","import React from 'react';\r\nimport { render, unmountComponentAtNode } from 'react-dom';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { PopupButton, PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nconst namespace = 'shared.utils';\r\n\r\nexport interface DialogButton extends Omit<PopupButton, 'onClick'> {\r\n onClick?: () => void;\r\n success?: boolean;\r\n}\r\n\r\nfunction getDefaultButtons(): DialogButton[] {\r\n return [ DialogHelper.getConfirmDefault(), DialogHelper.getCancelDefault() ];\r\n}\r\n\r\ninterface DialogOptions {\r\n title: string;\r\n buttons?: DialogButton[];\r\n success?: () => void;\r\n cancel?: () => void;\r\n}\r\n\r\nexport const DialogHelper = {\r\n render: (children: React.SFCElement<any> | React.SFCElement<any>[], options: DialogOptions) => {\r\n const dialogRegion = document.getElementById('dialog-region');\r\n\r\n function onConfirm(): void {\r\n FunctionHelper.isFunction(options.success) && options.success();\r\n unmountComponentAtNode(dialogRegion);\r\n }\r\n\r\n function onCancel(): void {\r\n FunctionHelper.isFunction(options.cancel) && options.cancel();\r\n unmountComponentAtNode(dialogRegion);\r\n }\r\n\r\n const buttons = options.buttons || getDefaultButtons();\r\n\r\n const popupButtons: PopupButton[] = buttons.map(button => {\r\n const isSuccessButton = button.success;\r\n\r\n function onClick(): void {\r\n if (isSuccessButton)\r\n onConfirm();\r\n\r\n onCancel();\r\n FunctionHelper.isFunction(button.onClick) && button.onClick();\r\n }\r\n\r\n delete button.success;\r\n\r\n return {\r\n ...button,\r\n onClick\r\n };\r\n });\r\n\r\n render((\r\n <Popup title={options.title} closePopup={onCancel}>\r\n {children}\r\n <PopupButtons buttons={popupButtons} />\r\n </Popup>\r\n ), dialogRegion);\r\n },\r\n\r\n getCancelDefault(): DialogButton {\r\n return {\r\n variant: 'light',\r\n buttonText: LanguageService.getPhrase(namespace, 'cancel')\r\n };\r\n },\r\n\r\n getConfirmDefault(): DialogButton {\r\n return {\r\n variant: 'dark',\r\n success: true,\r\n buttonText: LanguageService.getPhrase(namespace, 'confirm')\r\n };\r\n }\r\n};","import { Core } from 'libs/common/core';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nexport const LeftNavHelper = {\r\n getDiscoverAppLinks(): Core.AppLink[] {\r\n const application = AppChannels.DASHBOARD;\r\n\r\n return Object.keys(Actions.Dashboard).map((action: keyof typeof Actions.Dashboard) => ({\r\n application,\r\n action: Actions.Dashboard[action]\r\n }));\r\n },\r\n\r\n getPlaylistAppLinks(): Core.AppLink[] {\r\n const application = AppChannels.PLAYLISTS;\r\n\r\n return Object.keys(Actions.Playlists).map((action: keyof typeof Actions.Playlists) => ({\r\n application,\r\n action: Actions.Playlists[action]\r\n }));\r\n },\r\n\r\n getMyVideosAppLinks(): Core.AppLink[] {\r\n const uploadApp = AppChannels.UPLOAD;\r\n const appLinks = Object.keys(Actions.Upload).map((action: keyof typeof Actions.Upload) => ({\r\n application: uploadApp,\r\n action: Actions.Upload[action]\r\n }));\r\n\r\n appLinks.push({ application: AppChannels.DEFAULT, action: Actions.Default.MY_VIDEOS });\r\n\r\n return appLinks;\r\n },\r\n\r\n getFavouritedVideosAppLinks(): Core.AppLink[] {\r\n return [{ application: AppChannels.DEFAULT, action: Actions.Default.FAVOURITE_VIDEOS }];\r\n },\r\n\r\n getWatchHistoryAppLinks(): Core.AppLink[] {\r\n const application = AppChannels.WATCH_HISTORY;\r\n\r\n return Object.keys(Actions.WatchHistory).map((action: keyof typeof Actions.WatchHistory) => ({\r\n application,\r\n action: Actions.WatchHistory[action]\r\n }));\r\n },\r\n\r\n getClassroomsAppLinks(): Core.AppLink[] {\r\n return [{\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.HOME\r\n }];\r\n },\r\n\r\n getClassroomAppLinks(): Core.AppLink[] {\r\n const application = AppChannels.CLASSROOMS;\r\n\r\n return Object.keys(Actions.Classrooms)\r\n .filter(a => a !== Actions.Classrooms.HOME)\r\n .map((action: keyof typeof Actions.Classrooms) => ({\r\n application,\r\n action: Actions.Classrooms[action]\r\n }));\r\n },\r\n\r\n getSettingsAppLinks(): Core.AppLink[] {\r\n const settingsApp = Object.keys(Actions.Settings).map((action: keyof typeof Actions.Search) => ({\r\n application: AppChannels.SETTINGS,\r\n action: Actions.Settings[action]\r\n }));\r\n\r\n return [\r\n ...settingsApp,\r\n {\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Subjects.PREFERENCES\r\n }\r\n ];\r\n }\r\n};","import * as React from 'react';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\n\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { NotificationHeaderView } from 'libs/shared/apps/notifications/views/header/NotificationHeaderView';\r\nimport { SearchBarView } from 'libs/shared/apps/search/views/search-bar/SearchBarView';\r\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\r\nimport { Config, CurrentUser, Presentation } from 'libs/shared/interfaces';\r\nimport { Query } from 'libs/shared/apps/search/models/Query';\r\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\r\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\r\n\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\nimport { UserOptions } from 'shared/components/user-options/UserOptions';\r\nimport { UploadFileSelect } from 'apps/upload/components/upload-file-select/UploadFileSelect';\r\n\r\nimport styles from './header.scss';\r\n\r\ninterface HeaderViewProps {\r\n toggleLeftNav: () => void;\r\n showNav: boolean;\r\n}\r\n\r\nexport function HeaderView(props: HeaderViewProps): React.ReactElement {\r\n const userRequest = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser(), { optimize: true });\r\n const user = userRequest.data;\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config, { optimize: true });\r\n const presentation = Flight.useBasicFetch<Presentation>(ClassificationRequests.presentation());\r\n\r\n let [showSearch] = useViewModel<boolean>(ViewModelKeys.SEARCH_BAR_LOCATION, true);\r\n\r\n if (!props.showNav)\r\n showSearch = false;\r\n\r\n return (\r\n <nav className={`navbar navbar-expanded sticky-top ${styles.nav}`}>\r\n\r\n <div className='justify-content-start'>\r\n {props.showNav &&\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Handle}\r\n className={`${styles.hamburger} ml-2 mr-3`}\r\n onClick={props.toggleLeftNav}\r\n />\r\n }\r\n\r\n {props.showNav\r\n ? (\r\n <a className={`navbar-brand text-hide align-top ${styles.logoContainer} d-inline-block'`} href='/'>\r\n <ClickViewLogo />\r\n </a>\r\n ) : (\r\n <span className={`navbar-brand text-hide align-top ${styles.logoContainer} d-inline-block'`}>\r\n <ClickViewLogo />\r\n </span>\r\n )\r\n }\r\n </div>\r\n\r\n {showSearch &&\r\n <div className='justify-content-center'>\r\n <BackboneViewWrapper\r\n className={`container ${styles.searchBarNavContainer}`}\r\n view={SearchBarView}\r\n options={{\r\n model: ViewModelService.get<Query>('search', { ctor: Query }),\r\n disableMask: true,\r\n presentationId: presentation.data?.id\r\n }}\r\n />\r\n </div>\r\n }\r\n\r\n <div className={`d-flex align-items-center justify-content-end pr-1 ${styles.actionButtons}`}>\r\n {(props.showNav && user) && (\r\n <>\r\n <UploadFileSelect hideButtonText={showSearch}/>\r\n <BackboneViewWrapper view={NotificationHeaderView} className='ml-2 pl-2' />\r\n </>\r\n )}\r\n\r\n {!!config.data &&\r\n <UserOptions\r\n user={user}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n supportSiteUrl={config.data.supportSiteUrl}\r\n onlyShowSignOut={!props.showNav}\r\n />\r\n }\r\n </div>\r\n </nav>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav\":\"cv--nav--3RLQ9\",\"logoContainer\":\"cv--logoContainer--UIlc9\",\"searchBar\":\"cv--searchBar--2E7RQ\",\"actionButtons\":\"cv--actionButtons--2HygL\",\"hamburger\":\"cv--hamburger--2BRko\",\"searchBarNavContainer\":\"cv--searchBarNavContainer--2bUnK\"};","import React from 'react';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { LeftNavId } from 'shared/enums/LeftNavId';\r\n\r\nimport { LeftNavItem } from './LeftNavItem';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\nconst namespace = 'shared.leftNav';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\n// AppLinks used for each left nav item\r\nconst itemAppLinks: {[key: string]: Core.AppLink} = {\r\n [LeftNavId.Discover]: { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\r\n [LeftNavId.Playlists]: { application: AppChannels.PLAYLISTS, action: Actions.Playlists.HOME },\r\n [LeftNavId.MyVideos]: { application: AppChannels.DEFAULT, action: Actions.Default.MY_VIDEOS },\r\n [LeftNavId.FavouritedVideos]: { application: AppChannels.DEFAULT, action: Actions.Default.FAVOURITE_VIDEOS },\r\n [LeftNavId.WatchHistory]: { application: AppChannels.WATCH_HISTORY, action: Actions.WatchHistory.HOME }\r\n};\r\n\r\ninterface CollapsedLeftNavViewProps {\r\n activeItem: LeftNavId;\r\n}\r\n\r\nexport function CollapsedLeftNavView({ activeItem }: CollapsedLeftNavViewProps): JSX.Element {\r\n return (\r\n <nav className={`${styles.leftNav} ${styles.leftNavCollapsed} pt-3`}>\r\n <Scrollbars height='100%'>\r\n <LeftNavItem\r\n key={LeftNavId.Discover}\r\n name={getPhrase('discover')}\r\n appLink={itemAppLinks[LeftNavId.Discover]}\r\n className={styles.discover}\r\n svgName={cvSvgLibrary.Compass}\r\n active={activeItem === LeftNavId.Discover}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n key={LeftNavId.Playlists}\r\n name={getPhrase('playlists')}\r\n appLink={itemAppLinks[LeftNavId.Playlists]}\r\n className={styles.playlists}\r\n svgName={cvSvgLibrary.Playlist}\r\n active={activeItem === LeftNavId.Playlists}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n key={LeftNavId.MyVideos}\r\n name={getPhrase('myVideos')}\r\n appLink={itemAppLinks[LeftNavId.MyVideos]}\r\n className={styles.myVideos}\r\n svgName={cvSvgLibrary.Video}\r\n active={activeItem === LeftNavId.MyVideos}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n key={LeftNavId.FavouritedVideos}\r\n name={getPhrase('favouritedVideos')}\r\n appLink={itemAppLinks[LeftNavId.FavouritedVideos]}\r\n className={styles.favouritedVideos}\r\n svgName={activeItem === LeftNavId.FavouritedVideos\r\n ? cvSvgLibrary.Heart\r\n : cvSvgLibrary.HeartOutline\r\n }\r\n active={activeItem === LeftNavId.FavouritedVideos}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n key={LeftNavId.WatchHistory}\r\n name={getPhrase('watchHistory')}\r\n appLink={itemAppLinks[LeftNavId.WatchHistory]}\r\n className={styles.watchHistory}\r\n svgName={cvSvgLibrary.History}\r\n active={activeItem === LeftNavId.WatchHistory}\r\n collapsed\r\n />\r\n </Scrollbars>\r\n </nav>\r\n );\r\n}","import React from 'react';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Core } from 'libs/common/core';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { LeftNavId } from 'shared/enums/LeftNavId';\r\n\r\nimport { LeftNavItem } from './LeftNavItem';\r\nimport { PartialLeftNavItem } from './partial-loading/PartialLeftNavItem';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\nconst namespace = 'shared.leftNav';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nfunction ClassroomSvg(): JSX.Element {\r\n return (\r\n <svg viewBox='0 0 24 24'>\r\n <g fill='none' fillRule='evenodd'>\r\n <g transform='translate(0.000000, 2.000000)'>\r\n <text id='ABC' fontFamily='Rubik-Black, Rubik Black' fontSize='6.6' fontWeight='700' fill='#ffffff'>\r\n <tspan x='4.5' y='10.8'>ABC</tspan>\r\n </text>\r\n <rect id='Rectangle' stroke='#ffffff' strokeWidth='1.2' x='3' y='1.8' width='18' height='13.2' rx='1.2'></rect>\r\n <line x1='0.6' y1='15' x2='23.4' y2='15' id='Line-2' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round'></line>\r\n <circle id='Oval' stroke='#ffffff' strokeWidth='1.2' fill='#000000' cx='12' cy='1.2' r='1'></circle>\r\n <line x1='11.4' y1='15' x2='7.8' y2='18.6' id='Line-3' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round'></line>\r\n <line x1='16.2' y1='15' x2='12.6' y2='18.6' id='Line-3' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round' transform='translate(14.400000, 16.800000) scale(-1, 1) translate(-14.400000, -16.800000) '></line>\r\n </g>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\nconst appLinks: {[key: string]: Core.AppLink} = {\r\n [LeftNavId.Discover]: { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\r\n [LeftNavId.Playlists]: { application: AppChannels.PLAYLISTS, action: Actions.Playlists.HOME },\r\n [LeftNavId.MyVideos]: { application: AppChannels.DEFAULT, action: Actions.Default.MY_VIDEOS },\r\n [LeftNavId.FavouritedVideos]: { application: AppChannels.DEFAULT, action: Actions.Default.FAVOURITE_VIDEOS },\r\n [LeftNavId.Classrooms]: { application: AppChannels.CLASSROOMS, action: Actions.Classrooms.HOME },\r\n [LeftNavId.Classroom]: { application: AppChannels.CLASSROOMS, action: Actions.Classrooms.CLASSROOM },\r\n [LeftNavId.WatchHistory]: { application: AppChannels.WATCH_HISTORY, action: Actions.WatchHistory.HOME },\r\n [LeftNavId.Settings]: { application: AppChannels.SETTINGS, action: Actions.Settings.HOME }\r\n};\r\n\r\ninterface ExpandedLeftNavViewProps {\r\n activeItem: LeftNavId;\r\n\r\n /**\r\n * This is for things like classroom items, where it's a list of dynamic items. We need to do this\r\n * to be able to tell exactly which item is active.\r\n */\r\n dynamicActiveId?: string;\r\n}\r\n\r\nexport function ExpandedLeftNavView({ activeItem, dynamicActiveId }: ExpandedLeftNavViewProps): JSX.Element {\r\n const starredClassrooms = Flight.useBasicFetch<MockClassroom[]>(ClassroomRequests.getStarredClassrooms());\r\n\r\n return (\r\n <nav className={`${styles.leftNav} ${styles.leftNavExpanded} pt-3`}>\r\n <Scrollbars height='100%'>\r\n <LeftNavItem\r\n key={LeftNavId.Discover}\r\n name={getPhrase('discover')}\r\n appLink={appLinks[LeftNavId.Discover]}\r\n className={styles.discover}\r\n svgName={cvSvgLibrary.Compass}\r\n active={activeItem === LeftNavId.Discover}\r\n />\r\n <LeftNavItem\r\n key={LeftNavId.Playlists}\r\n name={getPhrase('playlists')}\r\n appLink={appLinks[LeftNavId.Playlists]}\r\n className={styles.playlists}\r\n svgName={cvSvgLibrary.Playlist}\r\n active={activeItem === LeftNavId.Playlists}\r\n />\r\n <LeftNavItem\r\n key={LeftNavId.MyVideos}\r\n name={getPhrase('myVideos')}\r\n appLink={appLinks[LeftNavId.MyVideos]}\r\n className={styles.myVideos}\r\n svgName={cvSvgLibrary.Video}\r\n active={activeItem === LeftNavId.MyVideos}\r\n />\r\n <LeftNavItem\r\n key={LeftNavId.FavouritedVideos}\r\n name={getPhrase('favouritedVideos')}\r\n appLink={appLinks[LeftNavId.FavouritedVideos]}\r\n className={styles.favouritedVideos}\r\n svgName={cvSvgLibrary.Heart}\r\n active={activeItem === LeftNavId.FavouritedVideos}\r\n />\r\n\r\n <hr />\r\n\r\n <LeftNavItem\r\n key={LeftNavId.Classrooms}\r\n name={getPhrase('classrooms')}\r\n appLink={appLinks[LeftNavId.Classrooms]}\r\n className={styles.classrooms}\r\n icon={ClassroomSvg}\r\n active={activeItem === LeftNavId.Classrooms}\r\n />\r\n {starredClassrooms.data\r\n ? starredClassrooms.data.map(classroom => (\r\n <LeftNavItem\r\n key={classroom.id}\r\n name={classroom.name}\r\n appLink={{ ...appLinks[LeftNavId.Classroom], args: [classroom.id]}}\r\n className={styles.classroom}\r\n svgName={cvSvgLibrary.Star}\r\n active={activeItem === LeftNavId.Classroom && classroom.id === dynamicActiveId}\r\n />\r\n ))\r\n : <PartialLeftNavItem />\r\n }\r\n\r\n <div className={styles.leftNavBottom}>\r\n <LeftNavItem\r\n key={LeftNavId.WatchHistory}\r\n name={getPhrase('watchHistory')}\r\n appLink={appLinks[LeftNavId.WatchHistory]}\r\n className={styles.watchHistory}\r\n svgName={cvSvgLibrary.History}\r\n active={activeItem === LeftNavId.WatchHistory}\r\n />\r\n <LeftNavItem\r\n key={LeftNavId.Settings}\r\n name={getPhrase('settings')}\r\n appLink={appLinks[LeftNavId.Settings]}\r\n className={styles.settings}\r\n svgName={cvSvgLibrary.Cog}\r\n active={activeItem === LeftNavId.Settings}\r\n />\r\n </div>\r\n </Scrollbars>\r\n </nav>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { SvgContainerSize, SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\ninterface LeftNavItemProps {\r\n name: string;\r\n appLink: Core.AppLink;\r\n className: string;\r\n icon?: () => JSX.Element;\r\n svgName?: string;\r\n collapsed?: boolean;\r\n active?: boolean;\r\n}\r\n\r\nexport function LeftNavItem(props: LeftNavItemProps): JSX.Element {\r\n const colorizeText = props.collapsed && props.active;\r\n\r\n const { icon: SvgIcon } = props;\r\n\r\n let containerClassName = `${styles.leftNavAnchor} ${props.className} py-2 `;\r\n containerClassName += (!props.collapsed || props.active) ? styles.active : styles.iconGrey;\r\n\r\n if (!props.collapsed && props.active)\r\n containerClassName += ' ' + styles.bgGrey;\r\n\r\n return (\r\n <AppLink\r\n className={containerClassName}\r\n appLink={props.appLink}\r\n >\r\n <span className={`${styles.leftNavIcon}`}>\r\n {props.icon\r\n ? <SvgContainer2 size={SvgContainerSize.Large}>\r\n <SvgIcon />\r\n </SvgContainer2>\r\n : <SvgContainer svgName={props.svgName} size={SvgContainerSize.Large} />\r\n }\r\n </span>\r\n <span className={`${styles.leftNavText} ${colorizeText ? styles.highlightText : ''}`}>{props.name}</span>\r\n </AppLink>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { ExpandedLeftNavView } from './ExpandedLeftNav';\r\nimport { CollapsedLeftNavView } from './CollapsedLeftNav';\r\n\r\nimport { LeftNavHelper } from 'shared/utils/LeftNavHelper';\r\nimport { LeftNavId } from 'shared/enums/LeftNavId';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nexport enum LeftNavState {\r\n Open,\r\n Collapsed,\r\n Hidden\r\n}\r\n\r\n// AppLinks used to determine whether or not a left nav item should be highlighted or not\r\nconst validAppLinks = {\r\n [LeftNavId.Discover]: LeftNavHelper.getDiscoverAppLinks(),\r\n [LeftNavId.Playlists]: LeftNavHelper.getPlaylistAppLinks(),\r\n [LeftNavId.MyVideos]: LeftNavHelper.getMyVideosAppLinks(),\r\n [LeftNavId.FavouritedVideos]: LeftNavHelper.getFavouritedVideosAppLinks(),\r\n [LeftNavId.WatchHistory]: LeftNavHelper.getWatchHistoryAppLinks(),\r\n [LeftNavId.Classrooms]: LeftNavHelper.getClassroomsAppLinks(),\r\n [LeftNavId.Classroom]: LeftNavHelper.getClassroomAppLinks(),\r\n [LeftNavId.Settings]: LeftNavHelper.getSettingsAppLinks(),\r\n};\r\n\r\ninterface LeftNavViewProps {\r\n navState: LeftNavState;\r\n activeAppLink: Core.AppLink;\r\n appLinkIsRoute: boolean;\r\n}\r\n\r\nexport function LeftNavView(props: LeftNavViewProps): JSX.Element {\r\n const [ activeItem, setActiveItem ] = React.useState<LeftNavId>(null);\r\n\r\n React.useEffect(() => {\r\n /**\r\n * If the active appLink is not a route (meaning it's likely a popup appLink), we keep the active\r\n * item state the same.\r\n */\r\n if (!props.appLinkIsRoute)\r\n return;\r\n\r\n let nextActiveItem: LeftNavId = null;\r\n\r\n Object.keys(validAppLinks).find((key: keyof typeof LeftNavId) => {\r\n if (nextActiveItem)\r\n return;\r\n\r\n const appLinks = validAppLinks[key];\r\n\r\n if (appLinks.find(appLink => (\r\n appLink.application === props.activeAppLink.application\r\n && appLink.action === props.activeAppLink.action\r\n ))) {\r\n nextActiveItem = LeftNavId[key];\r\n return;\r\n }\r\n });\r\n\r\n setActiveItem(nextActiveItem);\r\n }, [props.activeAppLink]);\r\n\r\n if (props.navState === LeftNavState.Hidden)\r\n return <></>;\r\n\r\n const firstArg = props.activeAppLink?.args && props.activeAppLink.args[0] as string;\r\n\r\n return props.navState === LeftNavState.Collapsed\r\n ? <CollapsedLeftNavView activeItem={activeItem} />\r\n : <ExpandedLeftNavView activeItem={activeItem} dynamicActiveId={firstArg} />;\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"leftNav\":\"cv--leftNav--3jVyN\",\"leftNavExpanded\":\"cv--leftNavExpanded--Q3CCb\",\"leftNavAnchor\":\"cv--leftNavAnchor--3A_-8\",\"leftNavCollapsed\":\"cv--leftNavCollapsed--2idO9\",\"bgGrey\":\"cv--bgGrey--jefGP\",\"leftNavText\":\"cv--leftNavText--3qbRh\",\"leftNavBottom\":\"cv--leftNavBottom--1OHHF\",\"partialLeftNavItem\":\"cv--partialLeftNavItem--131rM\",\"iconGrey\":\"cv--iconGrey--2C2dq\",\"leftNavIcon\":\"cv--leftNavIcon--13OIc\",\"discover\":\"cv--discover--2dE5b\",\"active\":\"cv--active--3209B\",\"playlists\":\"cv--playlists--2l2O2\",\"myVideos\":\"cv--myVideos--9xxGp\",\"favouritedVideos\":\"cv--favouritedVideos--mqsI_\",\"classrooms\":\"cv--classrooms--Zgkg3\",\"classroom\":\"cv--classroom--2K3g7\",\"watchHistory\":\"cv--watchHistory--ZMi6H\",\"settings\":\"cv--settings--YTaso\",\"highlightText\":\"cv--highlightText--3uRuV\"};","import React from 'react';\r\n\r\nimport styles from '../left-nav.scss';\r\n\r\nexport function PartialLeftNavItem(): JSX.Element {\r\n return (\r\n <div className={`${styles.leftNavAnchor} mt-3`}>\r\n <span className={`${styles.iconGrey} partial-loading-background`}></span>\r\n <span\r\n className={`${styles.leftNavText} ${styles.partialLeftNavItem} mx-1 partial-loading-background`}\r\n />\r\n </div>\r\n );\r\n}","import { Core } from 'libs/common/core';\r\n\r\nexport function RegisterAjaxMiddleware(shell: Core.Shell, next: any): void {\r\n /**\r\n * TODO: Register middleware that words for both Flight and DataServices - Sha\r\n */\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { ConcurrencyHelper } from 'libs/common/backbone/utils/ConcurrencyHelper';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { AnalyticsService } from 'libs/analytics/AnalyticsService';\r\nimport { EventTransport } from 'libs/analytics/transport/EventTransport';\r\nimport { UserDataEnricher } from 'libs/analytics/enrichers/UserDataEnricher';\r\nimport { CoreContextEnricher } from 'libs/analytics/enrichers/CoreContextEnricher';\r\nimport { CollectionApiClient } from 'libs/analytics/clients/CollectionApiClient';\r\nimport { DebuggerClient } from 'libs/analytics/clients/DebuggerClient';\r\nimport { CollectionApiClientHelper } from 'libs/analytics/utils/CollectionApiClientHelper';\r\nimport { CountryRegionMapping } from 'libs/analytics/constants/CountryRegionMapping';\r\nimport { CountryCode as AnalyticsCountryCode } from 'libs/analytics/enums/CountryCode';\r\nimport { User } from 'libs/analytics/interfaces';\r\n\r\nimport { Config } from 'libs/shared/interfaces';\r\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\r\nimport { ConfigDataService } from 'libs/shared/services/ConfigDataService';\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\n\r\nfunction RegisterAnalytics(shell: Core.Shell, next: Function): void {\r\n let config: Config;\r\n let user: User;\r\n let version: string;\r\n\r\n const configDataService: ConfigDataService = InstanceManager.getInstance(SharedDataServices.Config);\r\n const userDataService: UserDataService = InstanceManager.getInstance(SharedDataServices.User);\r\n\r\n function getUser(): Promise<User> {\r\n return new Promise((resolve, reject) => {\r\n const success = (currentUser: User) => {\r\n resolve(currentUser);\r\n };\r\n\r\n const error = () => {\r\n reject();\r\n };\r\n\r\n userDataService.getCurrentUser(success, error);\r\n });\r\n }\r\n\r\n /**\r\n * Number of concurrent async calls we're awaiting before we can continue execution\r\n * to the next startup step. If adding any more async calls, make sure to increment\r\n * this value.\r\n */\r\n const asyncCounter = new ConcurrencyHelper(3);\r\n\r\n // Callback to continue execution\r\n const executionCallback = () => {\r\n asyncCounter.decrement();\r\n\r\n // Continue execution only once the counter has been decremented to zero \r\n if (asyncCounter.getValue() > 0)\r\n return;\r\n\r\n /**\r\n * Register all of our analytics enrichers/clients once we have all the data\r\n */\r\n const analyticsService = new AnalyticsService({ user, config });\r\n InstanceManager.registerSingleton(analyticsService);\r\n\r\n analyticsService.registerTransport(EventTransport);\r\n\r\n analyticsService.registerClient(DebuggerClient);\r\n\r\n // const countryCode: CountryCode = config.countryCode.toLowerCase() as AnalyticsCountryCode;\r\n // TODO: Update to read from config with commented out line above\r\n const countryCode = CountryCode.AU;\r\n\r\n analyticsService.registerClient(CollectionApiClient, {\r\n productName: 'lite.web',\r\n productVersion: version,\r\n regionName: CountryRegionMapping[countryCode],\r\n collectionApiUrls: config.collectionApiUrls,\r\n collectionApiClientId: config.collectionApiClientId,\r\n getUser,\r\n shouldLog: CollectionApiClientHelper.shouldLog,\r\n formatData: CollectionApiClientHelper.formatData\r\n });\r\n\r\n analyticsService.registerEnricher(CoreContextEnricher, {\r\n productName: 'ClickView Primary',\r\n productVersion: version\r\n });\r\n\r\n analyticsService.registerEnricher(UserDataEnricher);\r\n\r\n InstanceManager.releaseInstance(SharedDataServices.Config);\r\n InstanceManager.releaseInstance(SharedDataServices.User);\r\n\r\n next(shell);\r\n };\r\n\r\n /**\r\n * Retrive version, config and user data to initialise our analytics\r\n */\r\n configDataService.getVersion((currentVersion: string) => {\r\n version = currentVersion;\r\n executionCallback();\r\n });\r\n\r\n configDataService.getConfig((appConfig: Config) => {\r\n config = appConfig;\r\n executionCallback();\r\n });\r\n\r\n userDataService.getCurrentUser((currentUser: User) => {\r\n user = currentUser;\r\n executionCallback();\r\n });\r\n}\r\n\r\nexport { RegisterAnalytics };","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { OnlineUserRole } from 'libs/shared/enums/UserRole';\r\nimport { CustomerType } from 'libs/shared/enums/CustomerType';\r\nimport { AppOptionsService } from 'libs/shared/services/AppOptionsService';\r\n\r\nexport function RegisterAppOptions(shell: Core.Shell, next: Function): void {\r\n InstanceManager.registerSingleton(new AppOptionsService({\r\n onlineRole: OnlineUserRole.Staff,\r\n customerType: CustomerType.Primary\r\n }));\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { SearchAppVariables } from 'apps/search/constants/SearchAppVariables';\r\nimport { NotificationsAppVariables } from 'apps/notifications/constants/NotificationsAppVariables';\r\nimport { SubjectsAppVariables } from 'apps/subjects/constants/SubjectsAppVariables';\r\n\r\nimport { mustCompleteOnboarding } from 'shared/filters/OnboardingFilter';\r\n\r\nfunction RegisterApplicationVariables(shell: Core.Shell, next: Function): void {\r\n InstanceManager\r\n .registerInstance(SearchAppVariables)\r\n .registerInstance(NotificationsAppVariables);\r\n\r\n mustCompleteOnboarding(null, result => {\r\n InstanceManager.registerInstance(SubjectsAppVariables, { hasCompletedOnboarding: !result });\r\n next(shell);\r\n });\r\n}\r\n\r\nexport { RegisterApplicationVariables };","import { Core } from 'libs/common/core';\r\n\r\nimport { ClassroomsApplication } from 'apps/classrooms/LiteClassroomsApplication';\r\nimport { ContentUpdatesApplication } from 'apps/content-updates/LiteContentUpdatesApplication';\r\nimport { DashboardApplication } from 'apps/dashboard/LiteDashboardApplication';\r\nimport { DefaultApplication } from 'apps/default/LiteDefaultApplication';\r\nimport { EmbedApplication } from 'apps/embed/LiteEmbedApplication';\r\nimport { NotificationsApplication } from 'apps/notifications/LiteNotificationsApplication';\r\nimport { PlaylistsApplication } from 'apps/playlists/LitePlaylistsApplication';\r\nimport { SearchApplication } from 'apps/search/LiteSearchApplication';\r\nimport { SubjectApplication } from 'apps/subjects/LiteSubjectApplication';\r\nimport { UploadApplication } from 'apps/upload/LiteUploadApplication';\r\nimport { UserManagerApplication } from 'apps/user-manager/LiteUserManagerApplication';\r\nimport { SettingsApplication } from 'apps/settings/LiteSettingsApplication';\r\nimport { WatchHistoryApplication } from 'apps/watch-history/LiteWatchHistoryApplication';\r\n\r\nexport function RegisterApplications(shell: Core.Shell, next: Function): void {\r\n shell\r\n .registerApplication(DefaultApplication)\r\n .registerApplication(PlaylistsApplication)\r\n .registerApplication(DashboardApplication)\r\n .registerApplication(SubjectApplication)\r\n .registerApplication(EmbedApplication)\r\n .registerApplication(NotificationsApplication)\r\n .registerApplication(SearchApplication)\r\n .registerApplication(ContentUpdatesApplication)\r\n .registerApplication(UserManagerApplication)\r\n .registerApplication(UploadApplication)\r\n .registerApplication(ClassroomsApplication)\r\n .registerApplication(SettingsApplication)\r\n .registerApplication(WatchHistoryApplication);\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { FifoMemoryCache } from 'libs/common/backbone/services/caches/FifoMemoryCache';\r\n\r\nexport function RegisterCaches(shell: Core.Shell, next: Function): void {\r\n InstanceManager.registerInstance(FifoMemoryCache, { size: 100 });\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { AjaxDataProvider } from 'libs/common/backbone/services/data-providers/AjaxDataProvider';\r\n\r\nexport function RegisterDataProviders(shell: Core.Shell, next: Function): void {\r\n /**\r\n * TODO: Register the error message mappings below - Sha\r\n */\r\n\r\n InstanceManager.registerInstance(AjaxDataProvider, {\r\n // dataServiceErrorMessageMappings: DataServiceErrorMessageMappings,\r\n // defaultErrorMessageKey: DefaultDataServiceErrorCode\r\n dataServiceErrorMessageMappings: { temp: 'Error' },\r\n defaultErrorMessageKey: 'temp'\r\n });\r\n\r\n next(shell);\r\n}\r\n","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { BaseAlertService, AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { Caches } from 'libs/common/backbone/constants/Caches';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\n\r\nimport { ConfigDataService } from 'libs/shared/services/ConfigDataService';\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\nimport { LanguageDataService } from 'libs/shared/services/LanguageDataService';\r\nimport { NotificationSocketService } from 'libs/shared/apps/notifications/services/NotificationSocketService';\r\nimport { NotificationDataService } from 'libs/shared/apps/notifications/services/NotificationDataService';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\r\nimport { SettingsDataService } from 'shared/services/SettingsDataService';\r\nimport { FlightLibraryDataService } from 'shared/services/FlightLibraryDataService';\r\nimport { FlightSeriesDataService } from 'shared/services/FlightSeriesDataService';\r\nimport { FlightUserDataService } from 'shared/services/FlightUserDataService';\r\n\r\nexport function RegisterDataServices(shell: Core.Shell, next: Function): void {\r\n /**\r\n * TODO: Replace the below strings to use the language service and implement the alertViewCtor\r\n */\r\n const alertServiceConfig = {\r\n maxAlerts: 3,\r\n defaultSuccessAlert: { heading: DefaultAlertHeading.Success, type: AlertType.Success },\r\n defaultErrorAlert: { heading: DefaultAlertHeading.Fail, type: AlertType.Fail },\r\n alertViewCtor: AlertList\r\n };\r\n\r\n /**\r\n * TODO: Replace the below with something that extends\r\n */\r\n InstanceManager\r\n .registerSingleton(new BaseAlertService(alertServiceConfig));\r\n\r\n const alertService = InstanceManager.getInstance<BaseAlertService>(CommonServices.ALERT);\r\n\r\n const basicDataServiceConfig = {\r\n cache: Caches.Fifo,\r\n dataProvider: DataProviders.Ajax,\r\n bootstrapData: (window as any).bootstrapData,\r\n defaultErrorHandler: alertService.error({ useXHR: true }),\r\n alertService\r\n };\r\n\r\n InstanceManager\r\n .registerDataService(ConfigDataService, basicDataServiceConfig)\r\n .registerDataService(UserDataService, basicDataServiceConfig)\r\n .registerDataService(LanguageDataService, basicDataServiceConfig)\r\n .registerDataService(NotificationDataService, basicDataServiceConfig)\r\n .registerDataService(SettingsDataService, basicDataServiceConfig);\r\n\r\n const flightDataServiceConfig = {\r\n store: shell.store\r\n };\r\n\r\n InstanceManager\r\n .registerInstance(FlightLibraryDataService, flightDataServiceConfig)\r\n .registerInstance(FlightSeriesDataService, flightDataServiceConfig)\r\n .registerInstance(FlightUserDataService, flightDataServiceConfig);\r\n\r\n const socketServiceConfig = {\r\n cache: Caches.Fifo,\r\n dataProvider: DataProviders.Notifications,\r\n alertService\r\n };\r\n\r\n InstanceManager.registerDataService(NotificationSocketService, socketServiceConfig);\r\n\r\n next(shell);\r\n\r\n /**\r\n * We delete bootstrapped data after next(shell)\r\n * just incase something else is using it\r\n */\r\n delete (window as any).bootstrapData;\r\n}","import { Radio } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { BaseAlertService, AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { NotImplementedError } from 'libs/common/backbone/errors/NotImplementedError';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\r\n\r\nimport { AlertError } from 'libs/shared/errors/primitives/AlertError';\r\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\r\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\r\n\r\nimport { NotFoundError } from 'shared/errors/general/not-found/LiteNotFoundError';\r\nimport { UnspecifiedError } from 'shared/errors/general/unspecified-error/UnspecifiedError';\r\nimport { PrivateResourceError } from 'shared/errors/general/private-resource/PrivateResourceError';\r\nimport { RegionLockedResourceError } from 'shared/errors/general/region-locked-resource/RegionLockedResourceError';\r\n\r\nimport { VideoNotFoundError } from 'shared/errors/videos/video-not-found/LiteVideoNotFoundError';\r\nimport { VideoPrivateError } from 'shared/errors/videos/video-private/VideoPrivateError';\r\n\r\nimport { PlaylistNotFoundError } from 'shared/errors/playlists/playlist-not-found/LitePlaylistNotFoundError';\r\nimport { PlaylistPrivateError } from 'shared/errors/playlists/playlist-private/PlaylistPrivateError';\r\n\r\nfunction alertErrorHandler(error: AlertError): void {\r\n const alertService = InstanceManager.getInstance<BaseAlertService>(CommonServices.ALERT);\r\n\r\n alertService.createAlert({ heading: DefaultAlertHeading.Fail, type: AlertType.Fail, message: error.message });\r\n}\r\n\r\nfunction devErrorHandler(error: DevError): void {\r\n const channel = Radio.channel('error:view');\r\n channel.replyOnce('current:error', () => error);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.DEV_ERROR\r\n });\r\n}\r\n\r\nfunction notFoundErrorHandler(error: NotFoundError): void {\r\n const channel = Radio.channel('error:view');\r\n channel.replyOnce('current:error', () => error);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.NOT_FOUND\r\n });\r\n}\r\n\r\nfunction handleErrorPageError(error: ErrorPageError): void {\r\n const channel = Radio.channel('error:view');\r\n channel.replyOnce('current:error', () => error);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.ERROR\r\n });\r\n}\r\n\r\nfunction handleDialogError(error: DialogError): void {\r\n const channel = Radio.channel('error:view');\r\n channel.replyOnce('current:error', () => error);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.DIALOG_ERROR\r\n });\r\n}\r\n\r\nexport function RegisterErrorHandlers(shell: Core.Shell, next: Function): void {\r\n shell\r\n .registerErrorHandler(ErrorPageError, handleErrorPageError)\r\n .registerErrorHandler(DialogError, handleDialogError)\r\n .registerErrorHandler(AlertError, alertErrorHandler)\r\n .registerErrorHandler(NotFoundError, notFoundErrorHandler)\r\n .registerErrorHandler(UnspecifiedError, handleErrorPageError)\r\n .registerErrorHandler(PrivateResourceError, handleErrorPageError)\r\n .registerErrorHandler(RegionLockedResourceError, handleErrorPageError)\r\n .registerErrorHandler(VideoNotFoundError, notFoundErrorHandler)\r\n .registerErrorHandler(VideoPrivateError, handleErrorPageError)\r\n .registerErrorHandler(PlaylistNotFoundError, notFoundErrorHandler)\r\n .registerErrorHandler(PlaylistPrivateError, handleErrorPageError);\r\n\r\n if (__ENVIRONMENT__ === 'development') {\r\n shell\r\n .registerErrorHandler(Core.Error, devErrorHandler)\r\n .registerErrorHandler(DevError, devErrorHandler)\r\n .registerErrorHandler(NotImplementedError, devErrorHandler);\r\n }\r\n\r\n next();\r\n}","import * as _ from 'underscore';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LangHelper } from 'libs/shared/legacy/utils/LangHelper';\r\n\r\nfunction RegisterHandlebarsHelpers(shell: Core.Shell, next: Function): void {\r\n LangHelper.register();\r\n\r\n next(shell);\r\n}\r\n\r\nexport { RegisterHandlebarsHelpers };","import { Core } from 'libs/common/core';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { EmbedLayoutView } from 'shared/layouts/embed-layout/EmbedLayoutView';\r\n\r\nexport function RegisterLayouts(shell: Core.Shell, next: Function): void {\r\n shell\r\n .registerLayout(Layouts.TEACHER_LAYOUT, TeacherLayoutView)\r\n .registerLayout(Layouts.EMBED_LAYOUT, EmbedLayoutView);\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\n\r\nimport { ConfigDataService } from 'libs/shared/services/ConfigDataService';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { Config } from 'libs/shared/interfaces';\r\n\r\nexport function RegisterRuntimeEnvironment(shell: Core.Shell, options: any, next: any): void {\r\n const configDataService: ConfigDataService = InstanceManager.getInstance(SharedDataServices.Config);\r\n configDataService.getConfig((config: Config) => {\r\n EnvironmentVariables.setUpVariables({\r\n isDevelopment: __ENVIRONMENT__ === 'development'\r\n });\r\n\r\n next(shell, options);\r\n\r\n /**\r\n * This is released after next is called so that \r\n * the values are cached properly if anything else needs them\r\n */\r\n InstanceManager.releaseInstance(SharedDataServices.Config);\r\n });\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ScrollService } from 'libs/common/backbone/services/ScrollService';\r\nimport { ConcurrencyHelper } from 'libs/common/backbone/utils/ConcurrencyHelper';\r\n\r\nimport { BasePendingItemsService } from 'libs/shared/apps/upload/services/BasePendingItemsService';\r\nimport { LanguageDataService } from 'libs/shared/services/LanguageDataService';\r\nimport { ConfigDataService } from 'libs/shared/services/ConfigDataService';\r\nimport { NotificationService } from 'libs/shared/apps/notifications/services/NotificationService';\r\nimport { NotificationsSocketDataProvider } from 'libs/shared/apps/notifications/services/data-providers/NotificationsSocketDataProvider';\r\nimport { Config } from 'libs/shared/interfaces';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { ContextualSearchService } from 'libs/shared/apps/search/services/ContextualSearchService';\r\n\r\nimport { FlightVideoDataService } from 'shared/services/FlightVideoDataService';\r\nimport { FlightVideoUploadDataService } from 'apps/upload/services/FlightVideoUploadDataService';\r\nimport { CombineUploadsService } from 'apps/upload/services/CombineUploadsService';\r\nimport { VideoUploadService } from 'apps/upload/services/VideoUploadService';\r\nimport { ImageUrlService } from 'libs/shared/services/ImageUrlService';\r\nimport { ImageUrls } from 'shared/constants/ImageUrls';\r\n\r\nexport function RegisterServices(shell: Core.Shell, next: Function): void {\r\n const contextualSearchService = new ContextualSearchService();\r\n const scrollService = new ScrollService();\r\n\r\n InstanceManager\r\n .registerInstance(ImageUrlService, { imageUrls: ImageUrls })\r\n .registerInstance(VideoUploadService)\r\n .registerInstance(FlightVideoDataService, { store: shell.store })\r\n .registerInstance(FlightVideoUploadDataService, { store: shell.store })\r\n .registerInstance(BasePendingItemsService)\r\n .registerInstance(CombineUploadsService)\r\n .registerInstance(NotificationService)\r\n .registerSingleton(contextualSearchService)\r\n .registerSingleton(scrollService);\r\n\r\n const asyncCounter = new ConcurrencyHelper(2);\r\n const executionCallback = () => {\r\n asyncCounter.decrement();\r\n\r\n if (asyncCounter.getValue() > 0)\r\n return;\r\n\r\n InstanceManager.releaseInstance(SharedDataServices.Language);\r\n InstanceManager.releaseInstance(SharedDataServices.Config);\r\n\r\n next(shell);\r\n };\r\n\r\n const languageDataService = InstanceManager.getInstance<LanguageDataService>(SharedDataServices.Language);\r\n languageDataService.getLanguageConfig((config: any) => {\r\n LanguageService.setConfig(config);\r\n\r\n executionCallback();\r\n });\r\n\r\n const configDataService = InstanceManager.getInstance<ConfigDataService>(SharedDataServices.Config);\r\n configDataService.getConfig((config: Config) => {\r\n InstanceManager.registerInstance(NotificationsSocketDataProvider, {\r\n endpoint: config.notificationServiceUrl,\r\n authEndpoint: '/api/notifications/v1/tokens',\r\n hubName: 'notification',\r\n logging: true\r\n });\r\n\r\n executionCallback();\r\n });\r\n}","import { combineReducers, createStore, applyMiddleware, Store } from 'redux';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { ApplicationDataReducer } from 'libs/common/react/reducers/ApplicationDataReducer';\r\nimport { ViewModelReducer } from 'libs/common/react/reducers/ViewModelReducer';\r\nimport { createApplicationMiddleware } from 'libs/common/react/middleware/ApplicationMiddleware';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nexport function RegisterStore(shell: Core.Shell, next: Function): void {\r\n const reducer = combineReducers<ApplicationState>({\r\n flightData: Flight.FlightReducer,\r\n applicationData: ApplicationDataReducer,\r\n viewModelData: ViewModelReducer\r\n });\r\n\r\n const flightMiddleware = Flight.createMiddleware({\r\n fetchData: Flight.ajaxRequest,\r\n bootstrappedData: (window as any).bootstrapData || {},\r\n defaultExpiryTime: CacheDurations.STANDARD\r\n });\r\n\r\n const applicationMiddleware = createApplicationMiddleware({\r\n oldVersionError: new DevError('A new version is available'), // TODO replace\r\n authenticationError: new DevError('Authentication Error') // TODO replace\r\n });\r\n\r\n function registerStore(store: Store): void {\r\n shell.registerStore(store);\r\n next();\r\n\r\n /**\r\n * We delete bootstrapped data after next(shell)\r\n * just incase something else is using it\r\n */\r\n delete (window as any).bootstrapData;\r\n }\r\n\r\n // In development, we want to add the redux devtools middleware so that we can use the browser extension for debugging\r\n if (__ENVIRONMENT__ === 'development') {\r\n import('redux-devtools-extension').then(({ composeWithDevTools }) => {\r\n const devStore = createStore(\r\n reducer,\r\n composeWithDevTools(\r\n applyMiddleware(flightMiddleware, applicationMiddleware)\r\n )\r\n );\r\n\r\n registerStore(devStore);\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Production only\r\n const prodStore = createStore(reducer, applyMiddleware(flightMiddleware, applicationMiddleware));\r\n registerStore(prodStore);\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\n\r\n/**\r\n * A \"view data extension\", is a set of data that you want to make available in all handlebars templates.\r\n * By default, templates receive its component's model data, and anything passed to `viewOptions()`\r\n * (accessible as `{{options.example}}`).\r\n * \r\n * In this middleware, you can extend this view data with `common/CoreView`'s static `AddViewDataExtension()` method.\r\n * This takes an object of the data you'd like to be added, or a function which returns an object of data for\r\n * situations where a CoreView's `this` is needed. For example, `languageNamespaceExtension` adds a `languageNamespace`\r\n * property to all templates (accessible by `{{languageNamespace}}`).\r\n * \r\n * See `serializeData()` in `common/BaseView.ts` to see how these extension objects are processed.\r\n */\r\nfunction RegisterViewDataExtensions(shell: Core.Shell, next: Function): void {\r\n const languageNamespaceExtension = (coreView: any) => {\r\n return {\r\n languageNamespace: _.result(coreView, 'lang')\r\n };\r\n };\r\n\r\n Core.View.AddViewDataExtension(languageNamespaceExtension);\r\n\r\n next(shell);\r\n}\r\n\r\nexport { RegisterViewDataExtensions };","export * from './RegisterApplications';\r\nexport * from './RegisterAjaxMiddleware';\r\nexport * from './RegisterCaches';\r\nexport * from './RegisterDataProviders';\r\nexport * from './RegisterDataServices';\r\nexport * from './RegisterErrorHandlers';\r\nexport * from './RegisterLayouts';\r\nexport * from './RegisterRuntimeEnvironment';\r\nexport * from './RegisterServices';\r\nexport * from './RegisterStore';\r\nexport * from './RegisterApplicationVariables';\r\nexport * from './RegisterHandlebarsHelpers';\r\nexport * from './RegisterViewDataExtensions';\r\nexport * from './RegisterAppOptions';\r\nexport * from './RegisterAnalytics';","import './theme-overrides.scss';","// extracted by mini-css-extract-plugin","module.exports = __WEBPACK_EXTERNAL_MODULE__fortawesome_fontawesome__;","module.exports = __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone_marionette__;","module.exports = __WEBPACK_EXTERNAL_MODULE_bloodhound__;","module.exports = __WEBPACK_EXTERNAL_MODULE_dompurify__;","module.exports = __WEBPACK_EXTERNAL_MODULE_handlebars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_marked__;","module.exports = __WEBPACK_EXTERNAL_MODULE_moment__;","module.exports = __WEBPACK_EXTERNAL_MODULE_node_polyglot__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_autosuggest__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_bootstrap__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dom__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dropzone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_transition_group__;","module.exports = __WEBPACK_EXTERNAL_MODULE_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_underscore__;"],"sourceRoot":""}
|