{"version":3,"file":"index.js","mappings":"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G,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAA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","sources":["webpack://lib/webpack/universalModuleDefinition","webpack://lib/./api/globalVintomNamespace/GlobalVintomNamespace.ts","webpack://lib/./api/model/error/VintomError.ts","webpack://lib/./api/player/Player.ts","webpack://lib/./api/player/PlayerAPIImpl.tsx","webpack://lib/./components/icons/fullscreen/FullscreenDisableIconComponent.tsx","webpack://lib/./components/icons/fullscreen/FullscreenEnableIconComponent.tsx","webpack://lib/./components/icons/loader/LoaderIconComponent.tsx","webpack://lib/./components/icons/playback/PauseIconComponent.tsx","webpack://lib/./components/icons/playback/PlayIconComponent.tsx","webpack://lib/./components/icons/playback/ReplayIconComponent.tsx","webpack://lib/./components/icons/socialShare/FacebookIconComponent.tsx","webpack://lib/./components/icons/socialShare/SocialShareIconComponent.tsx","webpack://lib/./components/icons/socialShare/TwitterIconComponent.tsx","webpack://lib/./components/icons/subtitles/SubtitlesIconComponent.tsx","webpack://lib/./components/icons/subtitles/SubtitlesSelectedIconComponent.tsx","webpack://lib/./components/icons/volume/VolumeLoudIconComponent.tsx","webpack://lib/./components/icons/volume/VolumeMutedIconComponent.tsx","webpack://lib/./components/icons/volume/VolumeQuietIconComponent.tsx","webpack://lib/./components/layer/AnimationLayerComponent.tsx","webpack://lib/./components/layer/CTALayerComponent.tsx","webpack://lib/./components/layer/ControlsLayerComponent.tsx","webpack://lib/./components/layer/MusicLayerComponent.tsx","webpack://lib/./components/layer/PosterLayerComponent.tsx","webpack://lib/./components/layer/VideoLayerComponent.tsx","webpack://lib/./components/layer/controls/common/LoadingPageComponent.tsx","webpack://lib/./components/layer/controls/common/MenuButtonComponent.tsx","webpack://lib/./components/layer/controls/common/MessageComponent.tsx","webpack://lib/./components/layer/controls/common/PartComponent.tsx","webpack://lib/./components/layer/controls/common/SliderComponent.tsx","webpack://lib/./components/layer/controls/common/SocialShareComponent.tsx","webpack://lib/./components/layer/controls/common/SubtitleSelectorComponent.tsx","webpack://lib/./components/layer/controls/common/SubtitlesDisplayComponent.tsx","webpack://lib/./components/layer/controls/common/ToggleComponent.tsx","webpack://lib/./components/layer/controls/common/TooltipComponent.tsx","webpack://lib/./components/layer/controls/desktop/DesktopControlsLayerComponent.tsx","webpack://lib/./components/layer/controls/desktop/DesktopFullscreenControl.tsx","webpack://lib/./components/layer/controls/desktop/DesktopMenuComponent.tsx","webpack://lib/./components/layer/controls/desktop/DesktopOverlayComponent.tsx","webpack://lib/./components/layer/controls/desktop/DesktopSeekbarComponent.tsx","webpack://lib/./components/layer/controls/desktop/ExpandableMenuButtonComponent.tsx","webpack://lib/./components/layer/controls/desktop/MenuButtonWithTooltipComponent.tsx","webpack://lib/./components/layer/controls/desktop/PlaybackControlComponent.tsx","webpack://lib/./components/layer/controls/desktop/QualityLevelsComponent.tsx","webpack://lib/./components/layer/controls/desktop/ScenarioTimeComponent.tsx","webpack://lib/./components/layer/controls/desktop/VolumeControlComponent.tsx","webpack://lib/./components/layer/controls/mobile/MobileControlsLayerComponent.tsx","webpack://lib/./components/layer/controls/mobile/MobileMenuComponent.tsx","webpack://lib/./components/layer/controls/mobile/MobileOverlayComponent.tsx","webpack://lib/./components/layer/controls/mobile/MobileSeekbarComponent.tsx","webpack://lib/./components/player/PlayerContainerComponent.tsx","webpack://lib/./components/player/UnsupportedBrowserVersionComponent.tsx","webpack://lib/./config/config.ts","webpack://lib/./cta/ctaResource/CTAResource.ts","webpack://lib/./cta/prepackagedCTAs/clickableAreaConditional/clickableAreaConditionalCTA.ts","webpack://lib/./cta/prepackagedCTAs/clickableArea/clickableAreaCTA.ts","webpack://lib/./cta/prepackagedCTAs/clickableButton/clickableButtonCTA.ts","webpack://lib/./cta/prepackagedCTAs/prepackagedCTAs.ts","webpack://lib/./i18n/i18n.ts","webpack://lib/./i18n/i18nEn.ts","webpack://lib/./i18n/i18nEs.ts","webpack://lib/./i18n/i18nPl.ts","webpack://lib/./manager/NotSupportedBrowserPlayerManagerImpl.ts","webpack://lib/./manager/PlayerManagerImpl.ts","webpack://lib/./manager/configurationBuilder/ConfigurationBuilder.ts","webpack://lib/./manager/di/applicationContext.ts","webpack://lib/./manager/di/types.ts","webpack://lib/./manager/errorReporter/ErrorReporter.ts","webpack://lib/./manager/iframeNotifier/IframeNotifier.ts","webpack://lib/./manager/loader/playerLoader/PlayerLoader.ts","webpack://lib/./manager/loader/resourceLoader/ResourceLoader.ts","webpack://lib/./manager/loader/scenarioLoader/CachedCTAResource.ts","webpack://lib/./manager/loader/scenarioLoader/ResourcesCache.ts","webpack://lib/./manager/loader/scenarioLoader/ScenarioLoader.ts","webpack://lib/./manager/personalizer/AnimationPersonalizer.ts","webpack://lib/./manager/personalizer/Personalizer.ts","webpack://lib/./manager/playerAnalytics/AnalyticEvent.ts","webpack://lib/./manager/playerAnalytics/AnalyticsCollector.ts","webpack://lib/./manager/playerAnalytics/GoogleAnalyticsSender.ts","webpack://lib/./manager/playerAnalytics/VintomAnalyticsSender.ts","webpack://lib/./manager/preferencesStorage/PreferencesStorage.ts","webpack://lib/./manager/scenarioRunner/AnimationDrivenScenarioExecutor.ts","webpack://lib/./manager/scenarioRunner/CTAOnlyScenarioExecutor.ts","webpack://lib/./manager/scenarioRunner/ScenarioRunner.ts","webpack://lib/./manager/scenarioRunner/VideoDrivenScenarioExecutor.ts","webpack://lib/./manager/scenarioRunner/layerManager/CTALayerManager.ts","webpack://lib/./manager/scenarioRunner/layerManager/ControlsLayerManager.ts","webpack://lib/./manager/scenarioRunner/layerManager/DependentAnimationLayerManager.ts","webpack://lib/./manager/scenarioRunner/layerManager/IndependentAnimationLayerManager.ts","webpack://lib/./manager/scenarioRunner/layerManager/MusicLayerManager.ts","webpack://lib/./manager/scenarioRunner/layerManager/PlayerContainerManager.ts","webpack://lib/./manager/scenarioRunner/layerManager/PosterLayerManager.ts","webpack://lib/./manager/scenarioRunner/layerManager/VideoLayerManager.ts","webpack://lib/./manager/scenarioRunner/util/ScenarioTimeHelper.ts","webpack://lib/./manager/themeUpdater/ThemeUpdater.ts","webpack://lib/./model/playerConfiguration/AnalyticsEndpoint.ts","webpack://lib/./model/playerConfiguration/Animation.ts","webpack://lib/./model/playerConfiguration/CTA.ts","webpack://lib/./model/playerConfiguration/ConfigurationOverride.ts","webpack://lib/./model/playerConfiguration/FullPlayerConfiguration.ts","webpack://lib/./model/playerConfiguration/Part.ts","webpack://lib/./model/playerConfiguration/PlayerConfiguration.ts","webpack://lib/./model/playerConfiguration/PlayerControls.ts","webpack://lib/./model/playerConfiguration/ScenarioElement.ts","webpack://lib/./model/playerConfiguration/Skin.ts","webpack://lib/./model/playerConfiguration/Soundtrack.ts","webpack://lib/./model/playerConfiguration/Source.ts","webpack://lib/./model/playerConfiguration/Subtitle.ts","webpack://lib/./model/playerConfiguration/Video.ts","webpack://lib/./model/playerConfiguration/VisibilityRange.ts","webpack://lib/./model/scenarioGlobalState/ScenarioGlobalState.ts","webpack://lib/./model/scenarioPath/PastOrCurrentPart.ts","webpack://lib/./model/scenarioPath/ScenarioPath.ts","webpack://lib/./model/storedPreferences/StoredPreferences.ts","webpack://lib/./utils/AspectRatioHelper.ts","webpack://lib/./utils/BrowserFeatureDetector.ts","webpack://lib/./utils/CookieHelper.ts","webpack://lib/./utils/ListenerHelper.ts","webpack://lib/./utils/SocialShareHelper.ts","webpack://lib/./utils/StringHashCodeGenerator.ts","webpack://lib/./utils/SupportedBrowserHelper.ts","webpack://lib/./utils/TimeFormatter.ts","webpack://lib/./utils/WindowResizeHelper.ts","webpack://lib/./utils/translations.ts","webpack://lib/../node_modules/can-autoplay/build/can-autoplay.es.js","webpack://lib/../node_modules/es6-shim/es6-shim.js","webpack://lib/../node_modules/fullscreen-api-polyfill/fullscreen-api-polyfill.min.js","webpack://lib/./cta/prepackagedCTAs/clickableAreaConditional/clickableAreaConditionalCTA.html","webpack://lib/./cta/prepackagedCTAs/clickableArea/clickableAreaCTA.html","webpack://lib/./cta/prepackagedCTAs/clickableButton/clickableButtonCTA.html","webpack://lib/../node_modules/inversify/lib/annotation/decorator_utils.js","webpack://lib/../node_modules/inversify/lib/annotation/inject.js","webpack://lib/../node_modules/inversify/lib/annotation/injectable.js","webpack://lib/../node_modules/inversify/lib/annotation/multi_inject.js","webpack://lib/../node_modules/inversify/lib/annotation/named.js","webpack://lib/../node_modules/inversify/lib/annotation/optional.js","webpack://lib/../node_modules/inversify/lib/annotation/post_construct.js","webpack://lib/../node_modules/inversify/lib/annotation/tagged.js","webpack://lib/../node_modules/inversify/lib/annotation/target_name.js","webpack://lib/../node_modules/inversify/lib/annotation/unmanaged.js","webpack://lib/../node_modules/inversify/lib/bindings/binding.js","webpack://lib/../node_modules/inversify/lib/bindings/binding_count.js","webpack://lib/../node_modules/inversify/lib/constants/error_msgs.js","webpack://lib/../node_modules/inversify/lib/constants/literal_types.js","webpack://lib/../node_modules/inversify/lib/constants/metadata_keys.js","webpack://lib/../node_modules/inversify/lib/container/container.js","webpack://lib/../node_modules/inversify/lib/container/container_module.js","webpack://lib/../node_modules/inversify/lib/container/container_snapshot.js","webpack://lib/../node_modules/inversify/lib/container/lookup.js","webpack://lib/../node_modules/inversify/lib/inversify.js","webpack://lib/../node_modules/inversify/lib/planning/context.js","webpack://lib/../node_modules/inversify/lib/planning/metadata.js","webpack://lib/../node_modules/inversify/lib/planning/metadata_reader.js","webpack://lib/../node_modules/inversify/lib/planning/plan.js","webpack://lib/../node_modules/inversify/lib/planning/planner.js","webpack://lib/../node_modules/inversify/lib/planning/queryable_string.js","webpack://lib/../node_modules/inversify/lib/planning/reflection_utils.js","webpack://lib/../node_modules/inversify/lib/planning/request.js","webpack://lib/../node_modules/inversify/lib/planning/target.js","webpack://lib/../node_modules/inversify/lib/resolution/instantiation.js","webpack://lib/../node_modules/inversify/lib/resolution/resolver.js","webpack://lib/../node_modules/inversify/lib/syntax/binding_in_syntax.js","webpack://lib/../node_modules/inversify/lib/syntax/binding_in_when_on_syntax.js","webpack://lib/../node_modules/inversify/lib/syntax/binding_on_syntax.js","webpack://lib/../node_modules/inversify/lib/syntax/binding_to_syntax.js","webpack://lib/../node_modules/inversify/lib/syntax/binding_when_on_syntax.js","webpack://lib/../node_modules/inversify/lib/syntax/binding_when_syntax.js","webpack://lib/../node_modules/inversify/lib/syntax/constraint_helpers.js","webpack://lib/../node_modules/inversify/lib/utils/binding_utils.js","webpack://lib/../node_modules/inversify/lib/utils/exceptions.js","webpack://lib/../node_modules/inversify/lib/utils/id.js","webpack://lib/../node_modules/inversify/lib/utils/serialization.js","webpack://lib/../node_modules/json-stable-stringify/index.js","webpack://lib/../node_modules/jsonify/index.js","webpack://lib/../node_modules/jsonify/lib/parse.js","webpack://lib/../node_modules/jsonify/lib/stringify.js","webpack://lib/../node_modules/loadjs/dist/loadjs.umd.js","webpack://lib/../node_modules/lodash.zip/index.js","webpack://lib/../node_modules/lodash/_Hash.js","webpack://lib/../node_modules/lodash/_ListCache.js","webpack://lib/../node_modules/lodash/_Map.js","webpack://lib/../node_modules/lodash/_MapCache.js","webpack://lib/../node_modules/lodash/_Stack.js","webpack://lib/../node_modules/lodash/_Symbol.js","webpack://lib/../node_modules/lodash/_Uint8Array.js","webpack://lib/../node_modules/lodash/_apply.js","webpack://lib/../node_modules/lodash/_arrayLikeKeys.js","webpack://lib/../node_modules/lodash/_assignMergeValue.js","webpack://lib/../node_modules/lodash/_assignValue.js","webpack://lib/../node_modules/lodash/_assocIndexOf.js","webpack://lib/../node_modules/lodash/_baseAssignValue.js","webpack://lib/../node_modules/lodash/_baseCreate.js","webpack://lib/../node_modules/lodash/_baseFor.js","webpack://lib/../node_modules/lodash/_baseGetTag.js","webpack://lib/../node_modules/lodash/_baseIsArguments.js","webpack://lib/../node_modules/lodash/_baseIsNative.js","webpack://lib/../node_modules/lodash/_baseIsTypedArray.js","webpack://lib/../node_modules/lodash/_baseKeysIn.js","webpack://lib/../node_modules/lodash/_baseMerge.js","webpack://lib/../node_modules/lodash/_baseMergeDeep.js","webpack://lib/../node_modules/lodash/_baseRest.js","webpack://lib/../node_modules/lodash/_baseSetToString.js","webpack://lib/../node_modules/lodash/_baseTimes.js","webpack://lib/../node_modules/lodash/_baseUnary.js","webpack://lib/../node_modules/lodash/_cloneArrayBuffer.js","webpack://lib/../node_modules/lodash/_cloneBuffer.js","webpack://lib/../node_modules/lodash/_cloneTypedArray.js","webpack://lib/../node_modules/lodash/_copyArray.js","webpack://lib/../node_modules/lodash/_copyObject.js","webpack://lib/../node_modules/lodash/_coreJsData.js","webpack://lib/../node_modules/lodash/_createAssigner.js","webpack://lib/../node_modules/lodash/_createBaseFor.js","webpack://lib/../node_modules/lodash/_defineProperty.js","webpack://lib/../node_modules/lodash/_freeGlobal.js","webpack://lib/../node_modules/lodash/_getMapData.js","webpack://lib/../node_modules/lodash/_getNative.js","webpack://lib/../node_modules/lodash/_getPrototype.js","webpack://lib/../node_modules/lodash/_getRawTag.js","webpack://lib/../node_modules/lodash/_getValue.js","webpack://lib/../node_modules/lodash/_hashClear.js","webpack://lib/../node_modules/lodash/_hashDelete.js","webpack://lib/../node_modules/lodash/_hashGet.js","webpack://lib/../node_modules/lodash/_hashHas.js","webpack://lib/../node_modules/lodash/_hashSet.js","webpack://lib/../node_modules/lodash/_initCloneObject.js","webpack://lib/../node_modules/lodash/_isIndex.js","webpack://lib/../node_modules/lodash/_isIterateeCall.js","webpack://lib/../node_modules/lodash/_isKeyable.js","webpack://lib/../node_modules/lodash/_isMasked.js","webpack://lib/../node_modules/lodash/_isPrototype.js","webpack://lib/../node_modules/lodash/_listCacheClear.js","webpack://lib/../node_modules/lodash/_listCacheDelete.js","webpack://lib/../node_modules/lodash/_listCacheGet.js","webpack://lib/../node_modules/lodash/_listCacheHas.js","webpack://lib/../node_modules/lodash/_listCacheSet.js","webpack://lib/../node_modules/lodash/_mapCacheClear.js","webpack://lib/../node_modules/lodash/_mapCacheDelete.js","webpack://lib/../node_modules/lodash/_mapCacheGet.js","webpack://lib/../node_modules/lodash/_mapCacheHas.js","webpack://lib/../node_modules/lodash/_mapCacheSet.js","webpack://lib/../node_modules/lodash/_nativeCreate.js","webpack://lib/../node_modules/lodash/_nativeKeysIn.js","webpack://lib/../node_modules/lodash/_nodeUtil.js","webpack://lib/../node_modules/lodash/_objectToString.js","webpack://lib/../node_modules/lodash/_overArg.js","webpack://lib/../node_modules/lodash/_overRest.js","webpack://lib/../node_modules/lodash/_root.js","webpack://lib/../node_modules/lodash/_safeGet.js","webpack://lib/../node_modules/lodash/_setToString.js","webpack://lib/../node_modules/lodash/_shortOut.js","webpack://lib/../node_modules/lodash/_stackClear.js","webpack://lib/../node_modules/lodash/_stackDelete.js","webpack://lib/../node_modules/lodash/_stackGet.js","webpack://lib/../node_modules/lodash/_stackHas.js","webpack://lib/../node_modules/lodash/_stackSet.js","webpack://lib/../node_modules/lodash/_toSource.js","webpack://lib/../node_modules/lodash/constant.js","webpack://lib/../node_modules/lodash/eq.js","webpack://lib/../node_modules/lodash/identity.js","webpack://lib/../node_modules/lodash/isArguments.js","webpack://lib/../node_modules/lodash/isArray.js","webpack://lib/../node_modules/lodash/isArrayLike.js","webpack://lib/../node_modules/lodash/isArrayLikeObject.js","webpack://lib/../node_modules/lodash/isBuffer.js","webpack://lib/../node_modules/lodash/isFunction.js","webpack://lib/../node_modules/lodash/isLength.js","webpack://lib/../node_modules/lodash/isObject.js","webpack://lib/../node_modules/lodash/isObjectLike.js","webpack://lib/../node_modules/lodash/isPlainObject.js","webpack://lib/../node_modules/lodash/isTypedArray.js","webpack://lib/../node_modules/lodash/keysIn.js","webpack://lib/../node_modules/lodash/merge.js","webpack://lib/../node_modules/lodash/stubFalse.js","webpack://lib/../node_modules/lodash/toPlainObject.js","webpack://lib/../node_modules/object-assign/index.js","webpack://lib/../node_modules/react-dom/cjs/react-dom.production.min.js","webpack://lib/../node_modules/react-dom/index.js","webpack://lib/../node_modules/react/cjs/react.production.min.js","webpack://lib/../node_modules/react/index.js","webpack://lib/../node_modules/reflect-metadata/Reflect.js","webpack://lib/../node_modules/scheduler/cjs/scheduler.production.min.js","webpack://lib/../node_modules/scheduler/index.js","webpack://lib/../node_modules/sparkson/lib/core/DateClass.js","webpack://lib/../node_modules/sparkson/lib/core/JsonParseError.js","webpack://lib/../node_modules/sparkson/lib/core/parser.js","webpack://lib/../node_modules/sparkson/lib/decorators/ArrayField.js","webpack://lib/../node_modules/sparkson/lib/decorators/Field.js","webpack://lib/../node_modules/sparkson/lib/decorators/RawJsonField.js","webpack://lib/../node_modules/sparkson/lib/decorators/Registrable.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/After.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/Before.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/Max.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/MaxLength.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/Min.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/MinLength.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/Regexp.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/Rule.js","webpack://lib/../node_modules/sparkson/lib/decorators/validation/ValidationHelper.js","webpack://lib/../node_modules/sparkson/lib/sparkson.js","webpack://lib/../node_modules/sparkson/lib/utils/DateUtils.js","webpack://lib/../node_modules/ts-md5/dist/md5.js","webpack://lib/../node_modules/ua-parser-js/src/ua-parser.js","webpack://lib/../node_modules/whatwg-fetch/fetch.js","webpack://lib/webpack/bootstrap","webpack://lib/webpack/runtime/amd options","webpack://lib/webpack/runtime/define property getters","webpack://lib/webpack/runtime/global","webpack://lib/webpack/runtime/hasOwnProperty shorthand","webpack://lib/webpack/runtime/make namespace object","webpack://lib/webpack/runtime/node module decorator","webpack://lib/./index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"lib\"] = factory();\n\telse\n\t\troot[\"lib\"] = factory();\n})(self, function() {\nreturn ","import { Config } from \"../../config/config\";\r\nimport { CTAFunction } from \"../cta/ctaFunction/CTAFunction\";\r\nimport { Player } from \"../player/Player\";\r\n\r\ninterface GlobalVintomNamespace {\r\n cta: { [key: string]: CTAFunction };\r\n requestedResources: {[resourceLocation: string]: Promise};\r\n Player: typeof Player;\r\n}\r\n\r\n// export declare var vintom: GlobalVintomNamespace;\r\n\r\nconst initialVintom: GlobalVintomNamespace = {\r\n cta: {},\r\n requestedResources: {},\r\n Player\r\n};\r\n\r\nwindow[Config.vintomNamespace] = window[Config.vintomNamespace] || initialVintom;\r\nexport const vintom: GlobalVintomNamespace = window[Config.vintomNamespace];","import { BrowserFeatureDetector } from \"../../../utils/BrowserFeatureDetector\";\r\nimport { VintomErrorCode } from \"./VintomErrorCode\";\r\n\r\ninterface VintomErrorOptions {\r\n isLogAndSendToAnalytics?: boolean;\r\n isDisplayToUser?: boolean;\r\n}\r\n\r\ninterface VintomErrorAdditionalInfo {\r\n playerVersion?: string;\r\n userAgent?: string;\r\n browserMajorVersion?: number;\r\n browserName?: string;\r\n operatingSystem?: string;\r\n}\r\n\r\nexport class VintomError {\r\n options: VintomErrorOptions;\r\n errorAdditionalInfo: VintomErrorAdditionalInfo;\r\n stackTrace: any;\r\n\r\n private static DEFAULT_OPTIONS: VintomErrorOptions = {\r\n isLogAndSendToAnalytics: true,\r\n isDisplayToUser: true\r\n };\r\n\r\n constructor(public errorCode: VintomErrorCode, public message: string, options?: VintomErrorOptions) {\r\n this.options = {\r\n ...VintomError.DEFAULT_OPTIONS,\r\n ...(options || {})\r\n };\r\n\r\n this.errorAdditionalInfo = {};\r\n\r\n if (require(\"../../../../package.json\").version) {\r\n this.errorAdditionalInfo.playerVersion = require(\"../../../../package.json\").version;\r\n }\r\n\r\n if (navigator.userAgent) {\r\n this.errorAdditionalInfo.userAgent = navigator.userAgent;\r\n }\r\n\r\n if (BrowserFeatureDetector.getBrowserMajorVersion()) {\r\n this.errorAdditionalInfo.browserMajorVersion = BrowserFeatureDetector.getBrowserMajorVersion();\r\n }\r\n\r\n if (BrowserFeatureDetector.getBrowserName()) {\r\n this.errorAdditionalInfo.browserName = BrowserFeatureDetector.getBrowserName();\r\n }\r\n\r\n if (BrowserFeatureDetector.getOS()) {\r\n this.errorAdditionalInfo.operatingSystem = BrowserFeatureDetector.getOS();\r\n }\r\n\r\n if (Error().stack) {\r\n this.stackTrace = Error().stack;\r\n }\r\n }\r\n}\r\n","import { PlayerConfigurationAPI, PlayerConfigurationWithVideoCodeAPI, PlayerInitializationAPI } from \"./PlayerAPI\";\r\nimport { PlayerAPIImpl } from \"./PlayerAPIImpl\";\r\n\r\nclass PlayerInitializationAPIImpl implements PlayerInitializationAPI {\r\n\r\n initialize(elementId: string): PlayerConfigurationAPI;\r\n initialize(elementId: string, videoCode: string): PlayerConfigurationWithVideoCodeAPI;\r\n initialize(elementId: string, videoCode?: string): PlayerConfigurationAPI | PlayerConfigurationWithVideoCodeAPI {\r\n const palayerAPI = new PlayerAPIImpl(elementId, videoCode);\r\n if (videoCode) {\r\n return palayerAPI as PlayerConfigurationWithVideoCodeAPI;\r\n } else {\r\n return palayerAPI as PlayerConfigurationAPI;\r\n }\r\n }\r\n}\r\n\r\nexport { PlayerInitializationAPIImpl as Player };\r\n","import { PlayerManager } from \"@manager/PlayerManager\";\r\nimport React from \"react\";\r\nimport { render } from \"react-dom\";\r\nimport { PlayerContainerComponent } from \"../../components/player/PlayerContainerComponent\";\r\nimport { UnsupportedBrowserVersionComponent } from \"../../components/player/UnsupportedBrowserVersionComponent\";\r\nimport { createApplicationContext, createNotSupportedBrowserApplicationContext } from \"../../manager/di/applicationContext\";\r\nimport { TYPES } from \"../../manager/di/types\";\r\nimport { NotSupportedBrowserPlayerManagerImpl } from \"../../manager/NotSupportedBrowserPlayerManagerImpl\";\r\nimport { SupportedBrowserHelper } from \"../../utils/SupportedBrowserHelper\";\r\nimport { getI18n } from \"../../utils/translations\";\r\nimport { VintomError } from \"../model/error/VintomError\";\r\nimport { PlayerActionState } from \"../model/playerState/PlayerActionState\";\r\nimport { PlayerState } from \"../model/playerState/PlayerState\";\r\nimport { PlayerConfigurationAPI, PlayerDimensionsAPI, PlayerExecutionAPI, PlayerPersonalizationAPI, RunningPlayerAPI } from \"./PlayerAPI\";\r\n\r\nexport class PlayerAPIImpl implements\r\n PlayerConfigurationAPI, PlayerPersonalizationAPI, PlayerDimensionsAPI, PlayerExecutionAPI {\r\n\r\n private playerComponent: PlayerContainerComponent;\r\n private playerManager: PlayerManager;\r\n\r\n private configurationJSON: any;\r\n private configurationOverrideJSON: any;\r\n private personalizationJSON: any;\r\n\r\n private width: number;\r\n private height: number;\r\n\r\n constructor(private elementId: string, private videoCode: string) {}\r\n\r\n setup(json: any): PlayerPersonalizationAPI & PlayerDimensionsAPI & PlayerExecutionAPI {\r\n if (this.videoCode) {\r\n this.configurationOverrideJSON = json;\r\n } else {\r\n this.configurationJSON = json;\r\n }\r\n return this;\r\n }\r\n\r\n personalize(json: any): PlayerDimensionsAPI & PlayerExecutionAPI {\r\n this.personalizationJSON = json;\r\n return this;\r\n }\r\n\r\n dimensions(width: number, height: number): PlayerExecutionAPI {\r\n this.width = width;\r\n this.height = height;\r\n return this;\r\n }\r\n\r\n run(): RunningPlayerAPI {\r\n const i18n = getI18n();\r\n\r\n const playerEl = document.getElementById(this.elementId);\r\n\r\n if (!SupportedBrowserHelper.isBrowserSupported()) {\r\n const simplePlayerManagerImpl = createNotSupportedBrowserApplicationContext().get(TYPES.PlayerManager);\r\n simplePlayerManagerImpl.run(i18n, this.videoCode, this.configurationJSON, this.configurationOverrideJSON, this.personalizationJSON);\r\n (simplePlayerManagerImpl as NotSupportedBrowserPlayerManagerImpl).logNotSupportedBrowser();\r\n\r\n render(\r\n ,\r\n playerEl);\r\n return this;\r\n }\r\n\r\n render(\r\n this.playerComponent = element}\r\n i18n={i18n}\r\n width={this.width}\r\n height={this.height}\r\n />,\r\n playerEl\r\n );\r\n\r\n const applicationContext = createApplicationContext(\r\n this.playerComponent,\r\n this.playerComponent.animationLayer,\r\n this.playerComponent.controlsLayer,\r\n this.playerComponent.ctaLayer,\r\n this.playerComponent.posterLayer,\r\n this.playerComponent.videoLayer,\r\n this.playerComponent.musicLayer\r\n\r\n );\r\n\r\n this.playerManager = applicationContext.get(TYPES.PlayerManager);\r\n this.playerManager.run(i18n, this.videoCode, this.configurationJSON, this.configurationOverrideJSON, this.personalizationJSON);\r\n return this;\r\n }\r\n\r\n play(): void {\r\n this.playerManager && this.playerManager.play();\r\n }\r\n\r\n pause(): void {\r\n this.playerManager && this.playerManager.pause();\r\n }\r\n\r\n move(id: number): void {\r\n this.playerManager && this.playerManager.moveToScenarioElement(id);\r\n }\r\n\r\n replay(): void {\r\n this.playerManager && this.playerManager.replay();\r\n }\r\n\r\n action(ctaId: number, actionId: number, ...args: any[]): void {\r\n this.playerManager && this.playerManager.performAction(ctaId, actionId, args);\r\n }\r\n\r\n on(event: \"ready\", callback: () => void): void;\r\n on(event: \"error\", callback: (error: VintomError) => void): void;\r\n on(event: \"play\" | \"pause\" | \"finish\", callback: (payload: PlayerState) => void): void;\r\n on(event: \"action\", callback: (payload: PlayerActionState) => void): void;\r\n on(event: \"ready\" | \"error\" | \"play\" | \"pause\" | \"finish\" | \"action\", callback: (payload: any) => void): void {\r\n switch (event) {\r\n case \"ready\":\r\n this.vintomPlayerReady(callback as () => void);\r\n break;\r\n case \"error\":\r\n this.vintomPlayerError(callback as (error: VintomError) => void);\r\n break;\r\n case \"play\":\r\n this.vintomPlayerPlay(callback as (payload: PlayerState) => void);\r\n break;\r\n case \"pause\":\r\n this.vintomPlayerPause(callback as (payload: PlayerState) => void);\r\n break;\r\n case \"finish\":\r\n this.vintomPlayerFinish(callback as (payload: PlayerState) => void);\r\n break;\r\n case \"action\":\r\n this.vintomPlayerAction(callback as (payload: PlayerActionState) => void);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n vintomPlayerReady(callback: () => void): void {\r\n this.playerManager && this.playerManager.registerOnReady(callback);\r\n }\r\n\r\n vintomPlayerError(callback: (error: VintomError) => void): void {\r\n this.playerManager && this.playerManager.registerOnError(callback);\r\n }\r\n\r\n vintomPlayerPlay(callback: (payload: PlayerState) => void): void {\r\n this.playerManager && this.playerManager.registerOnPlay(callback);\r\n }\r\n\r\n vintomPlayerPause(callback: (payload: PlayerState) => void): void {\r\n this.playerManager && this.playerManager.registerOnPause(callback);\r\n }\r\n\r\n vintomPlayerFinish(callback: (payload: PlayerState) => void): void {\r\n this.playerManager && this.playerManager.registerOnFinish(callback);\r\n }\r\n\r\n vintomPlayerAction(callback: (payload: PlayerActionState) => void): void {\r\n this.playerManager && this.playerManager.registerOnAction(callback);\r\n }\r\n\r\n getState(): PlayerState {\r\n return this.playerManager && this.playerManager.getState();\r\n }\r\n\r\n remove(): void {\r\n this.playerManager && this.playerManager.prepareForRemove();\r\n document.getElementById(this.elementId).innerHTML = \"\";\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const FullscreenDisableIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const FullscreenEnableIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const LoaderIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n className?: string;\r\n}\r\n\r\nexport const PauseIconComponent: React.SFC = ({ className }) => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n className?: string;\r\n}\r\n\r\nexport const PlayIconComponent: React.SFC = ({ className }) => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const ReplayIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const FacebookIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const SocialShareIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const TwitterIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const SubtitlesIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const SubtitlesSelectedIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const VolumeLoudIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const VolumeMutedIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props { }\r\n\r\nexport const VolumeQuietIconComponent: React.SFC = () => {\r\n return (\r\n // tslint:disable:max-line-length\r\n \r\n \r\n \r\n \r\n // tslint:enable:max-line-length\r\n );\r\n};\r\n","import { AnimationLayer } from \"@manager/layer/AnimationLayer\";\r\nimport { AnimationLayerObserver } from \"@manager/layerObserver/AnimationLayerObserver\";\r\nimport React from \"react\";\r\nimport { ListenerHelper } from \"../../utils/ListenerHelper\";\r\nimport { WindowResizeHelper } from \"../../utils/WindowResizeHelper\";\r\n\r\nimport \"@styles/c-animationLayer.scss\";\r\n\r\n// todo static typing\r\ndeclare var lottie: any;\r\ntype LottieAnimation = any;\r\n\r\ninterface Props {\r\n className?: string;\r\n}\r\n\r\ninterface State {\r\n isAnimationStarted: boolean;\r\n}\r\n\r\nexport class AnimationLayerComponent extends React.Component implements AnimationLayer {\r\n\r\n private static DATA_SRC_ATTRIBUTE = \"data-src\";\r\n\r\n private observer: AnimationLayerObserver;\r\n\r\n private lottieContainer: HTMLElement;\r\n private animations: {[src: string]: LottieAnimation} = {};\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isAnimationStarted: false\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n this.lottieContainer = element}\r\n />\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n ListenerHelper.addEventListener(\"window\", \"resize\", this.handleWindowResize);\r\n }\r\n\r\n componentWillUnmount() {\r\n ListenerHelper.removeEventListener(\"window\", \"resize\", this.handleWindowResize);\r\n }\r\n\r\n // start of AnimationLayer implementation\r\n clearAllAnimations(): void {\r\n for (const src of Object.keys(this.animations)) {\r\n this.removeAnimation(src);\r\n }\r\n }\r\n\r\n loadAnimation(src: string, animationJSON: any, animationBlur: string): void {\r\n const animationContainer = this.createAndAppendAnimationContainer(src, animationBlur);\r\n const animation = lottie.loadAnimation({\r\n container: animationContainer,\r\n renderer: \"svg\",\r\n loop: false,\r\n autoplay: false,\r\n animationData: animationJSON\r\n });\r\n\r\n this.animations[src] = animation;\r\n\r\n if (this.observer) {\r\n animation.onComplete = () => {\r\n this.observer.onEnded();\r\n };\r\n this.setState({\r\n isAnimationStarted: false\r\n });\r\n\r\n animation.onEnterFrame = () => {\r\n if (!this.state.isAnimationStarted) {\r\n this.setState({\r\n isAnimationStarted: true\r\n });\r\n this.observer.onStarted();\r\n }\r\n };\r\n }\r\n\r\n }\r\n\r\n removeAnimation(src: string): void {\r\n const animation = this.animations[src];\r\n delete this.animations[src];\r\n\r\n animation && animation.destroy();\r\n\r\n const animationContainer = this.lottieContainer.querySelector(`[${AnimationLayerComponent.DATA_SRC_ATTRIBUTE}=\"${src}\"]`);\r\n animationContainer && animationContainer.parentNode.removeChild(animationContainer);\r\n }\r\n\r\n getAnimationCurrentTime(src: string): number {\r\n const animation = this.animations[src];\r\n return animation && animation.currentFrame / animation.frameRate;\r\n }\r\n\r\n getAnimationDuration(src: string): number {\r\n const animation = this.animations[src];\r\n return animation && animation.totalFrames / animation.frameRate;\r\n }\r\n\r\n getIsAnimationPlaying(src: string): boolean {\r\n const animation = this.animations[src];\r\n return animation && !animation.isPaused;\r\n }\r\n\r\n playAnimation(src: string): void {\r\n const animation = this.animations[src];\r\n animation && animation.play();\r\n }\r\n\r\n pauseAnimation(src: string): void {\r\n const animation = this.animations[src];\r\n animation && animation.pause();\r\n }\r\n\r\n moveTo(animationSrc: string, timeMillis: number, play: boolean = false): void {\r\n const animationItem = this.animations[animationSrc];\r\n if (play) {\r\n animationItem.goToAndPlay(timeMillis, false);\r\n } else {\r\n animationItem.goToAndStop(timeMillis, false);\r\n }\r\n }\r\n\r\n registerObserver(observer: AnimationLayerObserver): void {\r\n this.observer = observer;\r\n }\r\n\r\n // end of AnimationLayer implementation\r\n\r\n private createAndAppendAnimationContainer(animationSrc: string, animationBlur: string): HTMLElement {\r\n const container = document.createElement(\"div\");\r\n container.setAttribute(AnimationLayerComponent.DATA_SRC_ATTRIBUTE, animationSrc);\r\n container.setAttribute(\"class\", \"c-animationLayer__animationContainer\");\r\n container.style.setProperty(\"--animation-blur\", animationBlur);\r\n\r\n const insideIframe = window.self !== window.top;\r\n if (insideIframe) {\r\n // without position: fixed animations in Safari on iphone in iframe are not scaled correctly\r\n container.style.position = \"fixed\";\r\n if (/Edge/.test(navigator.userAgent)) {\r\n // without position: absolute animations in Edge are not scaled correctly\r\n container.style.position = \"absolute\";\r\n }\r\n }\r\n\r\n this.lottieContainer.appendChild(container);\r\n return container;\r\n }\r\n\r\n private handleWindowResize = () => WindowResizeHelper.doOnResize(() => this.resizeAllAnimations());\r\n\r\n private resizeAllAnimations() {\r\n for (const src of Object.keys(this.animations)) {\r\n this.animations[src].resize();\r\n }\r\n }\r\n}\r\n","import { CTALayer } from \"@manager/layer/CTALayer\";\r\nimport { CachedCTAResource } from \"@manager/loader/scenarioLoader/CachedCTAResource\";\r\nimport React from \"react\";\r\nimport { CTAHandle } from \"../../api/cta/ctaFunction/CTAHandle\";\r\nimport { AspectRatioHelper } from \"../../utils/AspectRatioHelper\";\r\nimport { WindowResizeHelper } from \"../../utils/WindowResizeHelper\";\r\n\r\nimport \"@styles/c-ctaLayer.scss\";\r\n\r\ninterface Props {\r\n className?: string;\r\n}\r\n\r\ninterface State {\r\n aspectRatio?: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\ninterface InitializedCTA {\r\n ctaElement: HTMLElement;\r\n handle: CTAHandle;\r\n}\r\n\r\nexport class CTALayerComponent extends React.Component implements CTALayer {\r\n\r\n private static DATA_HASH_CODE_ATTR = \"data-hash-code\";\r\n\r\n private layer: HTMLElement;\r\n private container: HTMLElement;\r\n\r\n private reusableCTAs: {[hashCode: number]: InitializedCTA} = {};\r\n private ctaHandles: {[id: number]: CTAHandle} = {};\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n this.layer = elmt}\r\n >\r\n this.container = elmt}\r\n style={{\r\n width: `${this.state.width}px`,\r\n height: `${this.state.height}px`\r\n }}\r\n />\r\n \r\n );\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.handleWindowResize);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.handleWindowResize);\r\n }\r\n\r\n // start of CTALayer implementation\r\n setAspectRatio(aspectRatio: number) {\r\n this.setState({\r\n aspectRatio,\r\n ...AspectRatioHelper.calculateDimensions(aspectRatio, this.layer.clientWidth, this.layer.clientHeight)\r\n });\r\n }\r\n\r\n loadCTA(hashCode: number, isReusable: boolean, ctaId: number, ctaResource: CachedCTAResource, ctaCustomAttributes: any): void {\r\n const existingCTA = this.reusableCTAs[hashCode];\r\n if (existingCTA) {\r\n this.container.appendChild(existingCTA.ctaElement);\r\n this.ctaHandles[ctaId] = existingCTA.handle;\r\n } else {\r\n\r\n const ctaElement = this.createCTAElement(hashCode, ctaResource.ctaHtml);\r\n this.container.appendChild(ctaElement);\r\n \r\n const handle = ctaResource.ctaFunction(ctaId, ctaElement, ctaCustomAttributes);\r\n this.ctaHandles[ctaId] = handle;\r\n \r\n if (isReusable) {\r\n this.reusableCTAs[hashCode] = { ctaElement, handle };\r\n }\r\n }\r\n }\r\n\r\n removeCTA(ctaId: number, hashCode: number): void {\r\n delete this.ctaHandles[ctaId];\r\n\r\n const ctaBoard = this.container && this.container.querySelector(`[${CTALayerComponent.DATA_HASH_CODE_ATTR}=\"${hashCode}\"]`);\r\n ctaBoard && ctaBoard.parentNode.removeChild(ctaBoard);\r\n }\r\n\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void {\r\n const handle = this.ctaHandles[ctaId];\r\n handle && handle.action(actionId, args);\r\n }\r\n // end of CTALayer implementation\r\n\r\n private createCTAElement(hashCode: number, ctaHTML: string): HTMLElement {\r\n const element = document.createElement(\"div\");\r\n element.setAttribute(CTALayerComponent.DATA_HASH_CODE_ATTR, `${hashCode}`);\r\n element.setAttribute(\"class\", \"c-ctaLayer__element\");\r\n element.innerHTML = ctaHTML;\r\n return element;\r\n }\r\n\r\n private recalculateDimensions() {\r\n if (this.layer && this.state.aspectRatio) {\r\n this.setState({\r\n ...AspectRatioHelper.calculateDimensions(this.state.aspectRatio, this.layer.clientWidth, this.layer.clientHeight)\r\n });\r\n }\r\n }\r\n\r\n private handleWindowResize = () => {\r\n WindowResizeHelper.doOnResize(() => this.recalculateDimensions());\r\n }\r\n\r\n}\r\n","import { ControlsLayer } from \"@manager/layer/ControlsLayer\";\r\nimport { ControlsLayerObserver } from \"@manager/layerObserver/ControlsLayerObserver\";\r\nimport React from \"react\";\r\nimport { VintomError } from \"src/api/model/error/VintomError\";\r\nimport { I18n } from \"../../i18n/i18n\";\r\nimport { PlayerControls } from \"../../model/playerConfiguration/PlayerControls\";\r\nimport { ScenarioElement } from \"../../model/playerConfiguration/ScenarioElement\";\r\nimport { Subtitle } from \"../../model/playerConfiguration/Subtitle\";\r\nimport { QualityLevel } from \"../../model/qualityLevel/QualityLevel\";\r\nimport { ScenarioPath } from \"../../model/scenarioPath/ScenarioPath\";\r\nimport { SubtitlesText } from \"../../model/subtitles/SubtitlesText\";\r\nimport { ScenarioElementPlaybackState } from \"../../uiModel/playback/ScenarioElementPlaybackState\";\r\nimport { SocialShareConfiguration } from \"../../uiModel/socialShare/SocialShareConfiguration\";\r\nimport { DesktopControlsLayerComponent } from \"./controls/desktop/DesktopControlsLayerComponent\";\r\nimport { MobileControlsLayerComponent } from \"./controls/mobile/MobileControlsLayerComponent\";\r\n\r\nimport \"@styles/c-controlsLayer.scss\";\r\n\r\ninterface Props {\r\n className?: string;\r\n i18n: I18n;\r\n isMobileDevice: boolean;\r\n isFullscreenSupported: boolean;\r\n isFullscreen: boolean;\r\n socialShareConfiguration: SocialShareConfiguration;\r\n}\r\n\r\ninterface State {\r\n configuration?: PlayerControls;\r\n isAdminMode: boolean;\r\n qualityLevels?: QualityLevel[];\r\n bandwidth?: number;\r\n isLoading: boolean;\r\n isPlaybackBlockingCTADisplayed: boolean;\r\n\r\n totalTime: number;\r\n ellapsedTime: number;\r\n bufferedTime: number;\r\n\r\n playbackState: ScenarioElementPlaybackState;\r\n scenarioPath: ScenarioPath;\r\n\r\n volume: number;\r\n isVolumeMuted: boolean;\r\n\r\n subtitleSources: Subtitle[];\r\n selectedSubtitlesSrc?: string;\r\n subtitlesText?: SubtitlesText;\r\n loadingPageVisible: boolean;\r\n message?: string | VintomError;\r\n disableIcon: boolean;\r\n}\r\n\r\nexport class ControlsLayerComponent extends React.Component implements ControlsLayer {\r\n\r\n private static DEFAULT_VOLUME_AFTER_UNMUTE = 0.5;\r\n\r\n private observer: ControlsLayerObserver;\r\n private deviceSpecificLayer: DesktopControlsLayerComponent | MobileControlsLayerComponent;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loadingPageVisible: false,\r\n isLoading: true,\r\n isAdminMode: false,\r\n isPlaybackBlockingCTADisplayed: false,\r\n\r\n playbackState: \"paused\",\r\n scenarioPath: undefined,\r\n\r\n totalTime: 0,\r\n ellapsedTime: 0,\r\n bufferedTime: 0,\r\n\r\n volume: 0,\r\n isVolumeMuted: false,\r\n\r\n subtitleSources: [],\r\n disableIcon: true\r\n };\r\n }\r\n\r\n render() {\r\n const {\r\n configuration,\r\n isAdminMode,\r\n bandwidth,\r\n qualityLevels,\r\n isLoading,\r\n isPlaybackBlockingCTADisplayed,\r\n\r\n totalTime,\r\n ellapsedTime,\r\n bufferedTime,\r\n\r\n playbackState,\r\n scenarioPath,\r\n\r\n volume,\r\n isVolumeMuted,\r\n\r\n subtitleSources,\r\n selectedSubtitlesSrc,\r\n subtitlesText,\r\n loadingPageVisible,\r\n message,\r\n disableIcon\r\n } = this.state;\r\n\r\n return (\r\n
\r\n {configuration &&\r\n\r\n (this.props.isMobileDevice ?\r\n this.deviceSpecificLayer = element}\r\n i18n={this.props.i18n}\r\n configuration={configuration}\r\n isLoading={isLoading}\r\n isCTADisplayed={isPlaybackBlockingCTADisplayed}\r\n socialShareConfiguration={this.props.socialShareConfiguration}\r\n playIconOnPoster={configuration.playIconOnPoster}\r\n disableIcon={disableIcon}\r\n\r\n playbackState={playbackState}\r\n onPlay={() => this.play()}\r\n onPause={() => this.pause()}\r\n onReplay={() => this.replay()}\r\n onSeekStart={() => this.startSeek()}\r\n onSeekEnd={() => this.endSeek()}\r\n\r\n scenarioPath={scenarioPath}\r\n totalTime={totalTime}\r\n ellapsedTime={ellapsedTime}\r\n bufferedTime={bufferedTime}\r\n onSeekTo={(time) => this.handleSeekTo(time)}\r\n onJumpToScenarioElement={(scElement, progress) => this.jumpToScenarioElement(scElement, progress)}\r\n\r\n isVolumeMuted={isVolumeMuted}\r\n onToggleMuted={() => this.onToggleMuted()}\r\n\r\n subtitles={subtitleSources}\r\n selectedSubtitlesSrc={selectedSubtitlesSrc}\r\n subtitlesText={subtitlesText}\r\n onSubtitleSourceSelected={(subtitle) => this.selectSubtitleSource(subtitle)}\r\n\r\n isFullscreenSupported={this.props.isFullscreenSupported}\r\n isFullscreen={this.props.isFullscreen}\r\n onToggleFullscreen={() => this.toggleFullscreen()}\r\n \r\n message={message}\r\n onSendError={(err) => this.observer.onSendError(err)}\r\n /> :\r\n this.deviceSpecificLayer = element}\r\n i18n={this.props.i18n}\r\n configuration={configuration}\r\n isAdminMode={isAdminMode}\r\n bandwidth={bandwidth}\r\n qualityLevels={qualityLevels}\r\n isLoading={isLoading}\r\n isCTADisplayed={isPlaybackBlockingCTADisplayed}\r\n socialShareConfiguration={this.props.socialShareConfiguration}\r\n playIconOnPoster={configuration.playIconOnPoster}\r\n disableIcon={disableIcon}\r\n\r\n playbackState={playbackState}\r\n onPlay={() => this.play()}\r\n onPause={() => this.pause()}\r\n onReplay={() => this.replay()}\r\n onSeekStart={() => this.startSeek()}\r\n onSeekEnd={() => this.endSeek()}\r\n\r\n scenarioPath={scenarioPath}\r\n totalTime={totalTime}\r\n ellapsedTime={ellapsedTime}\r\n bufferedTime={bufferedTime}\r\n onSeekTo={(time) => this.handleSeekTo(time)}\r\n onJumpToScenarioElement={(scElement, progress) => this.jumpToScenarioElement(scElement, progress)}\r\n\r\n isVolumeMuted={isVolumeMuted}\r\n volume={volume}\r\n onVolumeChange={(vol) => this.changeVolume(vol)}\r\n onToggleMuted={() => this.onToggleMuted()}\r\n onUnMute={() => this.unMute()}\r\n\r\n subtitles={subtitleSources}\r\n selectedSubtitlesSrc={selectedSubtitlesSrc}\r\n subtitlesText={subtitlesText}\r\n onSubtitleSourceSelected={(subtitle) => this.selectSubtitleSource(subtitle)}\r\n\r\n isFullscreenSupported={this.props.isFullscreenSupported}\r\n isFullscreen={this.props.isFullscreen}\r\n onToggleFullscreen={() => this.toggleFullscreen()}\r\n loadingPageVisible={loadingPageVisible}\r\n message={message}\r\n onSendError={(err) => this.observer.onSendError(err)}\r\n />)\r\n }\r\n
\r\n );\r\n }\r\n\r\n // start of ControlsLayer implementation\r\n setConfiguration(configuration: PlayerControls, isAdminMode: boolean) {\r\n this.setState({\r\n configuration,\r\n isAdminMode\r\n });\r\n }\r\n\r\n registerObserver(observer: ControlsLayerObserver): void {\r\n this.observer = observer;\r\n }\r\n\r\n resetScenarioElement(scenarioPath: ScenarioPath, subtitles?: Subtitle[]): void {\r\n this.setState({\r\n scenarioPath,\r\n bufferedTime: 0,\r\n ellapsedTime: 0,\r\n subtitleSources: subtitles,\r\n subtitlesText: undefined\r\n });\r\n }\r\n\r\n play() {\r\n this.setState({\r\n playbackState: \"playing\",\r\n disableIcon: false\r\n });\r\n this.observer.onPlay();\r\n }\r\n\r\n pause() {\r\n this.setState({\r\n playbackState: \"paused\"\r\n });\r\n this.observer.onPause();\r\n }\r\n\r\n showLoader(): void {\r\n this.setState({\r\n isLoading: true\r\n });\r\n }\r\n\r\n hideLoader(): void {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n moveTo(time: number): void {\r\n this.setState({\r\n ellapsedTime: time\r\n });\r\n }\r\n\r\n updateBufferedTime(time: number): void {\r\n this.setState({\r\n bufferedTime: time\r\n });\r\n }\r\n\r\n setVolume(volume: number): void {\r\n this.setState({\r\n volume\r\n });\r\n }\r\n\r\n setIsMuted(isMuted: boolean): void {\r\n this.setState({\r\n isVolumeMuted: isMuted\r\n });\r\n }\r\n\r\n setSubtitleSources(subtitleSources: Subtitle[]) {\r\n this.setState({\r\n subtitleSources\r\n });\r\n }\r\n\r\n selectSubtitleSource(subtitle: Subtitle): void {\r\n this.setState({\r\n selectedSubtitlesSrc: subtitle && subtitle.source\r\n });\r\n this.observer.onSubtitleSourceSelected(subtitle);\r\n }\r\n\r\n setTotalScenarioTime(totalTime: number) {\r\n this.setState({\r\n totalTime\r\n });\r\n }\r\n\r\n displaySubtitles(subtitles: SubtitlesText) {\r\n this.setState({\r\n subtitlesText: subtitles\r\n });\r\n }\r\n\r\n scenarioEnded() {\r\n if ([\"seekingAfterPause\", \"seekingAfterPlay\"].indexOf(this.state.playbackState) > -1) {\r\n return;\r\n }\r\n if (this.state.scenarioPath.isLastPart) {\r\n this.setState({\r\n playbackState: \"scenarioFinished\"\r\n });\r\n } else {\r\n this.setState({\r\n playbackState: \"elementFinished\"\r\n });\r\n }\r\n }\r\n\r\n userInteractionEnded() {\r\n this.deviceSpecificLayer.handleUserInteractionEnded();\r\n }\r\n\r\n userInteractedWithPlayer() {\r\n this.deviceSpecificLayer.handleUserInteractedWithPlayer();\r\n }\r\n\r\n userClickedPlayer() {\r\n this.deviceSpecificLayer.handleUserClickedPlayer();\r\n }\r\n\r\n showPlayerInfoTooltip(x: number, y: number) {\r\n if (!this.props.isMobileDevice) {\r\n (this.deviceSpecificLayer as DesktopControlsLayerComponent).showPlayerInfoTooltip(x, y);\r\n }\r\n }\r\n\r\n showMessage(message: string | VintomError): void {\r\n this.setState({\r\n message\r\n });\r\n }\r\n\r\n showLoadingPage(loadingPageVisible: boolean): void {\r\n this.setState({\r\n loadingPageVisible\r\n });\r\n }\r\n\r\n setBandwidth(bandwidth: number): void {\r\n this.setState({\r\n bandwidth\r\n });\r\n }\r\n\r\n setQualityLevels(qualityLevels: QualityLevel[]): void {\r\n this.setState({\r\n qualityLevels\r\n });\r\n }\r\n\r\n setIsPlaybackBlockingCTADisplayed(isPlaybackBlockingCTADisplayed: boolean): void {\r\n this.setState({\r\n isPlaybackBlockingCTADisplayed\r\n });\r\n }\r\n // end of ControlsLayer implementation\r\n\r\n private startSeek() {\r\n this.observer.onSeekStart();\r\n if (this.state.playbackState === \"playing\") {\r\n this.setState({\r\n playbackState: \"seekingAfterPlay\"\r\n });\r\n } else {\r\n this.setState({\r\n playbackState: \"seekingAfterPause\"\r\n });\r\n }\r\n }\r\n\r\n private endSeek() {\r\n const { ellapsedTime, totalTime, scenarioPath } = this.state;\r\n if (ellapsedTime >= totalTime) {\r\n this.observer.onReloadFrame();\r\n if (scenarioPath.isLastPart) {\r\n this.setState({\r\n playbackState: \"scenarioFinished\"\r\n });\r\n } else {\r\n this.setState({\r\n playbackState: \"elementFinished\"\r\n });\r\n }\r\n } else if (this.state.playbackState === \"seekingAfterPlay\") {\r\n this.observer.onPlay();\r\n this.setState({\r\n playbackState: \"playing\"\r\n });\r\n } else {\r\n this.observer.onReloadFrame();\r\n this.setState({\r\n playbackState: \"paused\"\r\n });\r\n }\r\n }\r\n\r\n private handleSeekTo(time: number) {\r\n this.observer.onSeekTo(time);\r\n }\r\n\r\n private replay() {\r\n this.observer.onJumpToScenarioElement(this.state.scenarioPath.initialElement, 0);\r\n }\r\n\r\n private changeVolume(volume: number) {\r\n const isVolumeMuted = volume === 0;\r\n this.setState({\r\n volume,\r\n isVolumeMuted\r\n });\r\n this.observer.onVolumeChange(volume);\r\n this.observer.onMutedChange(isVolumeMuted);\r\n }\r\n\r\n private onToggleMuted() {\r\n this.updateMuted(!this.state.isVolumeMuted);\r\n }\r\n\r\n private unMute() {\r\n this.updateMuted(false);\r\n }\r\n\r\n private updateMuted(isVolumeMuted: boolean) {\r\n this.observer.onMutedChange(isVolumeMuted);\r\n this.setState({\r\n isVolumeMuted\r\n });\r\n\r\n if (!isVolumeMuted) {\r\n const volume = this.state.volume || ControlsLayerComponent.DEFAULT_VOLUME_AFTER_UNMUTE;\r\n this.observer.onVolumeChange(volume);\r\n this.setState({\r\n volume\r\n });\r\n }\r\n }\r\n\r\n private jumpToScenarioElement(scElement: ScenarioElement, progress: number): void {\r\n this.observer.onJumpToScenarioElement(scElement, progress);\r\n }\r\n\r\n private toggleFullscreen() {\r\n this.observer.onToggleFullscreen();\r\n }\r\n\r\n}\r\n","import { MusicLayer } from \"@manager/layer/MusicLayer\";\r\nimport React from \"react\";\r\n\r\n// tslint:disable:max-classes-per-file\r\n\r\n// music should be hosted from storage with new API (support for byte range functionality is needed - Accept-Ranges: bytes)\r\n\r\ninterface Props {\r\n className?: string;\r\n}\r\n\r\nexport class MusicLayerComponent extends React.Component implements MusicLayer {\r\n private static JUST_BEFORE_END = 0.01;\r\n private audioNode: HTMLAudioElement;\r\n private fadeOutHandler: any;\r\n private startTimeShift: number;\r\n private endTimeShift: number;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n \r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n\r\n changeSource(src: string): void {\r\n this.audioNode.src = src;\r\n this.audioNode.load();\r\n }\r\n\r\n setMusicTime(startTime: number, endTime: number): void {\r\n this.startTimeShift = startTime;\r\n this.endTimeShift = endTime;\r\n } \r\n\r\n fadeOut(): void {\r\n const initialVolume = this.audioNode.volume;\r\n this.fadeOutHandler = setInterval(\r\n () => {\r\n this.audioNode.volume -= this.audioNode.volume > 0.01 ? .01 : 0;\r\n if (this.audioNode.volume <= 0.01) {\r\n clearInterval(this.fadeOutHandler);\r\n this.audioNode.pause();\r\n // reset volume (needed e.g. on seek bar change)\r\n this.audioNode.volume = initialVolume;\r\n }\r\n },\r\n 20); \r\n }\r\n \r\n play(videoCurrentTime: number, videoDuration: number): void {\r\n clearInterval(this.fadeOutHandler);\r\n this.audioNode.play();\r\n this.audioNode.pause();\r\n if (videoCurrentTime > this.startTimeShift && videoCurrentTime < (videoDuration - this.endTimeShift) && this.audioNode.src !== \"\") {\r\n this.audioNode.pause();\r\n this.audioNode.play();\r\n }\r\n }\r\n pause(): void {\r\n if (this.audioNode.src !== \"\") {\r\n this.audioNode.pause();\r\n }\r\n }\r\n\r\n moveTo(time: number): void {\r\n if (this.audioNode.src !== \"\") {\r\n this.audioNode.load();\r\n this.audioNode.currentTime = time - this.startTimeShift - MusicLayerComponent.JUST_BEFORE_END;\r\n }\r\n }\r\n\r\n changeVolume(volume: number): void {\r\n this.audioNode.volume = volume;\r\n }\r\n\r\n changeMuted(isMuted: boolean): void {\r\n this.audioNode.muted = (isMuted);\r\n }\r\n\r\n initializeLayer(): void {\r\n }\r\n}\r\n\r\n// tslint:enable:max-classes-per-file\r\n","import { PosterLayer } from \"@manager/layer/PosterLayer\";\r\nimport React from \"react\";\r\nimport { AspectRatioHelper } from \"../../utils/AspectRatioHelper\";\r\nimport { WindowResizeHelper } from \"../../utils/WindowResizeHelper\";\r\n\r\nimport \"@styles/c-posterLayer.scss\";\r\n\r\ninterface Props {\r\n className?: string;\r\n}\r\n\r\ninterface State {\r\n aspectRatio?: number;\r\n width: number;\r\n height: number;\r\n posterUrl?: string;\r\n}\r\n\r\nexport class PosterLayerComponent extends React.Component implements PosterLayer {\r\n\r\n private container: HTMLElement;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n render() {\r\n const { className } = this.props;\r\n return (\r\n this.container = element}\r\n >\r\n {this.state.posterUrl &&\r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.handleWindowResize);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.handleWindowResize);\r\n }\r\n\r\n // start of PosterLayer implementation\r\n setAspectRatio(aspectRatio: number) {\r\n this.setState({\r\n aspectRatio,\r\n ...AspectRatioHelper.calculateDimensions(aspectRatio, this.container.clientWidth, this.container.clientHeight)\r\n });\r\n }\r\n\r\n showPoster(url: string): void {\r\n this.setState({\r\n posterUrl: url\r\n });\r\n }\r\n\r\n hidePoster(): void {\r\n this.setState({\r\n posterUrl: undefined\r\n });\r\n }\r\n\r\n getIsShowingPoster(): boolean {\r\n return !!this.state.posterUrl;\r\n }\r\n // end of PosterLayer implementation\r\n\r\n private recalculateDimensions() {\r\n if (this.container && this.state.aspectRatio) {\r\n this.setState({\r\n ...AspectRatioHelper.calculateDimensions(this.state.aspectRatio, this.container.clientWidth, this.container.clientHeight)\r\n });\r\n }\r\n }\r\n\r\n private handleWindowResize = () => {\r\n WindowResizeHelper.doOnResize(() => this.recalculateDimensions());\r\n }\r\n\r\n}\r\n","import { VideoLayer } from \"@manager/layer/VideoLayer\";\r\nimport { VideoLayerObserver } from \"@manager/layerObserver/VideoLayerObserver\";\r\nimport React from \"react\";\r\nimport { VintomError } from \"../../api/model/error/VintomError\";\r\nimport { Source } from \"../../model/playerConfiguration/Source\";\r\nimport { Subtitle } from \"../../model/playerConfiguration/Subtitle\";\r\nimport { QualityLevel } from \"../../model/qualityLevel/QualityLevel\";\r\nimport { SubtitlesText } from \"../../model/subtitles/SubtitlesText\";\r\nimport { BrowserFeatureDetector } from \"../../utils/BrowserFeatureDetector\";\r\nimport { ListenerHelper } from \"../../utils/ListenerHelper\";\r\n\r\nimport \"@styles/c-videoLayer.scss\";\r\n\r\n// tslint:disable:max-classes-per-file\r\nlet initializeFadeout = true;\r\nlet initializeMusicPlay = true;\r\nlet turnOffFadeOut = false;\r\ndeclare var videojs: typeof import(\"video.js\").default;\r\ntype Player = import(\"video.js\").default.Player;\r\n\r\ntype PlayPauseRequest = \"play\" | \"pause\" | \"playPause\";\r\ntype PlayPauseRequestStatus = \"initial\" | \"inProgress\" | \"success\" | \"error\";\r\n\r\n/**\r\n * Calling pause while play is in progress results in error\r\n * Seeking while video is not playing to a location that is not buffered\r\n * does not reload current frame - we call play and pause to force reloading the frame.\r\n * There could be a better solution but I haven't found anything.\r\n */\r\nclass PlayPauseRequestQueue {\r\n\r\n private lastRequest: PlayPauseRequest;\r\n private lastStatus: PlayPauseRequestStatus = \"initial\";\r\n private last: Promise = Promise.resolve();\r\n\r\n constructor(\r\n private play: () => Promise,\r\n private pause: () => void,\r\n private onPlay: () => void,\r\n private onPause: () => void) { }\r\n\r\n get lastQueuedRequest() {\r\n return this.lastRequest;\r\n }\r\n\r\n push(request: PlayPauseRequest) {\r\n switch (this.lastStatus) {\r\n case \"initial\":\r\n case \"error\":\r\n case \"success\":\r\n this.doPush(request);\r\n break;\r\n case \"inProgress\":\r\n if (request === this.lastRequest && request === \"playPause\") {\r\n this.doPush(request);\r\n }\r\n if (request !== this.lastRequest && !(this.lastRequest === \"playPause\" && request === \"pause\")) {\r\n this.doPush(request);\r\n }\r\n break;\r\n default:\r\n throw new Error(`Unsupported PlayPauseRequestStatus '${this.lastStatus}'`);\r\n }\r\n }\r\n\r\n private doPush(request: PlayPauseRequest) {\r\n let action: () => Promise;\r\n switch (request) {\r\n case \"pause\":\r\n action = () => Promise.resolve().then(() => this.pause()).then(() => this.onPause());\r\n break;\r\n case \"play\":\r\n action = () => this.play().then(() => this.onPlay());\r\n break;\r\n case \"playPause\":\r\n action = () => this.play().then(() => this.pause());\r\n break;\r\n default:\r\n throw new Error(`Unsupported PlayPauseRequest '${request}'`);\r\n }\r\n\r\n this.lastStatus = \"inProgress\";\r\n this.lastRequest = request;\r\n this.last = this.last\r\n .then(action)\r\n .then(() => { this.lastStatus = \"success\"; }, () => { this.lastStatus = \"error\"; });\r\n }\r\n}\r\n\r\n/**\r\n * In theory we should be able to rely on 'waiting', 'playing' events to know when the player is waiting\r\n * In practice that doesn't work on mobile. 'waiting' event is fired correctly but 'playing' is fired way before\r\n * the video starts playing. That leads to situations where loader is not displayed but the video isn't playing either.\r\n */\r\nclass ProgressChecker {\r\n isProgressing: boolean = false;\r\n\r\n private static INTERVAL = 100;\r\n\r\n private lastSeekTime: number;\r\n private intervalHandle: number;\r\n\r\n constructor(private player: videojs.default.Player) {\r\n this.initialize();\r\n }\r\n\r\n cleanUp() {\r\n if (this.intervalHandle !== undefined) {\r\n clearInterval(this.intervalHandle);\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.intervalHandle = window.setInterval(\r\n () => {\r\n const newSeekTime = this.player.currentTime();\r\n if (!this.player.seeking()) {\r\n this.isProgressing = newSeekTime !== this.lastSeekTime;\r\n }\r\n this.lastSeekTime = newSeekTime;\r\n },\r\n ProgressChecker.INTERVAL);\r\n }\r\n}\r\n\r\ninterface Props {\r\n isFullscreen: boolean;\r\n className?: string;\r\n}\r\ninterface State {\r\n isVideoStarted: boolean;\r\n}\r\n\r\nexport class VideoLayerComponent extends React.Component implements VideoLayer {\r\n\r\n private static SEEK_AFTER_LOAD_INTERVAL = 50;\r\n private static SEEK_AFTER_LOAD_CLOSE_ENOUGH = 0.1;\r\n private static DEFAULT_VTT_CUES_VERTICAL_POSITION = 100;\r\n private static JUST_BEFORE_END = 0.01;\r\n\r\n private static XMPEGURL_MIME_TYPE = \"application/x-mpegurl\";\r\n private static DASH_MIME_TYPE = \"application/dash+xml\";\r\n private static MPEG4_MIME_TYPE = \"video/mp4\";\r\n\r\n private static PREFERRED_MIME_TYPE_ORDER = [\r\n VideoLayerComponent.DASH_MIME_TYPE,\r\n VideoLayerComponent.XMPEGURL_MIME_TYPE,\r\n VideoLayerComponent.MPEG4_MIME_TYPE];\r\n\r\n private progressChecker: ProgressChecker;\r\n private player: Player;\r\n private hlsHandler: any;\r\n private videoNode: HTMLVideoElement;\r\n private textTracksBySource: { [source: string]: TextTrack } = {};\r\n private observer: VideoLayerObserver;\r\n private playPauseRequestQueue: PlayPauseRequestQueue;\r\n private currentFrameTime: number;\r\n private startTimeShift: number;\r\n private endTimeShift: number;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isVideoStarted: false\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n this.videoNode = node}\r\n className=\"video-js\"\r\n />\r\n
\r\n
\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n ListenerHelper.addEventListener(\"window\", \"resize\", this.requestQualityChange);\r\n }\r\n\r\n componentWillUnmount() {\r\n ListenerHelper.removeEventListener(\"window\", \"resize\", this.requestQualityChange);\r\n if (this.progressChecker) {\r\n this.progressChecker.cleanUp;\r\n }\r\n }\r\n\r\n // start of VideoLayer implementation\r\n loadVideo(sources: Source[], subtitles: Subtitle[], progress: number): Promise {\r\n this.currentFrameTime = 0;\r\n this.playPauseRequestQueue = new PlayPauseRequestQueue(\r\n () => this.player.play(),\r\n () => this.player.pause(),\r\n () => this.observer.onPlay(),\r\n () => this.observer.onPause());\r\n\r\n this.player.show();\r\n const canPlay =\r\n new Promise((resolve) => {\r\n /**\r\n * Calling play on videojs straight after 'loadedmetadata' (without waiting for 'canplay') causes a race in videojs\r\n * and playback sometimes stalls on Chrome (VIN-225)\r\n * (This happens for DASH sources only)\r\n *\r\n * On Safari canplay is fired first after user interacts with the player\r\n */\r\n const readyEventName = (() => {\r\n if (\r\n BrowserFeatureDetector.isChrome &&\r\n !BrowserFeatureDetector.isMobileDevice &&\r\n !BrowserFeatureDetector.isAndroid\r\n ) {\r\n return \"canplay\";\r\n }\r\n return \"loadedmetadata\";\r\n })();\r\n\r\n this.player.one(readyEventName, () => {\r\n this.hlsHandler = (this.player.tech({ IWillNotUseThisInPlugins: true }) as any).vhs;\r\n this.seekAfterLoad(progress);\r\n resolve();\r\n });\r\n });\r\n\r\n this.player.src(this.prepareSources(sources));\r\n\r\n let loadedTracks: Promise[];\r\n canPlay.then(() =>\r\n loadedTracks = subtitles.map((subtitle) => {\r\n const track = this.player.addRemoteTextTrack({ src: subtitle.source }, false);\r\n return new Promise((resolve) => {\r\n track.addEventListener(\"load\", () => {\r\n this.textTracksBySource[subtitle.source] = track.track;\r\n track.track.addEventListener(\"cuechange\", () => this.handleTextTrack(track.track));\r\n resolve();\r\n });\r\n });\r\n })\r\n );\r\n\r\n const ready = canPlay.then(() => Promise.all(loadedTracks).then(() => {}));\r\n\r\n this.setState({\r\n isVideoStarted: false\r\n });\r\n\r\n return ready;\r\n }\r\n\r\n getCurrentSeekTime(): number {\r\n return this.player.currentTime();\r\n }\r\n\r\n getCurrentFrameTime(): number {\r\n if (!this.player.seeking()) {\r\n this.currentFrameTime = this.getCurrentSeekTime();\r\n }\r\n return this.currentFrameTime;\r\n }\r\n\r\n getTotalTime(): number {\r\n return this.player.duration();\r\n }\r\n\r\n getBufferedTime(): number {\r\n const bufferedRanges = this.getBufferedRanges();\r\n bufferedRanges.sort((r1, r2) => r1.start - r2.start);\r\n\r\n const currentTime = this.player.currentTime();\r\n const currentBufferedRange = bufferedRanges.find((range) => range.start <= currentTime && range.end >= currentTime);\r\n return currentBufferedRange && currentBufferedRange.end || 0;\r\n }\r\n\r\n getVolume(): number {\r\n return this.player.volume();\r\n }\r\n\r\n getIsPlaying(): boolean {\r\n return this.playPauseRequestQueue.lastQueuedRequest === \"play\" && !this.player.ended() && !this.player.seeking();\r\n }\r\n\r\n get isProgressing(): boolean {\r\n return this.progressChecker && this.progressChecker.isProgressing;\r\n }\r\n\r\n getIsWaiting(): boolean {\r\n return !this.isProgressing && !this.player.paused() && !this.player.ended();\r\n }\r\n\r\n getIsFullyLoaded(): boolean {\r\n return !!this.player.played().length;\r\n }\r\n\r\n play(): void {\r\n if (!this.player.ended()) {\r\n this.playPauseRequestQueue.push(\"play\");\r\n }\r\n }\r\n\r\n pause(): void {\r\n if (this.playPauseRequestQueue) {\r\n this.playPauseRequestQueue.push(\"pause\");\r\n }\r\n }\r\n\r\n moveTo(time: number): void {\r\n if (time >= this.player.duration()) {\r\n // Don't let video end while scrubbing. It's done the same way in videojs. You cannot seek to the end.\r\n // It feels like playback becomes unstable in Safari after you do that.\r\n this.player.currentTime(time - VideoLayerComponent.JUST_BEFORE_END);\r\n return;\r\n }\r\n this.player.currentTime(time);\r\n }\r\n\r\n reloadFrame(): void {\r\n const bufferedRanges = this.getBufferedRanges();\r\n const currentTime = this.player.currentTime();\r\n\r\n const isNewFrameInRange = !!bufferedRanges.find((range) => range.start <= currentTime && range.end >= currentTime);\r\n if (isNewFrameInRange) {\r\n return;\r\n }\r\n\r\n if (this.player.ended()) {\r\n this.player.currentTime(this.player.currentTime() - VideoLayerComponent.JUST_BEFORE_END);\r\n this.playPauseRequestQueue.push(\"play\");\r\n } else {\r\n this.playPauseRequestQueue.push(\"playPause\");\r\n }\r\n }\r\n\r\n changeVolume(volume: number): void {\r\n this.player.volume(volume);\r\n }\r\n\r\n changeMuted(isMuted: boolean): void {\r\n this.player.muted(isMuted);\r\n if (isMuted) {\r\n this.player.volume(0);\r\n }\r\n }\r\n\r\n getBandwidth(): number {\r\n return this.hlsHandler && this.hlsHandler.bandwidth;\r\n }\r\n\r\n getQualityLevels(): QualityLevel[] {\r\n\r\n if (this.hlsHandler) {\r\n const currentRepresentationId = this.hlsHandler.selectPlaylist().uri;\r\n const representations = this.hlsHandler.representations();\r\n\r\n return representations\r\n .map((representation) => ({\r\n id: representation.id,\r\n width: representation.width,\r\n height: representation.height,\r\n bandwidth: representation.bandwidth,\r\n isCurrent: representation.id === currentRepresentationId\r\n }))\r\n .sort((r1, r2) => r1.bandwidth - r2.bandwidth);\r\n }\r\n }\r\n\r\n initializeLayer(): void {\r\n const playerOptions: any = {\r\n resizeManager: false,\r\n html5: {\r\n nativeTextTracks: false,\r\n nativeAudioTracks: false,\r\n nativeVideoTracks: false,\r\n vhs: {\r\n overrideNative: true,\r\n useBandwidthFromLocalStorage: true\r\n }\r\n }\r\n };\r\n\r\n this.player = videojs(this.videoNode, playerOptions);\r\n this.progressChecker = new ProgressChecker(this.player);\r\n }\r\n\r\n registerObserver(observer: VideoLayerObserver): void {\r\n\r\n if (this.player) {\r\n this.player.off(\"ended\");\r\n this.player.off(\"play\");\r\n this.player.off(\"error\");\r\n this.player.off(\"durationchange\");\r\n\r\n this.observer = observer;\r\n\r\n this.player.on(\"durationchange\", () => observer.onTotalTimeChange(this.player.duration()));\r\n this.player.on(\"ended\", () => observer.onEnded());\r\n this.player.on(\"timeupdate\", () => {\r\n if (this.player.currentTime() >= this.startTimeShift && initializeMusicPlay) {\r\n if (this.getIsPlaying()) {\r\n observer.initializeMusic();\r\n initializeMusicPlay = false;\r\n }\r\n }\r\n if (this.player.currentTime() < this.startTimeShift) {\r\n initializeMusicPlay = true;\r\n }\r\n if (this.player.remainingTime() < (2 + this.endTimeShift) && initializeFadeout === true) {\r\n turnOffFadeOut = (this.player.remainingTime() < this.endTimeShift);\r\n observer.onNearTheEnd(turnOffFadeOut);\r\n initializeFadeout = false;\r\n }\r\n });\r\n this.player.on(\"play\", () => {\r\n initializeFadeout = true;\r\n if (!this.state.isVideoStarted) {\r\n observer.onStarted();\r\n this.setState({\r\n isVideoStarted: true\r\n });\r\n }\r\n });\r\n this.player.on(\"error\", () => observer.onError(new VintomError(\"playbackFailure\", this.player.error().message)));\r\n }\r\n }\r\n \r\n setMusicTime(startTime: number, endTime: number): void {\r\n this.startTimeShift = startTime;\r\n this.endTimeShift = endTime;\r\n }\r\n\r\n captureSnapshot(): string {\r\n if (BrowserFeatureDetector.isSafari()) {\r\n // Capturing snapshots doesn't work correctly on Safari\r\n // in MPEG4 it's always the first frame that's captured, regardless of what's currently displayed\r\n // in HLS the data url is always invalid\r\n return;\r\n }\r\n\r\n if (this.props.isFullscreen &&\r\n ((BrowserFeatureDetector.isAndroid() && BrowserFeatureDetector.isChrome()) || !BrowserFeatureDetector.isFullscreenSupported())) {\r\n // Screenshots on Chrome on Android in fullscreen mode are always black\r\n // Screenshots in fullscreen imitation mode are always black \r\n return;\r\n }\r\n\r\n const canvas: HTMLCanvasElement = document.createElement(\"canvas\");\r\n canvas.width = this.videoNode.clientWidth;\r\n canvas.height = this.videoNode.clientHeight;\r\n\r\n try {\r\n canvas.getContext(\"2d\").drawImage(this.videoNode, 0, 0, canvas.width, canvas.height);\r\n } catch {\r\n // Firefox on Android throws 'NS_ERROR_NOT_AVAILABLE: Component is not available' when drawing image from video node to canvas.\r\n // There are a few similar issues in Mozilla's bug tracker, ie. https://bugzilla.mozilla.org/show_bug.cgi?id=1481406\r\n return;\r\n }\r\n\r\n try {\r\n return canvas.toDataURL();\r\n } catch {\r\n // This should never happen as all video responses have Access-Control-Allow-Origin: * header\r\n // and the video tag has crossorigin=\"anonymous\" attribute.\r\n //\r\n // There is a bug in Safari where it throws SecurityException even though it shouldn't.\r\n // Currently we do not take snapshots on Safari - they are broken both for MPEG4 and HLS - so this path\r\n // won't be run on Safari.\r\n //\r\n // This catch is left in case some other browser (IE maybe?) exhibits the same weird behaviour as Safari -\r\n // we silently fall back to not having end-of-scenario-element posters\r\n }\r\n }\r\n\r\n activateSubtitles(source: string) {\r\n Object.keys(this.textTracksBySource).forEach((trackSource) => this.textTracksBySource[trackSource].mode = \"disabled\");\r\n if (source) {\r\n this.textTracksBySource[source].mode = \"hidden\";\r\n this.handleTextTrack(this.textTracksBySource[source]);\r\n } else {\r\n this.observer.onSubtitlesChange(undefined);\r\n }\r\n }\r\n\r\n hide() {\r\n if (this.player) {\r\n this.player.hide();\r\n }\r\n }\r\n\r\n // end of VideoLayer implementation\r\n\r\n private seekAfterLoad(progress: number): void {\r\n if (progress === 0) {\r\n return;\r\n }\r\n // duration should be available after loadedmetadata event but it's not (Chrome on Android)\r\n const duration = this.player.duration();\r\n if (isNaN(duration)) {\r\n setTimeout(() => this.seekAfterLoad(progress), VideoLayerComponent.SEEK_AFTER_LOAD_INTERVAL);\r\n } else {\r\n const timeToSeekTo = progress * this.getTotalTime();\r\n this.trySeek(timeToSeekTo);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * Setting currentTime on mobile usually doesn't work (currentTime is still 0). It sometimes works after canplay event,\r\n * sometimes after canplaythrough and sometimes you have to wait even longer.\r\n * As a workaround we repeatedly try to set currentTime in an interval.\r\n *\r\n * Because of rounding this.player.currentTime() does not have to be exactly the same as the time we set.\r\n *\r\n * Looks ugly but videojs uses the same approach: https://github.com/brightcove/videojs-urlparams/blob/master/videojs.urlparams.js#L97-L105\r\n *\r\n */\r\n private trySeek(time: number): void {\r\n this.player.currentTime(time);\r\n setTimeout(\r\n () => {\r\n if (Math.abs(this.player.currentTime() - time) > VideoLayerComponent.SEEK_AFTER_LOAD_CLOSE_ENOUGH) {\r\n this.trySeek(time);\r\n }\r\n },\r\n VideoLayerComponent.SEEK_AFTER_LOAD_INTERVAL);\r\n }\r\n\r\n private getBufferedRanges() {\r\n const bufferedRangeObject = this.player.buffered();\r\n const bufferedRanges = Array.from(Array(bufferedRangeObject.length).keys())\r\n .map((index) => ({\r\n start: bufferedRangeObject.start(index),\r\n end: bufferedRangeObject.end(index)\r\n }));\r\n return bufferedRanges;\r\n }\r\n\r\n private prepareSources(sources: Source[]): Source[] {\r\n let preparedSources = BrowserFeatureDetector.isSafari() ?\r\n sources.filter((source) => source.type !== VideoLayerComponent.DASH_MIME_TYPE) :\r\n sources;\r\n if (!preparedSources.length) {\r\n this.observer.onError(new VintomError(\"playbackFailure\", \"Video has no sources (DASH sources cannot be played on Safari\"));\r\n }\r\n\r\n preparedSources = preparedSources.sort((s1, s2) =>\r\n VideoLayerComponent.PREFERRED_MIME_TYPE_ORDER.indexOf(s1.type) - VideoLayerComponent.PREFERRED_MIME_TYPE_ORDER.indexOf(s2.type));\r\n\r\n return preparedSources;\r\n }\r\n\r\n private handleTextTrack(textTrack: TextTrack) {\r\n const activeCues = textTrack.activeCues;\r\n const activeVTTCues: VTTCue[] = [];\r\n\r\n for (const idx of Array.from(Array(activeCues.length).keys())) {\r\n const activeCue = activeCues[idx] as any;\r\n // only VTTCue has line property\r\n if (activeCue.line !== undefined) {\r\n activeVTTCues.push(activeCue as VTTCue);\r\n }\r\n }\r\n // there should be at most one VTTCue at a given time\r\n const activeVTTCue = activeVTTCues.length && activeVTTCues[0];\r\n\r\n let subtitlesText: SubtitlesText;\r\n\r\n if (activeVTTCue) {\r\n subtitlesText = {\r\n text: activeVTTCue.text,\r\n verticalPosition: typeof (activeVTTCue.line) === \"number\" ?\r\n activeVTTCue.line as number : VideoLayerComponent.DEFAULT_VTT_CUES_VERTICAL_POSITION\r\n };\r\n }\r\n\r\n this.observer.onSubtitlesChange(subtitlesText);\r\n }\r\n\r\n private requestQualityChange = () => {\r\n this.hlsHandler && this.hlsHandler.masterPlaylistController_.smoothQualityChange_();\r\n }\r\n}\r\n\r\n// tslint:enable:max-classes-per-file\r\n","\r\nimport \"@styles/loadingPage.scss\";\r\nimport React from \"react\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n}\r\n\r\nexport class LoadingPageComponent extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { i18n } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n
{i18n.loadingPageMainMsg}
\r\n
\r\n \"camera\r\n
\r\n

{i18n.loadingPageDetails}

\r\n
\r\n
);\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nimport \"@styles/c-menuButton.scss\";\r\n\r\ninterface Props {\r\n onClick: (event: React.MouseEvent) => void;\r\n icon: React.ReactNode;\r\n isDesktop?: boolean;\r\n isDisabled?: boolean;\r\n isActive?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const MenuButtonComponent: React.SFC = ({ onClick, icon, isDesktop, isActive, isDisabled, className }) => {\r\n\r\n return (\r\n {\r\n if (!isDisabled) {\r\n onClick(event);\r\n }\r\n }}\r\n >\r\n {icon}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { VintomError } from \"src/api/model/error/VintomError\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\n\r\nimport \"@styles/c-message.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n message: string | VintomError;\r\n onSendError: (error?: VintomError) => void;\r\n}\r\n\r\ninterface State {\r\n isAfterErrorSent: boolean;\r\n}\r\n\r\nexport class MessageComponent extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isAfterErrorSent: false\r\n };\r\n }\r\n\r\n render() {\r\n const { i18n, message } = this.props;\r\n\r\n let messageStr: string;\r\n let error: VintomError;\r\n if (this.state.isAfterErrorSent) {\r\n messageStr = i18n.thankYouForSendingReport;\r\n } else if (typeof (message) === \"string\") {\r\n messageStr = message;\r\n } else {\r\n error = message;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {!this.state.isAfterErrorSent && error &&\r\n this.handleSendError(error)}\r\n >\r\n {i18n.sendReport}\r\n \r\n }\r\n
\r\n
);\r\n }\r\n\r\n private handleSendError(error: VintomError) {\r\n this.props.onSendError(error);\r\n this.setState({\r\n isAfterErrorSent: true\r\n });\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { ScenarioElement } from \"../../../../model/playerConfiguration/ScenarioElement\";\r\nimport { PastOrCurrentPart } from \"../../../../model/scenarioPath/PastOrCurrentPart\";\r\n\r\nimport \"@styles/c-part.scss\";\r\n\r\ninterface Props {\r\n part: PastOrCurrentPart;\r\n onPartClicked: (scenarioElement: ScenarioElement, progress: number) => void;\r\n onMouseMove?: (event: React.MouseEvent) => void;\r\n onMouseLeave?: () => void; \r\n}\r\n\r\ninterface State {}\r\n\r\nexport class PartComponent extends React.Component {\r\n\r\n private html: HTMLDivElement;\r\n\r\n render() {\r\n const {\r\n part,\r\n onMouseMove,\r\n onMouseLeave\r\n } = this.props;\r\n return (\r\n this.html = element}\r\n onMouseMove={onMouseMove}\r\n onMouseLeave={onMouseLeave}\r\n onClick={(event) => this.handlePartClicked(event)}\r\n >\r\n
\r\n
\r\n );\r\n }\r\n\r\n private handlePartClicked(event: React.MouseEvent) {\r\n const { part, onPartClicked } = this.props;\r\n\r\n if (part.scenarioElement) {\r\n const partBoundingRect = this.html.getBoundingClientRect();\r\n\r\n const progress = (event.clientX - partBoundingRect.left) / (partBoundingRect.right - partBoundingRect.left);\r\n onPartClicked(part.scenarioElement, progress);\r\n }\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { ListenerHelper } from \"../../../../utils/ListenerHelper\";\r\n\r\nimport \"@styles/c-slider.scss\";\r\n\r\ninterface Props {\r\n value: number;\r\n isHandleAlwaysVisible?: boolean;\r\n onSliderInteraction: (value: number, isChanging: boolean) => void;\r\n onChangingSliderInteractionStarted?: () => void;\r\n onSliderInteractionEnded?: (wasChanging: boolean) => void;\r\n secondaryValue?: number;\r\n className?: string;\r\n style?: {[key: string]: string};\r\n}\r\n\r\ninterface State {\r\n isHovered: boolean;\r\n isDragging: boolean;\r\n}\r\n\r\nexport class SliderComponent extends React.Component {\r\n\r\n private static HANDLE_WIDTH = 12;\r\n\r\n private slider: HTMLDivElement;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isHovered: false,\r\n isDragging: false\r\n };\r\n }\r\n\r\n render() {\r\n const { value, secondaryValue, className, style, isHandleAlwaysVisible } = this.props;\r\n return (\r\n this.slider = element}\r\n className={`${className || \"\"} c-slider`}\r\n style={style}\r\n onMouseEnter={() => this.handleMouseEnter()}\r\n onMouseLeave={() => this.handleMouseLeave()}\r\n onMouseMove={(event) => this.handleMouseMove(event.nativeEvent)}\r\n onMouseDown={(event) => this.handleMouseDown(event.nativeEvent)}\r\n\r\n onTouchMove={(event) => this.handleTouchMove(event.nativeEvent)}\r\n onTouchStart={(event) => this.handleTouchStart(event.nativeEvent)}\r\n onTouchEnd={() => this.handleTouchEnd()}\r\n >\r\n
\r\n
\r\n {secondaryValue !== undefined &&\r\n \r\n }\r\n \r\n {(this.state.isHovered || this.state.isDragging || isHandleAlwaysVisible) &&\r\n \r\n }\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n private handleMouseEnter() {\r\n this.setState({\r\n isHovered: true\r\n });\r\n }\r\n\r\n private handleMouseLeave() {\r\n this.setState({\r\n isHovered: false\r\n });\r\n if (!this.state.isDragging) {\r\n this.fireInteractionEndedEvent();\r\n }\r\n }\r\n\r\n private handleMouseMove(event: MouseEvent) {\r\n this.fireInteractedEvent(event.clientX, this.state.isDragging);\r\n }\r\n\r\n private handleMouseDown(event: MouseEvent) {\r\n ListenerHelper.addEventListener(\"document\", \"mousemove\", this.trackMouse);\r\n this.setState({\r\n isDragging: true\r\n });\r\n this.props.onChangingSliderInteractionStarted && this.props.onChangingSliderInteractionStarted();\r\n this.fireInteractedEvent(event.clientX, true);\r\n ListenerHelper.addEventListener(\"document\", \"mouseup\", this.stopMouseTracking);\r\n }\r\n\r\n private trackMouse = (event: MouseEvent) => {\r\n this.fireInteractedEvent(event.clientX, this.state.isDragging);\r\n }\r\n\r\n private stopMouseTracking = () => {\r\n this.fireInteractionEndedEvent();\r\n this.setState({\r\n isDragging: false\r\n });\r\n ListenerHelper.removeEventListener(\"document\", \"mouseup\", this.stopMouseTracking);\r\n ListenerHelper.removeEventListener(\"document\", \"mousemove\", this.trackMouse);\r\n }\r\n\r\n private handleTouchMove(event: TouchEvent) {\r\n this.fireInteractedEvent(event.touches[0].clientX, this.state.isDragging);\r\n }\r\n\r\n private handleTouchStart(event: TouchEvent) {\r\n this.setState({\r\n isDragging: true\r\n });\r\n this.props.onChangingSliderInteractionStarted && this.props.onChangingSliderInteractionStarted();\r\n this.fireInteractedEvent(event.touches[0].clientX, true);\r\n }\r\n\r\n private handleTouchEnd() {\r\n this.setState({\r\n isDragging: false\r\n });\r\n this.fireInteractionEndedEvent();\r\n }\r\n\r\n private fireInteractedEvent(clientX: number, isChangingValue: boolean) {\r\n const progress = this.calculateProgress(clientX);\r\n this.props.onSliderInteraction(progress, isChangingValue);\r\n }\r\n\r\n private fireInteractionEndedEvent() {\r\n if (this.props.onSliderInteractionEnded) {\r\n this.props.onSliderInteractionEnded(this.state.isDragging);\r\n }\r\n }\r\n\r\n private calculateProgress(clientX: number) {\r\n const relativeX = clientX - this.slider.getBoundingClientRect().left;\r\n let progress = relativeX / (this.slider.clientWidth);\r\n if (progress < 0) {\r\n progress = 0;\r\n }\r\n if (progress > 1) {\r\n progress = 1;\r\n }\r\n return progress;\r\n }\r\n\r\n private calculateHandleLeftMargin() {\r\n if (!this.slider) {\r\n return 0;\r\n }\r\n return `${this.slider.clientWidth * this.props.value - SliderComponent.HANDLE_WIDTH / 2}px`;\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { FacebookIconComponent } from \"../../../icons/socialShare/FacebookIconComponent\";\r\nimport { TwitterIconComponent } from \"../../../icons/socialShare/TwitterIconComponent\";\r\n\r\nimport \"@styles/c-socialShare.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n facebookShareUrl: string;\r\n twitterShareUrl: string;\r\n onShared?: () => void;\r\n}\r\n\r\nexport const SocialShareComponent: React.SFC = ({ i18n, facebookShareUrl, twitterShareUrl, onShared }) => {\r\n return (\r\n
\r\n
    \r\n
  • \r\n onShared && onShared()}\r\n >\r\n \r\n \r\n {i18n.facebook}\r\n \r\n \r\n
  • \r\n
  • \r\n onShared && onShared()}\r\n >\r\n \r\n \r\n {i18n.twitter}\r\n \r\n \r\n
  • \r\n
\r\n
\r\n\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { Subtitle } from \"../../../../model/playerConfiguration/Subtitle\";\r\nimport { SubtitlesSelectedIconComponent } from \"../../../icons/subtitles/SubtitlesSelectedIconComponent\";\r\nimport { ToggleComponent } from \"./ToggleComponent\";\r\n\r\nimport \"@styles/c-subtitleSelector.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n subtitles: Subtitle[];\r\n selectedSubtitlesSrc?: string;\r\n onSubtitleSourceSelected: (subtitle?: Subtitle) => void;\r\n \r\n}\r\n\r\ninterface State {}\r\n\r\nexport class SubtitleSelectorComponent extends React.Component {\r\n\r\n render() {\r\n const { i18n, subtitles, selectedSubtitlesSrc, onSubtitleSourceSelected } = this.props;\r\n\r\n return (\r\n event.nativeEvent.stopImmediatePropagation()}\r\n >\r\n \r\n {subtitles.length > 0 &&\r\n
    \r\n {subtitles.map((subtitle) => (\r\n
  • \r\n onSubtitleSourceSelected(subtitle)}>\r\n {subtitle.label}\r\n {subtitle.source === selectedSubtitlesSrc &&\r\n <>\r\n \r\n \r\n \r\n }\r\n \r\n
  • \r\n ))}\r\n
\r\n }\r\n \r\n );\r\n }\r\n\r\n toggleSubtitles() {\r\n const { selectedSubtitlesSrc, subtitles, onSubtitleSourceSelected } = this.props;\r\n if (selectedSubtitlesSrc) {\r\n onSubtitleSourceSelected(undefined);\r\n } else {\r\n onSubtitleSourceSelected(subtitles[0]);\r\n }\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\n\r\nimport \"@styles/c-subtitlesDisplay.scss\";\r\n\r\ninterface Props {\r\n subtitlesText: string;\r\n className?: string;\r\n}\r\n\r\nexport class SubtitlesDisplayComponent extends React.Component {\r\n\r\n private static BASE_FONT_SIZE = 10;\r\n private static MIN_FONT_SIZE = 12;\r\n private static MAX_FONT_SIZE = 40;\r\n private static BASE_WIDTH = 500;\r\n\r\n private html: HTMLDivElement;\r\n\r\n render() {\r\n const { subtitlesText, className } = this.props;\r\n return (\r\n this.html = element}\r\n >\r\n \r\n \r\n );\r\n }\r\n\r\n private calculateFontSize(): number {\r\n if (!this.html) {\r\n return;\r\n }\r\n const calculatedSize = SubtitlesDisplayComponent.BASE_FONT_SIZE * this.html.clientWidth / SubtitlesDisplayComponent.BASE_WIDTH;\r\n return Math.max(SubtitlesDisplayComponent.MIN_FONT_SIZE, Math.min(SubtitlesDisplayComponent.MAX_FONT_SIZE, calculatedSize));\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nimport \"@styles/c-toggle.scss\";\r\n\r\ninterface Props {\r\n checked: boolean;\r\n onChange: () => void;\r\n}\r\n\r\ninterface State {}\r\n\r\nexport class ToggleComponent extends React.Component {\r\n\r\n render() {\r\n const { checked, onChange } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { TooltipStyle } from \"../../../../uiModel/tooltip/TooltipStyle\";\r\n\r\nimport \"@styles/c-tooltip.scss\";\r\n\r\ninterface Props {\r\n x: number;\r\n y: number;\r\n text: string;\r\n licenceAdditionalText?: string;\r\n textLicence?: string;\r\n linkLicence?: string;\r\n style: TooltipStyle;\r\n}\r\n\r\ninterface State { }\r\n\r\ninterface TooltipLocation {\r\n x: number;\r\n y: number;\r\n}\r\n/**\r\n * In order to correctly position the tooltip we have to first render it and measure its dimensions\r\n * (the tooltip cannot extend beyond the margins).\r\n * The rendering proceeds as follows:\r\n * 1. Component receives props\r\n * 2. If props x, y coordinates are far away from previous props x, y coordinates tooltip is rendered with visibility 'hidden' -\r\n * in this step the tooltip is only rendered so that we can measure it\r\n * 3. If props x, y coordinates are close to previous props x, y coordinates tooltip is rendered with visibility 'visible' -\r\n * previously rendered tooltip is used to position currently rendered tooltip.\r\n *\r\n * 4. It would be best to render the tooltip with visibility 'hidden' every time the props change\r\n * and position the tooltip in the subsequent step.\r\n * Unfortunetely this doesn't look smooth in Safari (ie. the tooltip displaying current time above seekbar looks jagged)\r\n */\r\nexport class TooltipComponent extends React.Component {\r\n\r\n private static CLOSE_LOCATION_DISTANCE_THRESHOLD = 30;\r\n\r\n private tooltipLayer: HTMLElement;\r\n private tooltip: HTMLElement;\r\n private tooltipLocation: TooltipLocation;\r\n\r\n render() {\r\n const { x, y, text, licenceAdditionalText, textLicence, linkLicence, style } = this.props;\r\n\r\n if (!text) {\r\n return <>;\r\n }\r\n\r\n const newLocation = { x, y };\r\n const isLocationClose = this.areLocationsClose(this.tooltipLocation, newLocation);\r\n this.tooltipLocation = newLocation;\r\n\r\n const leftTopCoords = this.calculateLeftTopCoords();\r\n\r\n return (\r\n this.tooltipLayer = element}\r\n className=\"c-tooltip\"\r\n >\r\n
\r\n
\r\n
\r\n
\r\n this.tooltip = element}\r\n style={{\r\n visibility: isLocationClose ? \"visible\" : \"hidden\"\r\n }}\r\n >\r\n {text}\r\n
\r\n {licenceAdditionalText} {textLicence}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private areLocationsClose(l1: TooltipLocation, l2: TooltipLocation) {\r\n if (!l1 || !l2) {\r\n return false;\r\n }\r\n return Math.abs(l1.x - l2.x) < TooltipComponent.CLOSE_LOCATION_DISTANCE_THRESHOLD &&\r\n Math.abs(l1.y - l2.y) < TooltipComponent.CLOSE_LOCATION_DISTANCE_THRESHOLD;\r\n }\r\n\r\n private calculateLeftTopCoords() {\r\n if (!this.tooltip) {\r\n return {\r\n x: 0,\r\n y: 0\r\n };\r\n }\r\n\r\n const { x, y } = this.props;\r\n const layerBoundingBox = this.tooltipLayer.getBoundingClientRect();\r\n const tooltipBoundingBox = this.tooltip.getBoundingClientRect();\r\n\r\n const shiftedX = x - layerBoundingBox.left - tooltipBoundingBox.width / 2;\r\n const shiftedY = y - layerBoundingBox.top - tooltipBoundingBox.height;\r\n\r\n return {\r\n x: shiftedX > 0 ? Math.round(shiftedX) : 0,\r\n y: shiftedY > 0 ? Math.round(shiftedY) : 0\r\n };\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nimport { VintomError } from \"src/api/model/error/VintomError\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { PlayerControls } from \"../../../../model/playerConfiguration/PlayerControls\";\r\nimport { ScenarioElement } from \"../../../../model/playerConfiguration/ScenarioElement\";\r\nimport { Subtitle } from \"../../../../model/playerConfiguration/Subtitle\";\r\nimport { QualityLevel } from \"../../../../model/qualityLevel/QualityLevel\";\r\nimport { ScenarioPath } from \"../../../../model/scenarioPath/ScenarioPath\";\r\nimport { SubtitlesText } from \"../../../../model/subtitles/SubtitlesText\";\r\nimport { ScenarioElementPlaybackState } from \"../../../../uiModel/playback/ScenarioElementPlaybackState\";\r\nimport { SocialShareConfiguration } from \"../../../../uiModel/socialShare/SocialShareConfiguration\";\r\nimport { TooltipMetadata } from \"../../../../uiModel/tooltip/TooltipMetadata\";\r\nimport { TooltipStyle } from \"../../../../uiModel/tooltip/TooltipStyle\";\r\nimport { TooltipTarget } from \"../../../../uiModel/tooltip/TooltipTarget\";\r\nimport { SubtitlesDisplayComponent } from \"../common/SubtitlesDisplayComponent\";\r\nimport { TooltipComponent } from \"../common/TooltipComponent\";\r\nimport { DesktopMenuComponent } from \"./DesktopMenuComponent\";\r\nimport { DesktopOverlayComponent } from \"./DesktopOverlayComponent\";\r\nimport { QualityLevelsComponent } from \"./QualityLevelsComponent\";\r\n\r\nimport \"@styles/c-desktopControlsLayer.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n configuration: PlayerControls;\r\n isAdminMode: boolean;\r\n bandwidth: number;\r\n qualityLevels: QualityLevel[];\r\n isLoading: boolean;\r\n isCTADisplayed: boolean;\r\n socialShareConfiguration: SocialShareConfiguration;\r\n\r\n playbackState: ScenarioElementPlaybackState;\r\n onPlay: () => void;\r\n onPause: () => void;\r\n onReplay: () => void;\r\n onSeekStart: () => void;\r\n onSeekEnd: () => void;\r\n\r\n scenarioPath: ScenarioPath;\r\n totalTime: number;\r\n ellapsedTime: number;\r\n bufferedTime: number;\r\n onSeekTo: (time: number) => void;\r\n onJumpToScenarioElement: (scenarioElement: ScenarioElement, progress: number) => void;\r\n\r\n isVolumeMuted: boolean;\r\n volume: number;\r\n onVolumeChange: (volume: number) => void;\r\n onToggleMuted: () => void;\r\n onUnMute: () => void;\r\n\r\n subtitles: Subtitle[];\r\n selectedSubtitlesSrc?: string;\r\n subtitlesText?: SubtitlesText;\r\n onSubtitleSourceSelected: (subtitle?: Subtitle) => void;\r\n\r\n isFullscreenSupported: boolean;\r\n isFullscreen: boolean;\r\n onToggleFullscreen: () => void;\r\n\r\n loadingPageVisible: boolean;\r\n\r\n message?: string | VintomError;\r\n onSendError: (error: VintomError) => void;\r\n playIconOnPoster: boolean;\r\n disableIcon: boolean;\r\n}\r\n\r\ninterface State {\r\n isControlsShown: boolean;\r\n tooltipMetadata?: TooltipMetadata;\r\n}\r\n\r\nexport class DesktopControlsLayerComponent extends React.Component {\r\n\r\n private static SHOW_CONTROLS_TIMEOUT = 1500;\r\n private static SHOW_TOOLTIP_TIMEOUT = 1000;\r\n private static TOOLTIP_MODE_THRESHOLD = 2000;\r\n\r\n private lastNonImmediateTooltipTime?: number;\r\n private tooltipTimeoutHandle?: number;\r\n private hideControlsTimeoutHandle?: number;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isControlsShown: false \r\n };\r\n }\r\n\r\n render() {\r\n const {\r\n i18n,\r\n configuration,\r\n isAdminMode,\r\n bandwidth,\r\n qualityLevels,\r\n isLoading,\r\n isCTADisplayed,\r\n socialShareConfiguration,\r\n\r\n playbackState,\r\n onPlay,\r\n onPause,\r\n onReplay,\r\n onSeekStart,\r\n onSeekEnd,\r\n\r\n scenarioPath,\r\n totalTime,\r\n ellapsedTime,\r\n bufferedTime,\r\n onSeekTo,\r\n onJumpToScenarioElement,\r\n\r\n isVolumeMuted,\r\n volume,\r\n onVolumeChange,\r\n onToggleMuted,\r\n onUnMute,\r\n\r\n subtitles,\r\n selectedSubtitlesSrc,\r\n subtitlesText,\r\n onSubtitleSourceSelected,\r\n\r\n isFullscreenSupported,\r\n isFullscreen,\r\n onToggleFullscreen,\r\n\r\n loadingPageVisible,\r\n message,\r\n onSendError,\r\n disableIcon\r\n } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n {configuration.logo &&\r\n \r\n }\r\n
\r\n {isAdminMode &&\r\n \r\n }\r\n {subtitlesText &&\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n
\r\n
\r\n
\r\n {this.state.tooltipMetadata &&\r\n \r\n }\r\n
\r\n
\r\n {scenarioPath && configuration.controlbarEnabled &&\r\n \r\n this.handleMouseEnteredMenu()}\r\n onMouseLeave={() => this.handleMouseLeftMenu()}\r\n\r\n playbackState={playbackState}\r\n onPlay={onPlay}\r\n onPause={onPause}\r\n onReplay={onReplay}\r\n onSeekStart={onSeekStart}\r\n onSeekEnd={onSeekEnd}\r\n\r\n scenarioPath={scenarioPath}\r\n totalTime={totalTime}\r\n ellapsedTime={ellapsedTime}\r\n bufferedTime={bufferedTime}\r\n onSeekTo={onSeekTo}\r\n onJumpToScenarioElement={onJumpToScenarioElement}\r\n\r\n isVolumeMuted={isVolumeMuted}\r\n volume={volume}\r\n onVolumeChange={onVolumeChange}\r\n onToggleMuted={onToggleMuted}\r\n\r\n subtitles={subtitles}\r\n onSubtitleSourceSelected={onSubtitleSourceSelected}\r\n selectedSubtitlesSrc={selectedSubtitlesSrc}\r\n\r\n isFullscreenSupported={isFullscreenSupported}\r\n isFullscreen={isFullscreen}\r\n onToggleFullscreen={() => {\r\n this.hideTooltip();\r\n onToggleFullscreen();\r\n }}\r\n\r\n onCancelTooltip={() => this.hideTooltip()}\r\n onRequestTooltip={(event) => this.showTooltip(event)}\r\n />\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n\r\n hidePlayerInfoTooltip() {\r\n if (this.state.tooltipMetadata && this.state.tooltipMetadata.target === \"playerInfo\") {\r\n this.hideTooltip();\r\n }\r\n }\r\n\r\n showPlayerInfoTooltip(x: number, y: number) {\r\n this.showTooltip({\r\n x,\r\n y,\r\n target: \"playerInfo\"\r\n });\r\n }\r\n\r\n handleUserInteractedWithPlayer() {\r\n this.hidePlayerInfoTooltip();\r\n this.clearTimerAndShowControls();\r\n this.setHideControlsTimer();\r\n }\r\n\r\n handleUserInteractionEnded() {\r\n this.hideControls();\r\n }\r\n\r\n handleUserClickedPlayer() {\r\n const { playbackState, onPlay, onPause, onReplay } = this.props;\r\n switch (playbackState) {\r\n case \"paused\":\r\n onPlay();\r\n break;\r\n case \"playing\":\r\n onPause();\r\n break;\r\n case \"scenarioFinished\":\r\n onReplay();\r\n break;\r\n default:\r\n // do nothing\r\n }\r\n }\r\n\r\n private get isControlsDisplayed() {\r\n return this.state.isControlsShown ||\r\n this.props.playbackState === \"seekingAfterPlay\" ||\r\n this.props.playbackState === \"seekingAfterPause\" ||\r\n !!this.props.message;\r\n }\r\n\r\n private calculateTooltipModel() {\r\n const { i18n, playbackState, isVolumeMuted, isFullscreen } = this.props;\r\n const { tooltipMetadata } = this.state;\r\n\r\n if (!tooltipMetadata) {\r\n return;\r\n }\r\n\r\n const coords = (({ x, y }) => ({ x, y }))(tooltipMetadata);\r\n switch (this.state.tooltipMetadata.target) {\r\n case \"playerInfo\":\r\n return {\r\n ...coords,\r\n text: i18n.poweredByVintom,\r\n licenceAdditionalText: i18n.licenceAdditionalText,\r\n textLicence: i18n.licenceLabel,\r\n linkLicence: i18n.linkLicence,\r\n style: \"accent\" as TooltipStyle\r\n };\r\n case \"seekbarPart\":\r\n return {\r\n ...coords,\r\n text: tooltipMetadata.text,\r\n style: \"accent\" as TooltipStyle\r\n };\r\n case \"seekbarSlider\":\r\n return {\r\n ...coords,\r\n text: tooltipMetadata.text,\r\n style: \"light\" as TooltipStyle\r\n };\r\n case \"playbackControl\":\r\n const playbackStateToTooltipText = {\r\n \"finished\": i18n.replay,\r\n \"paused\": i18n.play,\r\n \"playing\": i18n.pause\r\n };\r\n return {\r\n ...coords,\r\n text: playbackStateToTooltipText[playbackState],\r\n style: \"dark\" as TooltipStyle\r\n };\r\n case \"volumeControl\":\r\n return {\r\n ...coords,\r\n text: isVolumeMuted ? i18n.unmute : i18n.mute,\r\n style: \"dark\" as TooltipStyle\r\n };\r\n case \"shareControl\":\r\n return {\r\n ...coords,\r\n text: i18n.share,\r\n style: \"dark\" as TooltipStyle\r\n };\r\n case \"fullscreenControl\":\r\n return {\r\n ...coords,\r\n text: isFullscreen ? i18n.exitFullscreen : i18n.fullscreen,\r\n style: \"dark\" as TooltipStyle\r\n };\r\n case \"subtitlesControl\":\r\n return {\r\n ...coords,\r\n text: i18n.subtitles,\r\n style: \"dark\" as TooltipStyle\r\n };\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n private showTooltip(tooltipMetadata: TooltipMetadata) {\r\n if (this.tooltipTimeoutHandle) {\r\n clearTimeout(this.tooltipTimeoutHandle);\r\n }\r\n\r\n const timeFromLastNonImmediateTarget = Date.now() - this.lastNonImmediateTooltipTime;\r\n\r\n if (this.isTooltipTargetImmediate(tooltipMetadata.target) ||\r\n timeFromLastNonImmediateTarget < DesktopControlsLayerComponent.TOOLTIP_MODE_THRESHOLD) {\r\n\r\n this.setState({\r\n tooltipMetadata\r\n });\r\n } else {\r\n this.tooltipTimeoutHandle =\r\n window.setTimeout(() => this.setState({ tooltipMetadata }), DesktopControlsLayerComponent.SHOW_TOOLTIP_TIMEOUT);\r\n }\r\n }\r\n\r\n private isTooltipTargetImmediate(target: TooltipTarget) {\r\n return [\"playerInfo\", \"seekbarPart\", \"seekbarSlider\"].indexOf(target) > -1;\r\n }\r\n\r\n private hideTooltip() {\r\n const { tooltipMetadata } = this.state;\r\n if (tooltipMetadata && !this.isTooltipTargetImmediate(tooltipMetadata.target)) {\r\n this.lastNonImmediateTooltipTime = Date.now();\r\n }\r\n if (this.tooltipTimeoutHandle) {\r\n clearTimeout(this.tooltipTimeoutHandle);\r\n }\r\n // tslint:disable:align\r\n setTimeout(() => {\r\n this.setState({\r\n tooltipMetadata: undefined\r\n });\r\n }, 3000);\r\n // tslint:enable:align\r\n }\r\n\r\n private handleMouseEnteredMenu() {\r\n this.clearTimerAndShowControls();\r\n }\r\n\r\n private handleMouseLeftMenu() {\r\n this.setHideControlsTimer();\r\n }\r\n\r\n private setHideControlsTimer() {\r\n this.hideControlsTimeoutHandle = window.setTimeout(() => this.hideControls(), DesktopControlsLayerComponent.SHOW_CONTROLS_TIMEOUT);\r\n }\r\n\r\n private clearTimerAndShowControls() {\r\n if (this.hideControlsTimeoutHandle !== undefined) {\r\n clearTimeout(this.hideControlsTimeoutHandle);\r\n }\r\n this.setState({\r\n isControlsShown: true\r\n });\r\n }\r\n\r\n private hideControls() {\r\n this.setState({\r\n isControlsShown: false\r\n });\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { TooltipMetadata } from \"../../../../uiModel/tooltip/TooltipMetadata\";\r\nimport { FullscreenDisableIconComponent } from \"../../../icons/fullscreen/FullscreenDisableIconComponent\";\r\nimport { FullscreenEnableIconComponent } from \"../../../icons/fullscreen/FullscreenEnableIconComponent\";\r\nimport { MenuButtonWithTooltipComponent } from \"./MenuButtonWithTooltipComponent\";\r\n\r\ninterface Props {\r\n isFullscreen: boolean;\r\n onToggleFullscreen: () => void;\r\n onCancelTooltip: () => void;\r\n onRequestTooltip: (metadata: TooltipMetadata) => void;\r\n}\r\n\r\nexport const DesktopFullscreenControlComponent: React.SFC = ({ isFullscreen, onToggleFullscreen, onCancelTooltip, onRequestTooltip }) => {\r\n const fullscreenIcon = isFullscreen ? : ;\r\n return (\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { PlayerControls } from \"../../../../model/playerConfiguration/PlayerControls\";\r\nimport { ScenarioElement } from \"../../../../model/playerConfiguration/ScenarioElement\";\r\nimport { Subtitle } from \"../../../../model/playerConfiguration/Subtitle\";\r\nimport { ScenarioPath } from \"../../../../model/scenarioPath/ScenarioPath\";\r\nimport { ScenarioElementPlaybackState } from \"../../../../uiModel/playback/ScenarioElementPlaybackState\";\r\nimport { SocialShareConfiguration } from \"../../../../uiModel/socialShare/SocialShareConfiguration\";\r\nimport { TooltipMetadata } from \"../../../../uiModel/tooltip/TooltipMetadata\";\r\nimport { SocialShareIconComponent } from \"../../../icons/socialShare/SocialShareIconComponent\";\r\nimport { SubtitlesIconComponent } from \"../../../icons/subtitles/SubtitlesIconComponent\";\r\nimport { SocialShareComponent } from \"../common/SocialShareComponent\";\r\nimport { SubtitleSelectorComponent } from \"../common/SubtitleSelectorComponent\";\r\nimport { DesktopFullscreenControlComponent } from \"./DesktopFullscreenControl\";\r\nimport { DesktopSeekbarComponent } from \"./DesktopSeekbarComponent\";\r\nimport { ExpandableMenuButtonComponent } from \"./ExpandableMenuButtonComponent\";\r\nimport { MenuButtonWithTooltipComponent } from \"./MenuButtonWithTooltipComponent\";\r\nimport { PlaybackControlComponent } from \"./PlaybackControlComponent\";\r\nimport { ScenarioTimeComponent } from \"./ScenarioTimeComponent\";\r\nimport { VolumeControlComponent } from \"./VolumeControlComponent\";\r\n\r\nimport \"@styles/c-desktopMenu.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n configuration: PlayerControls;\r\n isDisabled: boolean;\r\n isDisplayed: boolean;\r\n socialShareConfiguration: SocialShareConfiguration;\r\n\r\n onMouseEnter: () => void;\r\n onMouseLeave: () => void;\r\n\r\n playbackState: ScenarioElementPlaybackState;\r\n onPlay: () => void;\r\n onPause: () => void;\r\n onReplay: () => void;\r\n onSeekStart: () => void;\r\n onSeekEnd: () => void;\r\n\r\n scenarioPath: ScenarioPath;\r\n totalTime: number;\r\n ellapsedTime: number;\r\n bufferedTime: number;\r\n onSeekTo: (time: number) => void;\r\n onJumpToScenarioElement: (scenarioElement: ScenarioElement, progress: number) => void;\r\n\r\n isVolumeMuted: boolean;\r\n volume: number;\r\n onVolumeChange: (volume: number) => void;\r\n onToggleMuted: () => void;\r\n\r\n subtitles: Subtitle[];\r\n selectedSubtitlesSrc?: string;\r\n onSubtitleSourceSelected: (subtitle?: Subtitle) => void;\r\n\r\n isFullscreenSupported: boolean;\r\n isFullscreen: boolean;\r\n onToggleFullscreen: () => void;\r\n\r\n onCancelTooltip: () => void;\r\n onRequestTooltip: (event: TooltipMetadata) => void;\r\n\r\n}\r\n\r\nexport const DesktopMenuComponent: React.SFC = (props: Props) => {\r\n const {\r\n i18n,\r\n configuration,\r\n isDisabled,\r\n isDisplayed,\r\n socialShareConfiguration,\r\n\r\n onMouseEnter,\r\n onMouseLeave,\r\n\r\n playbackState,\r\n onPlay,\r\n onPause,\r\n onReplay,\r\n onSeekStart,\r\n onSeekEnd,\r\n\r\n scenarioPath,\r\n totalTime,\r\n ellapsedTime,\r\n bufferedTime,\r\n onSeekTo,\r\n onJumpToScenarioElement,\r\n\r\n isVolumeMuted,\r\n volume,\r\n onVolumeChange,\r\n onToggleMuted,\r\n\r\n subtitles,\r\n onSubtitleSourceSelected,\r\n selectedSubtitlesSrc,\r\n\r\n isFullscreenSupported,\r\n isFullscreen,\r\n onToggleFullscreen,\r\n\r\n onCancelTooltip,\r\n onRequestTooltip\r\n } = props;\r\n\r\n return (\r\n evt.stopPropagation()}\r\n >\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {configuration.seekbarEnabled && scenarioPath &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {configuration.playPauseEnabled &&\r\n \r\n }\r\n \r\n {configuration.seekbarEnabled &&\r\n \r\n }\r\n
\r\n {configuration.socialButtonEnabled && socialShareConfiguration.canShare &&\r\n }\r\n menu={\r\n \r\n }\r\n tooltipTarget=\"shareControl\"\r\n onCancelTooltip={onCancelTooltip}\r\n onRequestTooltip={onRequestTooltip}\r\n />\r\n }\r\n {subtitles && !!subtitles.length &&\r\n (subtitles.length === 1 ?\r\n }\r\n onClick={() => selectedSubtitlesSrc ? onSubtitleSourceSelected(undefined) : onSubtitleSourceSelected(subtitles[0])}\r\n tooltipTarget=\"subtitlesControl\"\r\n onCancelTooltip={onCancelTooltip}\r\n onRequestTooltip={onRequestTooltip}\r\n /> :\r\n }\r\n menu={\r\n \r\n }\r\n tooltipTarget=\"subtitlesControl\"\r\n onCancelTooltip={onCancelTooltip}\r\n onRequestTooltip={onRequestTooltip}\r\n />)\r\n\r\n }\r\n {isFullscreenSupported && configuration.fullscreenEnabled &&\r\n \r\n }\r\n
\r\n {isDisabled &&
}\r\n
\r\n\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { VintomError } from \"src/api/model/error/VintomError\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { ScenarioElementPlaybackState } from \"../../../../uiModel/playback/ScenarioElementPlaybackState\";\r\nimport { LoaderIconComponent } from \"../../../icons/loader/LoaderIconComponent\";\r\nimport { PlayIconComponent } from \"../../../icons/playback/PlayIconComponent\";\r\nimport { ReplayIconComponent } from \"../../../icons/playback/ReplayIconComponent\";\r\nimport { VolumeMutedIconComponent } from \"../../../icons/volume/VolumeMutedIconComponent\";\r\nimport { MessageComponent } from \"../common/MessageComponent\";\r\n\r\nimport { LoadingPageComponent } from \"../common/LoadingPageComponent\";\r\n\r\nimport \"@styles/c-desktopOverlay.scss\";\r\n\r\ninterface Props {\r\n // configuration: PlayerControls;\r\n i18n: I18n;\r\n isCTADisplayed: boolean;\r\n isPlayPauseEnabled: boolean;\r\n playbackState: ScenarioElementPlaybackState;\r\n isLoading: boolean;\r\n isVolumeMuted: boolean;\r\n onPlay: () => void;\r\n onReplay: () => void;\r\n onUnMute: () => void;\r\n loadingPageVisible: boolean;\r\n message?: string | VintomError;\r\n onSendError: (error: VintomError) => void;\r\n playIconOnPoster: boolean;\r\n disableIcon: boolean;\r\n}\r\n\r\nexport const DesktopOverlayComponent: React.SFC = (props) => {\r\n const {\r\n i18n,\r\n isCTADisplayed,\r\n isPlayPauseEnabled,\r\n playbackState,\r\n isLoading,\r\n isVolumeMuted,\r\n onPlay,\r\n onReplay,\r\n onUnMute,\r\n loadingPageVisible,\r\n message,\r\n onSendError,\r\n playIconOnPoster,\r\n disableIcon\r\n } = props;\r\n\r\n const isControlDisplayed = !!message ||\r\n isLoading ||\r\n isVolumeMuted ||\r\n isPlayPauseEnabled && [\"paused\", \"scenarioFinished\"].indexOf(playbackState) > -1 && !isCTADisplayed;\r\n\r\n if (!isControlDisplayed) {\r\n return <>;\r\n }\r\n\r\n if (loadingPageVisible) {\r\n return();\r\n }\r\n\r\n if (message) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n let isDisabled: boolean;\r\n let icon: React.ReactNode;\r\n let onClickCallback: () => void;\r\n\r\n if (isLoading) {\r\n isDisabled = true;\r\n icon = ;\r\n onClickCallback = () => {};\r\n } else if (playIconOnPoster === true && disableIcon) {\r\n return <>;\r\n } else if (playbackState === \"paused\") {\r\n isDisabled = false;\r\n icon = ;\r\n onClickCallback = onPlay;\r\n } else if (playbackState === \"scenarioFinished\") {\r\n isDisabled = false;\r\n icon = ;\r\n onClickCallback = onReplay;\r\n } else {\r\n isDisabled = false;\r\n icon = ;\r\n onClickCallback = onUnMute;\r\n }\r\n\r\n return (\r\n {\r\n onClickCallback();\r\n }}\r\n >\r\n {icon}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { ScenarioElement } from \"../../../../model/playerConfiguration/ScenarioElement\";\r\nimport { ScenarioPath } from \"../../../../model/scenarioPath/ScenarioPath\";\r\nimport { TooltipMetadata } from \"../../../../uiModel/tooltip/TooltipMetadata\";\r\nimport { TimeFormatter } from \"../../../../utils/TimeFormatter\";\r\nimport { PartComponent } from \"../common/PartComponent\";\r\nimport { SliderComponent } from \"../common/SliderComponent\";\r\n\r\nimport \"@styles/c-desktopSeekbar.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n scenarioPath: ScenarioPath;\r\n totalTime: number;\r\n ellapsedTime: number;\r\n bufferedTime: number;\r\n onSeekTo: (time: number) => void;\r\n onJumpToScenarioElement: (scenarioElement: ScenarioElement, progress: number) => void;\r\n onHideTooltip: () => void;\r\n onShowTooltip: (event: TooltipMetadata) => void;\r\n onSeekStart: () => void;\r\n onSeekEnd: () => void;\r\n}\r\n\r\ninterface State { }\r\n\r\nexport class DesktopSeekbarComponent extends React.Component {\r\n\r\n private static TOOLTIP_DISTANCE = 6;\r\n\r\n private slider: SliderComponent;\r\n private sliderHtml: HTMLElement;\r\n\r\n render() {\r\n const {\r\n scenarioPath,\r\n totalTime,\r\n ellapsedTime,\r\n bufferedTime,\r\n onJumpToScenarioElement,\r\n onHideTooltip,\r\n onSeekStart,\r\n onSeekEnd\r\n } = this.props;\r\n\r\n const progress = ellapsedTime / totalTime;\r\n const bufferingProgress = bufferedTime / totalTime;\r\n return (\r\n
\r\n {scenarioPath.displayedPastParts.map((part, index) => (\r\n onJumpToScenarioElement(scenarioElement, jumpProgress)}\r\n onMouseMove={(event) => this.handlePartMouseMove(event, index)}\r\n onMouseLeave={() => onHideTooltip()}\r\n />\r\n ))}\r\n this.slider = element}\r\n value={progress}\r\n secondaryValue={bufferingProgress}\r\n onSliderInteraction={(value, isChanging) => this.handleSliderInteraction(value, isChanging)}\r\n onSliderInteractionEnded={(wasChanging) => {\r\n onHideTooltip();\r\n if (wasChanging) {\r\n onSeekEnd();\r\n }\r\n }}\r\n onChangingSliderInteractionStarted={onSeekStart}\r\n />\r\n\r\n {scenarioPath.displayedFutureParts.map((part) => (\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n this.sliderHtml = ReactDOM.findDOMNode(this.slider) as HTMLElement;\r\n }\r\n\r\n private handlePartMouseMove(event: React.MouseEvent, partIndex: number) {\r\n const { i18n, onShowTooltip } = this.props;\r\n const partBoundingBox = (event.target as HTMLElement).getBoundingClientRect();\r\n onShowTooltip({\r\n x: event.clientX,\r\n y: partBoundingBox.top - DesktopSeekbarComponent.TOOLTIP_DISTANCE,\r\n target: \"seekbarPart\",\r\n text: `${i18n.part} ${partIndex + 1}`\r\n });\r\n }\r\n\r\n private handleSliderInteraction(value: number, isChanging: boolean) {\r\n const { onShowTooltip, totalTime } = this.props;\r\n if (isChanging) {\r\n this.props.onSeekTo(value * totalTime);\r\n }\r\n\r\n const sliderBoundingRect = this.sliderHtml.getBoundingClientRect();\r\n\r\n const sliderTooltipX = sliderBoundingRect.left + sliderBoundingRect.width * value;\r\n const sliderTooltipY = sliderBoundingRect.top - DesktopSeekbarComponent.TOOLTIP_DISTANCE;\r\n\r\n onShowTooltip({\r\n x: sliderTooltipX,\r\n y: sliderTooltipY,\r\n target: \"seekbarSlider\",\r\n text: TimeFormatter.format(value * totalTime)\r\n });\r\n\r\n }\r\n\r\n} \r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { TooltipMetadata } from \"../../../../uiModel/tooltip/TooltipMetadata\";\r\nimport { TooltipTarget } from \"../../../../uiModel/tooltip/TooltipTarget\";\r\nimport { ListenerHelper } from \"../../../../utils/ListenerHelper\";\r\nimport { MenuButtonWithTooltipComponent } from \"./MenuButtonWithTooltipComponent\";\r\n\r\nimport \"@styles/c-expandableMenuButton.scss\";\r\n\r\ninterface Props {\r\n icon: React.ReactNode;\r\n menu: React.ReactNode;\r\n isActive?: boolean;\r\n canExpand: boolean;\r\n className: string;\r\n\r\n tooltipTarget: TooltipTarget;\r\n onCancelTooltip: () => void;\r\n onRequestTooltip: (metadata: TooltipMetadata) => void;\r\n}\r\n\r\ninterface State {\r\n isExpanded: boolean;\r\n}\r\n\r\nexport class ExpandableMenuButtonComponent extends React.Component {\r\n\r\n private button: MenuButtonWithTooltipComponent;\r\n\r\n static getDerivedStateFromProps(props: Props) {\r\n if (!props.canExpand) {\r\n return {\r\n isExpanded: false\r\n };\r\n } else {\r\n return {};\r\n }\r\n }\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isExpanded: false\r\n };\r\n }\r\n\r\n render() {\r\n const { icon, menu, isActive, className, tooltipTarget, onCancelTooltip, onRequestTooltip } = this.props;\r\n return (\r\n \r\n this.button = element}\r\n isActive={isActive}\r\n onClick={() => this.toggleExpanded()}\r\n icon={icon}\r\n tooltipTarget={tooltipTarget}\r\n onCancelTooltip={onCancelTooltip}\r\n onRequestTooltip={onRequestTooltip}\r\n isTooltipDisabled={this.state.isExpanded}\r\n />\r\n {this.state.isExpanded &&\r\n
\r\n {menu}\r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n ListenerHelper.addEventListener(\"document\", \"click\", this.collapseOnClickOutside);\r\n }\r\n\r\n componentWillUnmount() {\r\n ListenerHelper.removeEventListener(\"document\", \"click\", this.collapseOnClickOutside);\r\n }\r\n\r\n private collapseOnClickOutside = (event) => {\r\n const buttonNode = ReactDOM.findDOMNode(this.button);\r\n if (!buttonNode.contains(event.target)) {\r\n this.setState({ isExpanded: false });\r\n }\r\n }\r\n\r\n private toggleExpanded() {\r\n const isExpanded = !this.state.isExpanded;\r\n if (isExpanded) {\r\n this.props.onCancelTooltip();\r\n }\r\n this.setState({\r\n isExpanded\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { TooltipMetadata } from \"../../../../uiModel/tooltip/TooltipMetadata\";\r\nimport { TooltipTarget } from \"../../../../uiModel/tooltip/TooltipTarget\";\r\nimport { MenuButtonComponent } from \"../common/MenuButtonComponent\";\r\n\r\nimport \"@styles/c-menuButtonWithTooltip.scss\";\r\n\r\ninterface Props {\r\n onClick: (event: React.MouseEvent) => void;\r\n icon: React.ReactNode;\r\n isDisabled?: boolean;\r\n isActive?: boolean;\r\n className?: string;\r\n\r\n isTooltipDisabled?: boolean;\r\n tooltipTarget: TooltipTarget;\r\n onRequestTooltip: (metadata: TooltipMetadata) => void;\r\n onCancelTooltip: () => void;\r\n}\r\n\r\nexport class MenuButtonWithTooltipComponent extends React.Component {\r\n\r\n render() {\r\n const {\r\n onClick,\r\n icon,\r\n isActive,\r\n isDisabled,\r\n className,\r\n onCancelTooltip\r\n } = this.props;\r\n\r\n return (\r\n this.handleMouseEnter(event)}\r\n onMouseLeave={onCancelTooltip}\r\n >\r\n \r\n
\r\n\r\n );\r\n }\r\n\r\n private handleMouseEnter(event: React.MouseEvent) {\r\n if (!this.props.isTooltipDisabled) {\r\n const boundingBox = (event.target as HTMLElement).getBoundingClientRect();\r\n this.props.onRequestTooltip({\r\n x: boundingBox.left + boundingBox.width / 2,\r\n y: boundingBox.top,\r\n target: this.props.tooltipTarget\r\n });\r\n }\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { ScenarioElementPlaybackState } from \"../../../../uiModel/playback/ScenarioElementPlaybackState\";\r\nimport { TooltipMetadata } from \"../../../../uiModel/tooltip/TooltipMetadata\";\r\nimport { PauseIconComponent } from \"../../../icons/playback/PauseIconComponent\";\r\nimport { PlayIconComponent } from \"../../../icons/playback/PlayIconComponent\";\r\nimport { ReplayIconComponent } from \"../../../icons/playback/ReplayIconComponent\";\r\nimport { MenuButtonComponent } from \"../common/MenuButtonComponent\";\r\nimport { MenuButtonWithTooltipComponent } from \"./MenuButtonWithTooltipComponent\";\r\n\r\ninterface Props {\r\n playbackState: ScenarioElementPlaybackState;\r\n onPlay: () => void;\r\n onPause: () => void;\r\n onReplay: () => void;\r\n onCancelTooltip: () => void;\r\n onRequestTooltip: (metadata: TooltipMetadata) => void;\r\n className?: string;\r\n}\r\n\r\nexport const PlaybackControlComponent: React.SFC = ({\r\n playbackState,\r\n onPlay,\r\n onPause,\r\n onReplay,\r\n onCancelTooltip,\r\n onRequestTooltip,\r\n className }) => {\r\n\r\n if (playbackState === \"elementFinished\") {\r\n return (\r\n }\r\n onClick={() => {}}\r\n className={className}\r\n tooltipTarget=\"playbackControl\"\r\n onCancelTooltip={onCancelTooltip}\r\n onRequestTooltip={onRequestTooltip}\r\n />);\r\n }\r\n\r\n let icon: React.ReactNode;\r\n let onClick: () => void;\r\n\r\n switch (playbackState) {\r\n case \"scenarioFinished\":\r\n icon = ;\r\n onClick = onReplay;\r\n break;\r\n case \"paused\":\r\n case \"seekingAfterPause\":\r\n icon = ;\r\n onClick = onPlay;\r\n break;\r\n case \"playing\":\r\n case \"seekingAfterPlay\":\r\n icon = ;\r\n onClick = onPause;\r\n break;\r\n default:\r\n throw new Error(`Unrecognized playbackState '${playbackState}'`);\r\n\r\n }\r\n return (\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { QualityLevel } from \"../../../../model/qualityLevel/QualityLevel\";\r\n\r\nimport \"@styles/c-qualityLevels.scss\";\r\n\r\ninterface Props {\r\n className: string;\r\n i18n: I18n;\r\n bandwidth: number;\r\n qualityLevels: QualityLevel[];\r\n}\r\n\r\nexport const QualityLevelsComponent: React.SFC = ({ className, i18n, bandwidth, qualityLevels }) => {\r\n if (qualityLevels === undefined || bandwidth === undefined) {\r\n return <>;\r\n }\r\n const formatBandwidth = (b: number) => (b / Math.pow(10, 6)).toFixed(3);\r\n return (\r\n
\r\n
\r\n {i18n.bandwidth} {formatBandwidth(bandwidth)} {i18n.mbps}\r\n
\r\n {qualityLevels.map((quality) => (\r\n \r\n {formatBandwidth(quality.bandwidth)} {i18n.mbps}\r\n
\r\n ))}\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { TimeFormatter } from \"../../../../utils/TimeFormatter\";\r\n\r\nimport \"@styles/c-scenarioTime.scss\";\r\n\r\ninterface Props {\r\n ellapsedTime: number;\r\n totalTime: number;\r\n isMultiElementScenario?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const ScenarioTimeComponent: React.SFC = ({ ellapsedTime, totalTime, isMultiElementScenario, className }) => {\r\n const isReady = isMultiElementScenario !== undefined;\r\n\r\n if (!isReady) {\r\n return
;\r\n }\r\n return (\r\n
\r\n
\r\n {TimeFormatter.format(ellapsedTime)}\r\n
\r\n {!isMultiElementScenario &&\r\n
\r\n {TimeFormatter.format(totalTime)}\r\n
\r\n }\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { TooltipMetadata } from \"../../../../uiModel/tooltip/TooltipMetadata\";\r\nimport { VolumeLoudIconComponent } from \"../../../icons/volume/VolumeLoudIconComponent\";\r\nimport { VolumeMutedIconComponent } from \"../../../icons/volume/VolumeMutedIconComponent\";\r\nimport { VolumeQuietIconComponent } from \"../../../icons/volume/VolumeQuietIconComponent\";\r\nimport { SliderComponent } from \"../common/SliderComponent\";\r\nimport { MenuButtonWithTooltipComponent } from \"./MenuButtonWithTooltipComponent\";\r\n\r\nimport \"@styles/c-volumeControl.scss\";\r\n\r\ninterface Props {\r\n isVolumeMuted: boolean;\r\n volume: number;\r\n onVolumeChange: (volume: number) => void;\r\n onToggleMuted: () => void;\r\n onCancelTooltip: () => void;\r\n onRequestTooltip: (metadata: TooltipMetadata) => void;\r\n className?: string;\r\n}\r\n\r\ninterface State {\r\n isHovered: boolean;\r\n isChangingVolume: boolean;\r\n}\r\n\r\nexport class VolumeControlComponent extends React.Component {\r\n\r\n private static LOUD_VOLUME_THRESHOLD = 0.5;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isHovered: false,\r\n isChangingVolume: false\r\n };\r\n }\r\n\r\n render() {\r\n const { isVolumeMuted, volume, onToggleMuted, onCancelTooltip, onRequestTooltip, className } = this.props;\r\n const displayedVolume = isVolumeMuted ? 0 : volume;\r\n\r\n return (\r\n this.toggleHovered(true)}\r\n onMouseLeave={() => this.toggleHovered(false)}\r\n >\r\n
\r\n \r\n
\r\n
\r\n {(this.state.isHovered || this.state.isChangingVolume) &&\r\n
\r\n this.handleSliderInteraction(value, isChanging)}\r\n onSliderInteractionEnded={() => this.handleSliderInteractionEnd()}\r\n />\r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n private renderVolumeIconSvg(isVolumeMuted: boolean, volume: number) {\r\n if (isVolumeMuted) {\r\n return ;\r\n } else if (volume < VolumeControlComponent.LOUD_VOLUME_THRESHOLD) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n\r\n private toggleHovered(isHovered: boolean): void {\r\n this.setState({\r\n isHovered\r\n });\r\n }\r\n\r\n private handleSliderInteraction(value: number, isChanging: boolean): void {\r\n if (isChanging) {\r\n if (!this.state.isChangingVolume) {\r\n this.setState({\r\n isChangingVolume: true\r\n });\r\n }\r\n this.props.onVolumeChange(value);\r\n }\r\n }\r\n\r\n private handleSliderInteractionEnd() {\r\n this.setState({\r\n isChangingVolume: false\r\n });\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { VintomError } from \"src/api/model/error/VintomError\";\r\nimport { Subtitle } from \"../../../..//model/playerConfiguration/Subtitle\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { PlayerControls } from \"../../../../model/playerConfiguration/PlayerControls\";\r\nimport { ScenarioElement } from \"../../../../model/playerConfiguration/ScenarioElement\";\r\nimport { ScenarioPath } from \"../../../../model/scenarioPath/ScenarioPath\";\r\nimport { SubtitlesText } from \"../../../../model/subtitles/SubtitlesText\";\r\nimport { MobileOverlayState } from \"../../../../uiModel/mobileOverlay/MobileOverlayState\";\r\nimport { ScenarioElementPlaybackState } from \"../../../../uiModel/playback/ScenarioElementPlaybackState\";\r\nimport { SocialShareConfiguration } from \"../../../../uiModel/socialShare/SocialShareConfiguration\";\r\nimport { VolumeMutedIconComponent } from \"../../../icons/volume/VolumeMutedIconComponent\";\r\nimport { MenuButtonComponent } from \"../common/MenuButtonComponent\";\r\nimport { SubtitlesDisplayComponent } from \"../common/SubtitlesDisplayComponent\";\r\nimport { MobileMenuComponent } from \"./MobileMenuComponent\";\r\nimport { MobileOverlayComponent } from \"./MobileOverlayComponent\";\r\nimport { MobileSeekbarComponent } from \"./MobileSeekbarComponent\";\r\n\r\nimport \"@styles/c-mobileControlsLayer.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n configuration: PlayerControls;\r\n isLoading: boolean;\r\n isCTADisplayed: boolean;\r\n socialShareConfiguration: SocialShareConfiguration;\r\n\r\n playbackState: ScenarioElementPlaybackState;\r\n onPlay: () => void;\r\n onPause: () => void;\r\n onReplay: () => void;\r\n onSeekStart: () => void;\r\n onSeekEnd: () => void;\r\n\r\n scenarioPath: ScenarioPath;\r\n totalTime: number;\r\n ellapsedTime: number;\r\n bufferedTime: number;\r\n onSeekTo: (time: number) => void;\r\n onJumpToScenarioElement: (scenarioElement: ScenarioElement, progress: number) => void;\r\n\r\n isVolumeMuted: boolean;\r\n onToggleMuted: () => void;\r\n\r\n subtitles: Subtitle[];\r\n selectedSubtitlesSrc?: string;\r\n subtitlesText?: SubtitlesText;\r\n onSubtitleSourceSelected: (subtitle?: Subtitle) => void;\r\n\r\n isFullscreenSupported: boolean;\r\n isFullscreen: boolean;\r\n onToggleFullscreen: () => void;\r\n\r\n message?: string | VintomError;\r\n onSendError: (error: VintomError) => void;\r\n playIconOnPoster: boolean;\r\n disableIcon: boolean;\r\n}\r\n\r\ninterface State {\r\n isSeeking: boolean;\r\n isControlsShownAfterPlayerClicked: boolean;\r\n isSubtitlesSelectorShown: boolean;\r\n isSocialShareShown: boolean;\r\n}\r\n\r\nexport class MobileControlsLayerComponent extends React.Component {\r\n\r\n private static SHOW_CONTROLS_TIMEOUT = 2000;\r\n\r\n private hideControlsTimeoutHandle?: number;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isSeeking: false,\r\n isControlsShownAfterPlayerClicked: true,\r\n isSubtitlesSelectorShown: false,\r\n isSocialShareShown: false\r\n };\r\n }\r\n\r\n render() {\r\n const {\r\n i18n,\r\n configuration,\r\n socialShareConfiguration,\r\n\r\n scenarioPath,\r\n totalTime,\r\n ellapsedTime,\r\n bufferedTime,\r\n onSeekTo,\r\n onJumpToScenarioElement,\r\n\r\n isVolumeMuted,\r\n onToggleMuted,\r\n\r\n subtitles,\r\n selectedSubtitlesSrc,\r\n subtitlesText,\r\n\r\n isFullscreenSupported,\r\n isFullscreen,\r\n onToggleFullscreen,\r\n\r\n message,\r\n onSendError,\r\n disableIcon\r\n } = this.props;\r\n\r\n const overlayState = this.calculateOverlayState();\r\n\r\n return (\r\n
\r\n
\r\n {this.isOverlayDisplayed &&\r\n this.subtitleSourceSelected(subtitle)}\r\n socialShareConfiguration={socialShareConfiguration}\r\n onShared={() => this.handleShared()}\r\n message={message}\r\n onSendError={onSendError}\r\n playIconOnPoster={configuration.playIconOnPoster}\r\n disableIcon={disableIcon}\r\n />\r\n }\r\n
\r\n \r\n
\r\n {configuration.logo &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n this.handleSocialShareClicked()}\r\n\r\n isFullscreenSupported={isFullscreenSupported}\r\n isFullscreen={isFullscreen}\r\n onToggleFullscreen={onToggleFullscreen}\r\n\r\n isVolumeMuted={isVolumeMuted}\r\n onToggleMuted={onToggleMuted}\r\n\r\n hasSubtitles={subtitles && !!subtitles.length}\r\n selectedSubtitlesSrc={selectedSubtitlesSrc}\r\n onSubtitlesSelectorClicked={() => this.handleSubtitlesSelectorClicked()}\r\n\r\n isDisabled={!!message}\r\n />\r\n
\r\n {isVolumeMuted &&\r\n }\r\n isDisabled={!!message}\r\n />\r\n }\r\n
\r\n {subtitlesText &&\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n }\r\n {scenarioPath &&\r\n \r\n
\r\n this.handleSeekStart()}\r\n onSliderInteractionEnded={() => this.handleSeekEnd()}\r\n isDisabled={!!message}\r\n />\r\n
\r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n handleUserInteractedWithPlayer() { }\r\n\r\n handleUserInteractionEnded() { }\r\n\r\n handleUserClickedPlayer() {\r\n this.setState({\r\n isSubtitlesSelectorShown: false,\r\n isSocialShareShown: false\r\n });\r\n const { playbackState, onPlay, onReplay, onPause } = this.props;\r\n\r\n switch (playbackState) {\r\n case \"paused\":\r\n this.hideControls();\r\n onPlay();\r\n break;\r\n case \"scenarioFinished\":\r\n this.hideControls();\r\n onReplay();\r\n break;\r\n case \"elementFinished\":\r\n this.resetTimerAndShowControls();\r\n break;\r\n case \"playing\":\r\n if (this.state.isControlsShownAfterPlayerClicked) {\r\n if (this.hideControlsTimeoutHandle !== undefined) {\r\n clearTimeout(this.hideControlsTimeoutHandle);\r\n }\r\n onPause();\r\n } else {\r\n this.resetTimerAndShowControls();\r\n }\r\n break;\r\n default:\r\n // do nothing;\r\n }\r\n }\r\n\r\n private handleSeekStart() {\r\n this.setState({\r\n isSeeking: true,\r\n isSubtitlesSelectorShown: false,\r\n isSocialShareShown: false\r\n });\r\n this.props.onSeekStart();\r\n }\r\n\r\n private handleSeekEnd() {\r\n this.setState({\r\n isSeeking: false\r\n });\r\n this.props.onSeekEnd();\r\n }\r\n\r\n private calculateOverlayState(): MobileOverlayState {\r\n const { isLoading, isVolumeMuted, playbackState, message, isCTADisplayed } = this.props;\r\n\r\n if (this.state.isSocialShareShown) {\r\n return \"socialSelector\";\r\n }\r\n if (this.state.isSubtitlesSelectorShown) {\r\n return \"subtitlesSelector\";\r\n }\r\n if (message) {\r\n return \"message\";\r\n }\r\n if (isLoading) {\r\n return \"loading\";\r\n }\r\n if (isVolumeMuted) {\r\n return \"unmute\";\r\n }\r\n if (playbackState === \"paused\") {\r\n return \"pause\";\r\n }\r\n if (playbackState === \"scenarioFinished\" && !isCTADisplayed) {\r\n return \"replay\";\r\n }\r\n if (playbackState === \"playing\") {\r\n return \"play\";\r\n }\r\n }\r\n\r\n private get isOverlayDisplayed() {\r\n return this.props.isLoading || this.isControlsDisplayed;\r\n }\r\n\r\n private get isControlsDisplayed() {\r\n return this.state.isControlsShownAfterPlayerClicked ||\r\n this.state.isSeeking ||\r\n this.state.isSubtitlesSelectorShown ||\r\n this.state.isSocialShareShown ||\r\n !!this.props.message ||\r\n this.props.playbackState === \"scenarioFinished\" && !this.props.isCTADisplayed;\r\n }\r\n\r\n private handleSocialShareClicked() {\r\n this.setState({\r\n isSubtitlesSelectorShown: false,\r\n isSocialShareShown: !this.state.isSocialShareShown\r\n });\r\n }\r\n\r\n private handleSubtitlesSelectorClicked() {\r\n const { subtitles, selectedSubtitlesSrc, onSubtitleSourceSelected } = this.props;\r\n this.setState({\r\n isSocialShareShown: false\r\n });\r\n if (subtitles.length === 1) {\r\n if (selectedSubtitlesSrc) {\r\n onSubtitleSourceSelected(undefined);\r\n } else {\r\n onSubtitleSourceSelected(subtitles[0]);\r\n }\r\n } else {\r\n this.setState({\r\n isSubtitlesSelectorShown: !this.state.isSubtitlesSelectorShown\r\n });\r\n }\r\n }\r\n\r\n private subtitleSourceSelected(subtitle: Subtitle) {\r\n this.props.onSubtitleSourceSelected(subtitle);\r\n this.setState({\r\n isSubtitlesSelectorShown: false\r\n });\r\n }\r\n\r\n private handleShared() {\r\n this.setState({\r\n isSocialShareShown: false\r\n });\r\n }\r\n\r\n private resetTimerAndShowControls() {\r\n if (this.hideControlsTimeoutHandle !== undefined) {\r\n clearTimeout(this.hideControlsTimeoutHandle);\r\n }\r\n this.hideControlsTimeoutHandle = window.setTimeout(() => this.hideControls(), MobileControlsLayerComponent.SHOW_CONTROLS_TIMEOUT);\r\n this.setState({\r\n isControlsShownAfterPlayerClicked: true\r\n });\r\n }\r\n\r\n private hideControls() {\r\n this.setState({\r\n isControlsShownAfterPlayerClicked: false\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { FullscreenDisableIconComponent } from \"../../..//icons/fullscreen/FullscreenDisableIconComponent\";\r\nimport { FullscreenEnableIconComponent } from \"../../..//icons/fullscreen/FullscreenEnableIconComponent\";\r\nimport { SocialShareIconComponent } from \"../../../icons/socialShare/SocialShareIconComponent\";\r\nimport { SubtitlesIconComponent } from \"../../../icons/subtitles/SubtitlesIconComponent\";\r\nimport { VolumeLoudIconComponent } from \"../../../icons/volume/VolumeLoudIconComponent\";\r\nimport { MenuButtonComponent } from \"../common/MenuButtonComponent\";\r\n\r\nimport \"@styles/c-mobileMenu.scss\";\r\n\r\ninterface Props {\r\n isSocialShareDisplayed: boolean;\r\n onSocialShareClicked: () => void;\r\n\r\n isFullscreenSupported: boolean;\r\n isFullscreen: boolean;\r\n onToggleFullscreen: () => void;\r\n\r\n isVolumeMuted: boolean;\r\n onToggleMuted: () => void;\r\n\r\n hasSubtitles: boolean;\r\n selectedSubtitlesSrc?: string;\r\n onSubtitlesSelectorClicked: () => void;\r\n\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const MobileMenuComponent: React.SFC = (props) => {\r\n const {\r\n isSocialShareDisplayed,\r\n onSocialShareClicked,\r\n\r\n isFullscreenSupported,\r\n isFullscreen,\r\n onToggleFullscreen,\r\n \r\n isVolumeMuted,\r\n onToggleMuted,\r\n\r\n hasSubtitles,\r\n selectedSubtitlesSrc,\r\n onSubtitlesSelectorClicked,\r\n\r\n isDisabled\r\n\r\n } = props;\r\n\r\n return (\r\n
\r\n {isSocialShareDisplayed &&\r\n {} : onSocialShareClicked}\r\n icon={}\r\n isActive={!!selectedSubtitlesSrc}\r\n />\r\n }\r\n {hasSubtitles &&\r\n {} : onSubtitlesSelectorClicked}\r\n icon={}\r\n isActive={!!selectedSubtitlesSrc}\r\n />\r\n }\r\n\r\n {(isFullscreenSupported || (!isFullscreenSupported && window.self === window.top)) &&\r\n {} : onToggleFullscreen}\r\n icon={isFullscreen ? : }\r\n /> \r\n }\r\n\r\n {!isVolumeMuted &&\r\n {} : onToggleMuted}\r\n icon={}\r\n />\r\n }\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { VintomError } from \"src/api/model/error/VintomError\";\r\nimport { I18n } from \"../../../../i18n/i18n\";\r\nimport { Subtitle } from \"../../../../model/playerConfiguration/Subtitle\";\r\nimport { MobileOverlayState } from \"../../../../uiModel/mobileOverlay/MobileOverlayState\";\r\nimport { SocialShareConfiguration } from \"../../../../uiModel/socialShare/SocialShareConfiguration\";\r\nimport { LoaderIconComponent } from \"../../../icons/loader/LoaderIconComponent\";\r\nimport { PauseIconComponent } from \"../../../icons/playback/PauseIconComponent\";\r\nimport { PlayIconComponent } from \"../../../icons/playback/PlayIconComponent\";\r\nimport { ReplayIconComponent } from \"../../../icons/playback/ReplayIconComponent\";\r\nimport { VolumeMutedIconComponent } from \"../../../icons/volume/VolumeMutedIconComponent\";\r\nimport { MessageComponent } from \"../common/MessageComponent\";\r\nimport { SocialShareComponent } from \"../common/SocialShareComponent\";\r\nimport { SubtitleSelectorComponent } from \"../common/SubtitleSelectorComponent\";\r\n\r\nimport \"@styles/c-mobileOverlay.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n controlState?: MobileOverlayState;\r\n onUnmute: () => void;\r\n subtitles: Subtitle[];\r\n selectedSubtitlesSrc?: string;\r\n onSubtitleSourceSelected: (subtitle?: Subtitle) => void;\r\n socialShareConfiguration: SocialShareConfiguration;\r\n onShared: () => void;\r\n message: string | VintomError;\r\n onSendError: (error: VintomError) => void;\r\n playIconOnPoster: boolean;\r\n disableIcon: boolean;\r\n}\r\n\r\nexport const MobileOverlayComponent: React.SFC = (props) => {\r\n const {\r\n i18n,\r\n controlState,\r\n onUnmute,\r\n subtitles,\r\n selectedSubtitlesSrc,\r\n onSubtitleSourceSelected,\r\n socialShareConfiguration,\r\n onShared,\r\n message,\r\n onSendError,\r\n playIconOnPoster,\r\n disableIcon\r\n } = props;\r\n\r\n if (!controlState) {\r\n return <>;\r\n }\r\n\r\n let control: React.ReactNode;\r\n switch (controlState) {\r\n case \"message\":\r\n control = ;\r\n break;\r\n case \"loading\":\r\n control =
\r\n \r\n
;\r\n break;\r\n case \"socialSelector\":\r\n if (socialShareConfiguration.canShare) {\r\n control = \r\n \r\n
;\r\n } else {\r\n control = <>;\r\n }\r\n break;\r\n case \"subtitlesSelector\":\r\n control = \r\n \r\n ;\r\n break;\r\n case \"unmute\":\r\n control = \r\n \r\n ;\r\n break;\r\n case \"pause\":\r\n if (playIconOnPoster === true && disableIcon) {\r\n return <>;\r\n } else {\r\n control =
\r\n \r\n
;\r\n }\r\n break;\r\n case \"play\":\r\n control =
\r\n \r\n
;\r\n break;\r\n\r\n case \"replay\":\r\n control =
\r\n \r\n
;\r\n break;\r\n default:\r\n control = <>;\r\n break;\r\n }\r\n\r\n return (\r\n
\r\n {control}\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { ScenarioElement } from \"../../../../model/playerConfiguration/ScenarioElement\";\r\nimport { ScenarioPath } from \"../../../../model/scenarioPath/ScenarioPath\";\r\nimport { TimeFormatter } from \"../../../../utils/TimeFormatter\";\r\nimport { PartComponent } from \"../common/PartComponent\";\r\nimport { SliderComponent } from \"../common/SliderComponent\";\r\nimport { TooltipComponent } from \"../common/TooltipComponent\";\r\n\r\nimport \"@styles/c-mobileSeekbar.scss\";\r\n\r\ninterface Props {\r\n isDisabled?: boolean;\r\n isHidden: boolean;\r\n scenarioPath: ScenarioPath;\r\n totalTime: number;\r\n ellapsedTime: number;\r\n bufferedTime: number;\r\n onSeekTo: (time: number) => void;\r\n onJumpToScenarioElement: (scenarioElement: ScenarioElement, progress: number) => void;\r\n onSliderInteractionStarted: () => void;\r\n onSliderInteractionEnded: () => void;\r\n}\r\n\r\ninterface State { }\r\n\r\nexport class MobileSeekbarComponent extends React.Component {\r\n\r\n private slider: SliderComponent;\r\n private sliderHtml: HTMLElement;\r\n\r\n render() {\r\n const {\r\n isDisabled,\r\n isHidden,\r\n scenarioPath,\r\n totalTime,\r\n ellapsedTime,\r\n bufferedTime,\r\n onSeekTo,\r\n onJumpToScenarioElement,\r\n onSliderInteractionStarted,\r\n onSliderInteractionEnded\r\n } = this.props;\r\n\r\n const progress = ellapsedTime / totalTime;\r\n const bufferingProgress = bufferedTime / totalTime;\r\n\r\n return (\r\n \r\n {isDisabled &&
}\r\n
\r\n \r\n
\r\n
\r\n {scenarioPath.displayedPastParts.map((part) => (\r\n onJumpToScenarioElement(scenarioElement, jumpProgress)}\r\n />\r\n ))}\r\n this.slider = element}\r\n className=\"c-mobileSeekbar__slider\"\r\n style={{\r\n flexBasis: `${scenarioPath.currentPart.size}%`\r\n }}\r\n value={progress}\r\n isHandleAlwaysVisible={true}\r\n secondaryValue={bufferingProgress}\r\n onSliderInteraction={(value, isChanging) => isChanging && onSeekTo(value * totalTime)}\r\n onChangingSliderInteractionStarted={onSliderInteractionStarted}\r\n onSliderInteractionEnded={onSliderInteractionEnded}\r\n />\r\n {scenarioPath.displayedFutureParts.map((part) => (\r\n \r\n ))}\r\n
\r\n
\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n this.sliderHtml = ReactDOM.findDOMNode(this.slider) as HTMLElement;\r\n }\r\n\r\n private calculateTooltipX() {\r\n if (!this.slider) {\r\n return 0;\r\n }\r\n\r\n const { ellapsedTime, totalTime } = this.props;\r\n const progress = ellapsedTime / totalTime;\r\n\r\n const sliderBoundingRect = this.sliderHtml.getBoundingClientRect();\r\n\r\n return sliderBoundingRect.left + sliderBoundingRect.width * progress;\r\n }\r\n\r\n}\r\n","import { AnimationLayer } from \"@manager/layer/AnimationLayer\";\r\nimport { ControlsLayer } from \"@manager/layer/ControlsLayer\";\r\nimport { CTALayer } from \"@manager/layer/CTALayer\";\r\nimport { MusicLayer } from \"@manager/layer/MusicLayer\";\r\nimport { PlayerContainer } from \"@manager/layer/PlayerContainer\";\r\nimport { PosterLayer } from \"@manager/layer/PosterLayer\";\r\nimport { VideoLayer } from \"@manager/layer/VideoLayer\";\r\nimport { PlayerContainerObserver } from \"@manager/layerObserver/PlayerContainerObserver\";\r\nimport React from \"react\";\r\nimport { I18n } from \"../../i18n/i18n\";\r\nimport { PlayerControls } from \"../../model/playerConfiguration/PlayerControls\";\r\nimport { SocialShareConfiguration } from \"../../uiModel/socialShare/SocialShareConfiguration\";\r\nimport { BrowserFeatureDetector } from \"../../utils/BrowserFeatureDetector\";\r\nimport { ListenerHelper } from \"../../utils/ListenerHelper\";\r\nimport { SocialShareHelper } from \"../../utils/SocialShareHelper\";\r\nimport { AnimationLayerComponent } from \"../layer/AnimationLayerComponent\";\r\nimport { ControlsLayerComponent } from \"../layer/ControlsLayerComponent\";\r\nimport { CTALayerComponent } from \"../layer/CTALayerComponent\";\r\nimport { MusicLayerComponent } from \"../layer/MusicLayerComponent\";\r\nimport { PosterLayerComponent } from \"../layer/PosterLayerComponent\";\r\nimport { VideoLayerComponent } from \"../layer/VideoLayerComponent\";\r\n\r\nimport \"@styles/c-fullscreenImitation.scss\";\r\nimport \"@styles/c-playerContainer.scss\";\r\n\r\ninterface Props {\r\n i18n: I18n;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\ninterface State {\r\n isMobileDevice: boolean;\r\n isFullscreenSupported: boolean;\r\n isFullscreen: boolean;\r\n isLargePlayer: boolean;\r\n socialShareConfiguration: SocialShareConfiguration;\r\n playIconOnPoster: boolean;\r\n}\r\n\r\nexport class PlayerContainerComponent extends React.Component implements PlayerContainer {\r\n\r\n animationLayer: AnimationLayer;\r\n controlsLayer: ControlsLayer;\r\n ctaLayer: CTALayer;\r\n posterLayer: PosterLayer;\r\n videoLayer: VideoLayer;\r\n musicLayer: MusicLayer;\r\n\r\n private static DESKTOP_LARGE_PLAYER_THRESHOLD = 1200 * 800;\r\n // iPhone Xr width * height\r\n private static MOBILE_LARGE_PLAYER_THRESHOLD = 414 * 896;\r\n\r\n private observer: PlayerContainerObserver;\r\n\r\n private html: HTMLDivElement;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n isMobileDevice: BrowserFeatureDetector.isMobileDevice(),\r\n isFullscreenSupported: BrowserFeatureDetector.isFullscreenSupported(),\r\n isFullscreen: false,\r\n isLargePlayer: false,\r\n socialShareConfiguration: SocialShareHelper.getShareConfiguration(),\r\n playIconOnPoster: true\r\n };\r\n }\r\n\r\n render() {\r\n const { i18n, width, height } = this.props;\r\n const { isMobileDevice, isFullscreenSupported, isFullscreen, socialShareConfiguration, playIconOnPoster } = this.state;\r\n return (\r\n \r\n this.html = element}\r\n onMouseMove={() => this.isReady && this.observer.onPlayerInteraction()}\r\n onTouchMove={() => this.isReady && this.observer.onPlayerInteraction()}\r\n onMouseLeave={() => this.isReady && this.observer.onPlayerInteractionEnd()}\r\n >\r\n this.isReady && this.observer.onPlayerClick()}\r\n onContextMenu={(event) => {\r\n this.isReady && this.observer.onPlayerContextMenu(event.clientX, event.clientY);\r\n event.preventDefault();\r\n }}\r\n />\r\n this.videoLayer = element}\r\n className=\"c-playerContainer__layer\"\r\n isFullscreen={this.state.isFullscreen}\r\n />\r\n this.musicLayer = element}\r\n className=\"c-playerContainer__layer\"\r\n />\r\n this.posterLayer = element}\r\n className={`c-playerContainer__layer ${isFullscreen && !isFullscreenSupported ? \"fullposter\" : \"\"}`}\r\n />\r\n this.animationLayer = element}\r\n className=\"c-playerContainer__layer\"\r\n />\r\n this.ctaLayer = element}\r\n className=\"c-playerContainer__layer c-playerContainer__ctaLayer\"\r\n />\r\n this.controlsLayer = element}\r\n className=\"c-playerContainer__layer c-playerContainer__controlsLayer\"\r\n isMobileDevice={isMobileDevice}\r\n isFullscreenSupported={isFullscreenSupported}\r\n isFullscreen={isFullscreen}\r\n socialShareConfiguration={socialShareConfiguration}\r\n i18n={i18n}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n componentDidMount() {\r\n ListenerHelper.addEventListener(\"document\", \"fullscreenchange\", this.updateFullscreen);\r\n ListenerHelper.addEventListener(\"window\", \"resize\", this.updateIsLargePlayer);\r\n this.updateIsLargePlayer();\r\n }\r\n\r\n componentWillUnmount() {\r\n ListenerHelper.removeEventListener(\"document\", \"fullscreenchange\", this.updateFullscreen);\r\n ListenerHelper.removeEventListener(\"window\", \"resize\", this.updateIsLargePlayer);\r\n }\r\n\r\n // start of PlayerContainer implementation\r\n setConfiguration(configuration: PlayerControls) {\r\n if (!configuration.playIconOnPoster) {\r\n this.setState({\r\n playIconOnPoster: false\r\n });\r\n }\r\n }\r\n\r\n registerObserver(observer: PlayerContainerObserver) {\r\n this.observer = observer;\r\n }\r\n\r\n toggleFullscreen() {\r\n if (this.state.isFullscreen) {\r\n if (this.state.isFullscreenSupported) {\r\n document.exitFullscreen();\r\n } else {\r\n this.setState({\r\n isFullscreen: false,\r\n });\r\n }\r\n } else {\r\n if (this.state.isFullscreenSupported) {\r\n this.html.requestFullscreen()\r\n .catch((e) => {\r\n console.error(\"If player is embedded in an iframe please make sure the iframe has allowfullscreen attribute\", e);\r\n });\r\n } else {\r\n this.setState({\r\n isFullscreen: true,\r\n });\r\n }\r\n }\r\n }\r\n\r\n // end of PlayerContainer implementation\r\n\r\n private updateFullscreen = () => {\r\n const doc = document as any;\r\n const isFullscreen = !!(doc.fullscreenElement || doc.webkitFullscreenElement || doc.mozFullScreenElement);\r\n this.setState({\r\n isFullscreen\r\n });\r\n }\r\n\r\n private updateIsLargePlayer = () => {\r\n if (!this.html || this.state.isMobileDevice === undefined) {\r\n return false;\r\n }\r\n const layerArea = this.html.clientHeight * this.html.clientWidth;\r\n const isLargePlayer = layerArea > (this.state.isMobileDevice ?\r\n PlayerContainerComponent.MOBILE_LARGE_PLAYER_THRESHOLD : PlayerContainerComponent.DESKTOP_LARGE_PLAYER_THRESHOLD); \r\n this.setState({\r\n isLargePlayer\r\n });\r\n }\r\n\r\n private get isReady() {\r\n return !!this.observer;\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { I18n } from \"../../i18n/i18n\";\r\n\r\nimport \"@styles/c-unsupportedBrowserVersion.scss\";\r\n\r\ninterface Props { \r\n i18n: I18n;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport const UnsupportedBrowserVersionComponent: React.SFC = ({ i18n, width, height }) => {\r\n return (\r\n
\r\n \r\n {i18n.unsupportedBrowser}\r\n
\r\n \r\n );\r\n};\r\n","declare var COMPILE_TIME_DEFAULT_JS_ASSETS_LOCATION: string;\r\ndeclare var COMPILE_TIME_DEFAULT_VIDEOJS_LOCATION: string;\r\ndeclare var COMPILE_TIME_DEFAULT_LOTTIE_JS_LOCATION: string;\r\ndeclare var COMPILE_TIME_DEFAULT_PLAYER_SERVER_LOCATION: string;\r\ndeclare var COMPILE_TIME_DEFAULT_CTA_STORAGE_LOCATION: string;\r\n\r\n// tslint:disable:member-ordering\r\nexport class Config {\r\n static defaultJSAssetsLocation = COMPILE_TIME_DEFAULT_JS_ASSETS_LOCATION;\r\n\r\n static defaultVideoJSLocation = COMPILE_TIME_DEFAULT_VIDEOJS_LOCATION;\r\n static defaultLottieJSLocation = COMPILE_TIME_DEFAULT_LOTTIE_JS_LOCATION;\r\n static defaultPlayerServerUrl = COMPILE_TIME_DEFAULT_PLAYER_SERVER_LOCATION;\r\n static defaultCTAStorageUrl = COMPILE_TIME_DEFAULT_CTA_STORAGE_LOCATION;\r\n\r\n static vintomNamespace = \"vintom\";\r\n\r\n static placeholderStartMarker = \"[\";\r\n static placeholderEndMarker = \"]\";\r\n\r\n static placeholder = (name: string): string => `${Config.placeholderStartMarker}${name}${Config.placeholderEndMarker}`;\r\n\r\n static ctaStorageUrlPlaceholder = `${Config.placeholder(\"ctaStorageUrl\")}`;\r\n static ctaTypePlaceholder = `${Config.placeholder(\"type\")}`;\r\n static jsCTAStorageUrlPattern = `${Config.ctaStorageUrlPlaceholder}cta/${Config.ctaTypePlaceholder}/cta.js`;\r\n static htmlCTAStorageUrlPattern = `${Config.ctaStorageUrlPlaceholder}cta/${Config.ctaTypePlaceholder}/cta.html`;\r\n static cssCTAStorageUrlPattern = `${Config.ctaStorageUrlPlaceholder}cta/${Config.ctaTypePlaceholder}/cta.css`;\r\n \r\n static videoConfigurationUrl = (playerServerUrl: string, videoCode: string) => \r\n `${playerServerUrl ? playerServerUrl : Config.defaultPlayerServerUrl}videoConfiguration/${videoCode}`\r\n\r\n static videoLogUrl = (videoCode: string) => `${Config.defaultPlayerServerUrl}video/logError/${videoCode}`;\r\n\r\n static gaEndpoint = `https://www.googletagmanager.com/gtag/js?l=vintomGADataLayer`;\r\n\r\n}\r\n// tslint:enable:member-ordering\r\n","import { CTAFunction } from \"../../api/cta/ctaFunction/CTAFunction\";\r\n\r\nexport class CTAResource {\r\n constructor(public ctaFunction: CTAFunction, public html: string) {}\r\n}","import { CTAFunction } from \"../../../api/cta/ctaFunction/CTAFunction\";\r\nimport { PlayerCTAAPI } from \"../../../api/cta/PlayerCTAAPI\";\r\nimport { ClickableAreaConditionalCTAConfiguration } from \"./ClickableAreaConditionalCTAConfiguration\";\r\n\r\nconst ACTION_ID = 0;\r\n\r\nexport const clickableAreaConditionalCTAFunction: CTAFunction =\r\n (api: PlayerCTAAPI, ctaId: number, ctaBoard: HTMLElement, config: ClickableAreaConditionalCTAConfiguration) => {\r\n\r\n const clickableArea = document.createElement(\"div\");\r\n\r\n if (config.conditionalParam && config.conditionalValue &&\r\n config.conditionalParam === config.conditionalValue) {\r\n clickableArea.setAttribute(\"class\", \"clickableAreaItem\");\r\n clickableArea.style.top = `${parseInt(config.top, 0)}%`;\r\n clickableArea.style.bottom = `${parseInt(config.bottom, 0)}%`;\r\n clickableArea.style.left = `${parseInt(config.left, 0)}%`;\r\n clickableArea.style.right = `${parseInt(config.right, 0)}%`;\r\n clickableArea.style.position = \"absolute\";\r\n clickableArea.style.pointerEvents = \"all\";\r\n clickableArea.style.cursor = \"pointer\";\r\n }\r\n\r\n clickableArea.onclick = () => {\r\n if (config.scenarioElementId) {\r\n api.jumpToScenarioElement(Number(config.scenarioElementId));\r\n } else {\r\n window.open(config.url, (config.target ? config.target : \"_blank\"));\r\n }\r\n api.onCTAAction(ctaId, ACTION_ID);\r\n };\r\n\r\n const container = ctaBoard.querySelector(\"[data-role='container']\");\r\n container.appendChild(clickableArea);\r\n \r\n return {\r\n action: () => {}\r\n };\r\n\r\n };\r\n","import { CTAFunction } from \"../../../api/cta/ctaFunction/CTAFunction\";\r\nimport { PlayerCTAAPI } from \"../../../api/cta/PlayerCTAAPI\";\r\nimport { ClickableAreaCTAConfiguration } from \"./ClickableAreaCTAConfiguration\";\r\n\r\nconst ACTION_ID = 0;\r\n\r\nexport const clickableAreaCTAFunction: CTAFunction =\r\n (api: PlayerCTAAPI, ctaId: number, ctaBoard: HTMLElement, config: ClickableAreaCTAConfiguration) => {\r\n\r\n const clickableArea = document.createElement(\"div\");\r\n\r\n clickableArea.setAttribute(\"class\", \"clickableAreaItem\");\r\n clickableArea.style.top = `${parseInt(config.top, 0)}%`;\r\n clickableArea.style.bottom = `${parseInt(config.bottom, 0)}%`;\r\n clickableArea.style.left = `${parseInt(config.left, 0)}%`;\r\n clickableArea.style.right = `${parseInt(config.right, 0)}%`;\r\n clickableArea.style.position = \"absolute\";\r\n clickableArea.style.pointerEvents = \"all\";\r\n clickableArea.style.cursor = \"pointer\";\r\n\r\n clickableArea.onclick = () => {\r\n if (config.scenarioElementId) {\r\n api.jumpToScenarioElement(Number(config.scenarioElementId));\r\n } else {\r\n window.open(config.url, config.target);\r\n }\r\n api.onCTAAction(ctaId, ACTION_ID);\r\n };\r\n\r\n const container = ctaBoard.querySelector(\"[data-role='container']\");\r\n container.appendChild(clickableArea);\r\n \r\n return {\r\n action: () => {}\r\n };\r\n };\r\n","import { CTAFunction } from \"../../../api/cta/ctaFunction/CTAFunction\";\r\nimport { PlayerCTAAPI } from \"../../../api/cta/PlayerCTAAPI\";\r\nimport { ClickableButtonCTAConfiguration } from \"./ClickableButtonCTAConfiguration\";\r\n\r\nconst ACTION_ID = 0;\r\n\r\nexport const clickableButtonCTAFunction: CTAFunction =\r\n (api: PlayerCTAAPI, ctaId: number, ctaBoard: HTMLElement, config: ClickableButtonCTAConfiguration) => {\r\n\r\n const clickableButton = document.createElement(\"div\");\r\n\r\n clickableButton.setAttribute(\"class\", \"clickableAreaItemButtons\");\r\n clickableButton.style.top = `${parseInt(config.top, 0)}%`;\r\n clickableButton.style.bottom = `${parseInt(config.bottom, 0)}%`;\r\n clickableButton.style.left = `${parseInt(config.left, 0)}%`;\r\n clickableButton.style.right = `${parseInt(config.right, 0)}%`;\r\n \r\n if (config.rounded === true) {\r\n clickableButton.classList.add(\"roundedBorders\");\r\n }\r\n\r\n if (config.outline === true) {\r\n clickableButton.classList.add(\"ctaButtonBorders\");\r\n }\r\n\r\n if (config.bgrcolor) {\r\n clickableButton.style.backgroundColor = config.bgrcolor;\r\n }\r\n\r\n if (config.color) {\r\n clickableButton.style.color = config.color;\r\n }\r\n\r\n if (config.buttontext) {\r\n const p = document.createElement(\"p\");\r\n p.innerHTML = config.buttontext;\r\n clickableButton.appendChild(p);\r\n clickableButton.style.fontSize = `${config.textsize}px`;\r\n }\r\n\r\n clickableButton.onclick = () => {\r\n if (config.scenarioElementId) {\r\n api.jumpToScenarioElement(Number(config.scenarioElementId));\r\n } else {\r\n window.open(config.url, \"_blank\");\r\n }\r\n api.onCTAAction(ctaId, ACTION_ID);\r\n };\r\n\r\n const container = ctaBoard.querySelector(\"[data-role='container']\");\r\n container.appendChild(clickableButton);\r\n\r\n return {\r\n action: () => {}\r\n };\r\n };\r\n","import { CTAResource } from \"../ctaResource/CTAResource\";\r\nimport { clickableAreaCTAFunction } from \"./clickableArea/clickableAreaCTA\";\r\nimport { clickableAreaConditionalCTAFunction } from \"./clickableAreaConditional/clickableAreaConditionalCTA\";\r\nimport { clickableButtonCTAFunction } from \"./clickableButton/clickableButtonCTA\";\r\n\r\n// @ts-ignore\r\nimport clickableAreaHTML from \"./clickableArea/clickableAreaCTA.html\";\r\n// @ts-ignore\r\nimport clickableAreaConditionalHTML from \"./clickableAreaConditional/clickableAreaConditionalCTA.html\";\r\n// @ts-ignore\r\nimport clickableButtonHTML from \"./clickableButton/clickableButtonCTA.html\";\r\n\r\nconst createPrepackagedCTAs = () => {\r\n const map = new Map();\r\n map.set(\"clickableareaconditional_new\", new CTAResource(clickableAreaConditionalCTAFunction, clickableAreaConditionalHTML));\r\n map.set(\"clickableAreaConditional\", new CTAResource(clickableAreaConditionalCTAFunction, clickableAreaConditionalHTML));\r\n map.set(\"clickableArea\", new CTAResource(clickableAreaCTAFunction, clickableAreaHTML));\r\n map.set(\"clickableButton\", new CTAResource(clickableButtonCTAFunction, clickableButtonHTML));\r\n return map;\r\n};\r\n\r\nexport const prepackagedCTAs = createPrepackagedCTAs();\r\n","import { i18nEn } from \"./i18nEn\";\r\nimport { i18nEs } from \"./i18nEs\";\r\nimport { i18nPl } from \"./i18nPl\";\r\n\r\nexport interface I18n {\r\n unsupportedBrowser: string;\r\n videoDeleted: string;\r\n videoInPreparation: string;\r\n\r\n sendReport: string;\r\n thankYouForSendingReport: string;\r\n configurationParsingFailure: string;\r\n resourceLoadingFailure: string;\r\n playbackFailure: string;\r\n runtimeError: string;\r\n\r\n subtitles: string;\r\n part: string;\r\n play: string;\r\n pause: string;\r\n replay: string;\r\n mute: string;\r\n unmute: string;\r\n fullscreen: string;\r\n share: string;\r\n exitFullscreen: string;\r\n poweredByVintom: string;\r\n licenceAdditionalText: string;\r\n licenceLabel: string;\r\n linkLicence: string;\r\n\r\n bandwidth: string;\r\n mbps: string;\r\n\r\n facebook: string;\r\n twitter: string;\r\n\r\n loadingPageMainMsg: string;\r\n loadingPageDetails: string;\r\n videoInPreparationLoadingPage: string;\r\n}\r\n\r\nexport const i18n = {\r\n \"en\": i18nEn,\r\n \"pl\": i18nPl,\r\n \"es\": i18nEs\r\n};\r\n","import { I18n } from \"./i18n\";\r\n\r\nexport const i18nEn: I18n = {\r\n unsupportedBrowser: \"Sorry, unsupported browser. Please upgrade or try a different browser\",\r\n videoDeleted: \"Sorry, this video is no longer available\",\r\n videoInPreparation: \"This video will be available in a moment
Wait a moment and try to reload the page!\",\r\n\r\n sendReport: \"Send the report\",\r\n thankYouForSendingReport: \"Thank you for sending your error report\",\r\n configurationParsingFailure: \"Parsing player configuration failed\",\r\n resourceLoadingFailure: \"There was an error while loading scenario elements\",\r\n playbackFailure: \"An error has occured\",\r\n runtimeError: \"An error has occured\",\r\n\r\n subtitles: \"Subtitles\",\r\n part: \"Part\",\r\n play: \"Play\",\r\n pause: \"Pause\",\r\n replay: \"Replay\",\r\n mute: \"Mute\",\r\n unmute: \"Unmute\",\r\n share: \"Share\",\r\n fullscreen: \"Full screen\",\r\n exitFullscreen: \"Exit full screen\",\r\n poweredByVintom: \"Powered by Vintom\",\r\n licenceAdditionalText: \"Read\",\r\n licenceLabel: \"player licence\",\r\n linkLicence: \"https://player2.vintom.com/player/Vintom_player_terms_of_use.pdf\",\r\n\r\n bandwidth: \"Bandwidth\",\r\n mbps: \"Mbps\",\r\n\r\n facebook: \"Facebook\",\r\n twitter: \"Twitter\",\r\n\r\n loadingPageMainMsg: \"Please wait\",\r\n loadingPageDetails: \"Your browser will reload automatically when the video is ready.\",\r\n videoInPreparationLoadingPage: \"This video will be available in a moment
Please wait and try to reload the page\"\r\n};\r\n","import { I18n } from \"./i18n\";\r\n\r\nexport const i18nEs: I18n = {\r\n unsupportedBrowser: \"Tu versión de navegador no está soportada. Actualiza tu navegador a la versión más reciente o prueba otro.\",\r\n videoDeleted: \"Lo sentimos, este video ya no está disponible.\",\r\n videoInPreparation: \"El video estará disponible en breve.
¡Carga la página de nuevo en unos instantes!\",\r\n\r\n sendReport: \"Enviar el informe\",\r\n thankYouForSendingReport: \"Gracias por tu solicitud.\",\r\n configurationParsingFailure: \"La configuracón del reproductor incorrecta.\",\r\n resourceLoadingFailure: \"Se produjo un error en la carga de los elementos del vídeo\",\r\n playbackFailure: \"Se produjo un error\",\r\n runtimeError: \"Se produjo un error\",\r\n\r\n subtitles: \"Subtítulos\",\r\n part: \"Parte\",\r\n play: \"Reproducir\",\r\n pause: \"Pausa\",\r\n replay: \"Ver de nuevo\",\r\n mute: \"Silenciar\",\r\n unmute: \"Activar sonido\",\r\n share: \"Compartir\",\r\n fullscreen: \"Pantalla completa\",\r\n exitFullscreen: \"Salir de modo de pantalla completa\",\r\n poweredByVintom: \"Powered by Vintom\",\r\n licenceAdditionalText: \"Read\",\r\n licenceLabel: \"player licence\",\r\n linkLicence: \"https://player2.vintom.com/player/Vintom_player_terms_of_use.pdf\",\r\n\r\n bandwidth: \"Ancho de banda\",\r\n mbps: \"Mbps\",\r\n\r\n facebook: \"Facebook\",\r\n twitter: \"Twitter\",\r\n\r\n loadingPageMainMsg: \"Espera un momento, por favor.\",\r\n loadingPageDetails: \"Su navegador se recargará automáticamente cuando la película esté lista.\",\r\n videoInPreparationLoadingPage: \"La película aún no está lista.
Intenta volver a cargar la página más tarde\"\r\n};\r\n","import { I18n } from \"./i18n\";\r\n\r\nexport const i18nPl: I18n = {\r\n unsupportedBrowser: \"Twoja przeglądarka nie jest obsługiwana. Uaktualnij do nowszej wersji lub spróbuj na innej\",\r\n videoDeleted: \"Przepraszamy, ten film nie jest już dostępny.\",\r\n videoInPreparation: \"Film już za chwilę będzie dostępny
Przeładuj stronę za jakiś czas!\",\r\n\r\n sendReport: \"Wyślij raport\",\r\n thankYouForSendingReport: \"Dziękujemy za wysłanie zgłoszenia\",\r\n configurationParsingFailure: \"Konfiguracja odtwarzacza jest nieprawidłowa\",\r\n resourceLoadingFailure: \"Wystąpił błąd w czasie ładowania elementów scenariusza\",\r\n playbackFailure: \"Wystąpił błąd\",\r\n runtimeError: \"Wystąpił błąd\",\r\n\r\n subtitles: \"Napisy\",\r\n part: \"Część\",\r\n play: \"Włącz\",\r\n pause: \"Zatrzymaj\",\r\n replay: \"Odtwórz ponownie\",\r\n mute: \"Wycisz\",\r\n unmute: \"Włącz głos\",\r\n share: \"Udostępnij\",\r\n fullscreen: \"Pełny ekran\",\r\n exitFullscreen: \"Wróć do małego ekranu\",\r\n poweredByVintom: \"Powered by Vintom\",\r\n licenceAdditionalText: \"Read\",\r\n licenceLabel: \"player licence\",\r\n linkLicence: \"https://player2.vintom.com/player/Vintom_player_terms_of_use.pdf\",\r\n\r\n bandwidth: \"Pasmo\",\r\n mbps: \"Mbps\",\r\n\r\n facebook: \"Facebook\",\r\n twitter: \"Twitter\",\r\n\r\n loadingPageMainMsg: \"Film w trakcie tworzenia...\",\r\n loadingPageDetails: \"Twój film jest właśnie przygotowywany. Gdy proces się zakończy, strona odświeży się automatycznie.\",\r\n videoInPreparationLoadingPage: \"Film nie jest jeszcze gotowy. Spróbuj przeładować stronę za jakiś czas\",\r\n};\r\n","import { inject, injectable } from \"inversify\";\r\nimport { PlayerState } from \"../api/model/playerState/PlayerState\";\r\nimport { I18n } from \"../i18n/i18n\";\r\nimport { FullPlayerConfiguration } from \"../model/playerConfiguration/FullPlayerConfiguration\";\r\nimport { IframeNotifierPlayerActionState } from \"../model/playerState/IframeNotifierPlayerActionState\";\r\nimport { IframeNotifierPlayerState } from \"../model/playerState/IframeNotifierPlayerState\";\r\nimport { IframeNotifierVintomError } from \"../model/playerState/IframeNotifierVintomError\";\r\nimport { ConfigurationBuilder } from \"./configurationBuilder/ConfigurationBuilder\";\r\nimport { TYPES } from \"./di/types\";\r\nimport { AnalyticsCollector } from \"./playerAnalytics/AnalyticsCollector\";\r\nimport { PlayerManager } from \"./PlayerManager\";\r\n\r\n@injectable()\r\nexport class NotSupportedBrowserPlayerManagerImpl implements PlayerManager {\r\n\r\n private i18n: I18n;\r\n\r\n private playerConfig: FullPlayerConfiguration;\r\n\r\n private videoCode: string;\r\n private configurationJSON;\r\n private configurationOverrideJSON;\r\n private personalizationJSON;\r\n\r\n private configurationLoaded: boolean;\r\n private queueLogNotSupportedBrowser: boolean;\r\n\r\n constructor(\r\n @inject(TYPES.analyticsCollector.AnalyticsCollector) private analyticsCollector: AnalyticsCollector,\r\n @inject(TYPES.configurationBuilder.ConfigurationBuilder) private configurationBuilder: ConfigurationBuilder) {\r\n }\r\n\r\n run(i18n: I18n, videoCode: string, configurationJSON: any, configurationOverrideJSON: any, personalizationJSON: any) {\r\n this.videoCode = videoCode;\r\n this.configurationJSON = configurationJSON;\r\n this.configurationOverrideJSON = configurationOverrideJSON;\r\n this.personalizationJSON = personalizationJSON;\r\n this.i18n = i18n;\r\n\r\n this.configurationBuilder.build(videoCode, configurationJSON, configurationOverrideJSON, personalizationJSON)\r\n .then((configuration) => this.playerConfig = configuration)\r\n .then(() => this.analyticsCollector.initialize(\r\n this.playerConfig.code,\r\n this.playerConfig.videoDate,\r\n this.playerConfig.analyticsEndpoints,\r\n this.playerConfig.campaign,\r\n this.playerConfig.groupId))\r\n .then(() => {\r\n this.configurationLoaded = true;\r\n if (this.queueLogNotSupportedBrowser) {\r\n this.logNotSupportedBrowser();\r\n this.queueLogNotSupportedBrowser = false;\r\n }\r\n });\r\n }\r\n\r\n logNotSupportedBrowser(): void {\r\n if (this.configurationLoaded) {\r\n this.analyticsCollector.logNotSupportedBrowser();\r\n } else {\r\n this.queueLogNotSupportedBrowser = true;\r\n }\r\n }\r\n\r\n play(): void {\r\n }\r\n\r\n pause(): void {\r\n }\r\n\r\n replay(): void {\r\n }\r\n \r\n performAction(ctaId: number, actionId: number, ...args: any[]): void {\r\n }\r\n\r\n moveToScenarioElement(id: number): void {\r\n }\r\n\r\n prepareForRemove(): void {\r\n }\r\n\r\n registerOnReady(callback: () => void): void {\r\n }\r\n\r\n registerOnError(callback: (error: IframeNotifierVintomError) => void): void {\r\n }\r\n\r\n registerOnPlay(callback: (payload: IframeNotifierPlayerState) => void): void {\r\n }\r\n\r\n registerOnPause(callback: (payload: IframeNotifierPlayerState) => void): void {\r\n }\r\n\r\n registerOnFinish(callback: (payload: IframeNotifierPlayerState) => void): void {\r\n }\r\n\r\n registerOnAction(callback: (payload: IframeNotifierPlayerActionState) => void): void {\r\n }\r\n\r\n getState(): PlayerState {\r\n return undefined;\r\n }\r\n}\r\n","import canAutoPlay from \"can-autoplay\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport { PlayerCTAAPI, ScencarioElementOptions } from \"../api/cta/PlayerCTAAPI\";\r\nimport { VintomError } from \"../api/model/error/VintomError\";\r\nimport { PlayerState } from \"../api/model/playerState/PlayerState\";\r\nimport { I18n } from \"../i18n/i18n\";\r\nimport { CTA } from \"../model/playerConfiguration/CTA\";\r\nimport { FullPlayerConfiguration } from \"../model/playerConfiguration/FullPlayerConfiguration\";\r\nimport { ScenarioElement } from \"../model/playerConfiguration/ScenarioElement\";\r\nimport { IframeNotifierPlayerActionState } from \"../model/playerState/IframeNotifierPlayerActionState\";\r\nimport { IframeNotifierPlayerReady } from \"../model/playerState/IframeNotifierPlayerReady\";\r\nimport { IframeNotifierPlayerState } from \"../model/playerState/IframeNotifierPlayerState\";\r\nimport { IframeNotifierVintomError } from \"../model/playerState/IframeNotifierVintomError\";\r\nimport { ScenarioElementPlayOptions } from \"../model/scenarioElementPlayOptions/ScenarioElementPlayOptions\";\r\nimport { ScenarioGlobalState } from \"../model/scenarioGlobalState/ScenarioGlobalState\";\r\nimport { ScenarioPath } from \"../model/scenarioPath/ScenarioPath\";\r\nimport { ListenerHelper } from \"../utils/ListenerHelper\";\r\nimport { ConfigurationBuilder } from \"./configurationBuilder/ConfigurationBuilder\";\r\nimport { TYPES } from \"./di/types\";\r\nimport { ErrorReporter } from \"./errorReporter/ErrorReporter\";\r\nimport { IframeNotifier } from \"./iframeNotifier/IframeNotifier\";\r\nimport { PlayerLoader } from \"./loader/playerLoader/PlayerLoader\";\r\nimport { ScenarioLoader } from \"./loader/scenarioLoader/ScenarioLoader\";\r\nimport { AnalyticsCollector } from \"./playerAnalytics/AnalyticsCollector\";\r\nimport { PlayerManager, PlayerScenarioRunnerAPI } from \"./PlayerManager\";\r\nimport { PreferencesStorage } from \"./preferencesStorage/PreferencesStorage\";\r\nimport { ControlsLayerManager } from \"./scenarioRunner/layerManager/ControlsLayerManager\";\r\nimport { MusicLayerManager } from \"./scenarioRunner/layerManager/MusicLayerManager\";\r\nimport { PlayerContainerManager } from \"./scenarioRunner/layerManager/PlayerContainerManager\";\r\nimport { PosterLayerManager } from \"./scenarioRunner/layerManager/PosterLayerManager\";\r\nimport { VideoLayerManager } from \"./scenarioRunner/layerManager/VideoLayerManager\";\r\nimport { ScenarioRunner } from \"./scenarioRunner/ScenarioRunner\";\r\nimport { ThemeUpdater } from \"./themeUpdater/ThemeUpdater\";\r\n\r\n@injectable()\r\nexport class PlayerManagerImpl implements PlayerManager, PlayerCTAAPI, PlayerScenarioRunnerAPI {\r\n\r\n private static DEFAULT_SCENARIO_ELEMENT_PLAY_OPTIONS: ScenarioElementPlayOptions = {\r\n isAutoplay: false,\r\n progress: 0\r\n };\r\n\r\n private static ANALYTICS_FASTER_RATE = 10;\r\n private static ANALYTICS_SLOWER_RATE = 20;\r\n private static ANALYTICS_SLOWER_RATE_THRESHOLD = 120;\r\n\r\n private static ANALYTICS_PROGRESS_25_THRESHOLD = 0.25;\r\n private static ANALYTICS_PROGRESS_50_THRESHOLD = 0.50;\r\n private static ANALYTICS_PROGRESS_75_THRESHOLD = 0.75;\r\n private static ANALYTICS_PROGRESS_100_THRESHOLD = 1;\r\n\r\n private i18n: I18n;\r\n\r\n private isPlayerStarted: boolean;\r\n private analyticsIntervalHandle: number;\r\n private playerConfig: FullPlayerConfiguration;\r\n private scenarioElementProgress: number;\r\n\r\n private onReadyCallbacks: ((payload: IframeNotifierPlayerReady) => void)[] = [];\r\n private onErrorCallbacks: ((error: IframeNotifierVintomError) => void)[] = [];\r\n private onPlayCallbacks: ((payload: IframeNotifierPlayerState) => void)[] = [];\r\n private onPauseCallbacks: ((payload: IframeNotifierPlayerState) => void)[] = [];\r\n private onFinishCallbacks: ((payload: IframeNotifierPlayerState) => void)[] = [];\r\n private onActionCallbacks: ((payload: IframeNotifierPlayerActionState) => void)[] = [];\r\n\r\n private videoCode: string;\r\n private configurationJSON;\r\n private configurationOverrideJSON;\r\n private personalizationJSON;\r\n\r\n constructor(\r\n @inject(TYPES.analyticsCollector.AnalyticsCollector) private analyticsCollector: AnalyticsCollector,\r\n @inject(TYPES.configurationBuilder.ConfigurationBuilder) private configurationBuilder: ConfigurationBuilder,\r\n @inject(TYPES.iframeNotifier.IframeNotifier) private iframeNotifier: IframeNotifier,\r\n @inject(TYPES.preferencesStorage.PreferencesStorage) private preferencesStorage: PreferencesStorage,\r\n @inject(TYPES.themeUpdater.ThemeUpdater) private themeUpdater: ThemeUpdater,\r\n @inject(TYPES.errorReporter.ErrorReporter) private errorReporter: ErrorReporter,\r\n @inject(TYPES.loader.playerLoader.PlayerLoader) private playerLoader: PlayerLoader,\r\n @inject(TYPES.loader.scenarioLoader.ScenarioLoader) private scenarioLoader: ScenarioLoader,\r\n @inject(TYPES.scenarioRunner.ScenarioRunner) private scenarioRunner: ScenarioRunner,\r\n @inject(TYPES.scenarioRunner.layerManager.ControlsLayerManager) private controlsLayerManager: ControlsLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.PlayerContainerManager) private playerContainerManager: PlayerContainerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.PosterLayerManager) private posterLayerManager: PosterLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.VideoLayerManager) private videoLayerManager: VideoLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.MusicLayerManager) private musicLayerManager: MusicLayerManager) {\r\n\r\n this.scenarioRunner.setPlayerAPIDelegate(this);\r\n this.scenarioLoader.setPlayerCTAAPIDelegate(this);\r\n this.registerIframeNotifier();\r\n }\r\n\r\n run(i18n: I18n, videoCode: string, configurationJSON: any, configurationOverrideJSON: any, personalizationJSON: any) {\r\n this.videoCode = videoCode;\r\n this.configurationJSON = configurationJSON;\r\n this.configurationOverrideJSON = configurationOverrideJSON;\r\n this.personalizationJSON = personalizationJSON;\r\n this.i18n = i18n;\r\n\r\n ListenerHelper.addEventListener(\"window\", \"beforeunload\", () => this.onPlayerRemove());\r\n\r\n this.controlsLayerManager.showLoader();\r\n this.configurationBuilder.build(videoCode, configurationJSON, configurationOverrideJSON, personalizationJSON)\r\n .then((configuration) => this.playerConfig = configuration)\r\n .then(() => this.errorReporter.initialize(this.playerConfig.code))\r\n .then(() => this.analyticsCollector.initialize(\r\n this.playerConfig.code,\r\n this.playerConfig.videoDate,\r\n this.playerConfig.analyticsEndpoints,\r\n this.playerConfig.campaign,\r\n this.playerConfig.groupId))\r\n .then(() => this.themeUpdater.setTheme(this.playerConfig.skin))\r\n .then(() => this.start())\r\n .catch((error) => this.onError(error));\r\n }\r\n\r\n play(): void {\r\n this.scenarioRunner.play();\r\n }\r\n\r\n pause(): void {\r\n this.scenarioRunner.pause();\r\n }\r\n\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void {\r\n this.scenarioRunner.performAction(ctaId, actionId, args);\r\n }\r\n\r\n moveToScenarioElement(id: number): void {\r\n const scenarioElement = this.playerConfig.findScenarioElement(id);\r\n if (scenarioElement) {\r\n this.loadScenarioElement(scenarioElement);\r\n }\r\n }\r\n\r\n prepareForRemove(): void {\r\n ListenerHelper.removeAllEventListeners();\r\n this.scenarioLoader.prepareForRemove();\r\n this.onPlayerRemove();\r\n this.clearAnalyticsInterval();\r\n }\r\n\r\n registerOnReady(callback: () => void): void {\r\n this.onReadyCallbacks.push(callback);\r\n }\r\n\r\n registerOnError(callback: (error: IframeNotifierVintomError) => void): void {\r\n this.onErrorCallbacks.push(callback);\r\n }\r\n\r\n registerOnPlay(callback: (payload: IframeNotifierPlayerState) => void): void {\r\n this.onPlayCallbacks.push(callback);\r\n }\r\n\r\n registerOnPause(callback: (payload: IframeNotifierPlayerState) => void): void {\r\n this.onPauseCallbacks.push(callback);\r\n }\r\n\r\n registerOnFinish(callback: (payload: IframeNotifierPlayerState) => void): void {\r\n this.onFinishCallbacks.push(callback);\r\n }\r\n\r\n registerOnAction(callback: (payload: IframeNotifierPlayerActionState) => void): void {\r\n this.onActionCallbacks.push(callback);\r\n }\r\n\r\n onReady(): void {\r\n this.analyticsCollector.logPlayerInit(this.getCurrentElementId());\r\n const readyState: IframeNotifierPlayerReady = {\r\n code: this.playerConfig.code,\r\n type: \"vintomPlayerReady\"\r\n };\r\n this.onReadyCallbacks.forEach((cb) => cb(readyState));\r\n }\r\n\r\n onError(error: VintomError): void {\r\n const isConfigurationParsed = !!this.playerConfig;\r\n if (!isConfigurationParsed) {\r\n console.error(error);\r\n return;\r\n }\r\n if (this.playerConfig.adminMode) {\r\n console.trace();\r\n console.error(error);\r\n }\r\n if (error.options.isLogAndSendToAnalytics) {\r\n const iframeError = error as IframeNotifierVintomError;\r\n iframeError.code = this.playerConfig.code;\r\n iframeError.type = \"vintomPlayerError\";\r\n this.onErrorCallbacks.forEach((cb) => {\r\n cb(iframeError);\r\n });\r\n this.analyticsCollector.logPlayerError(this.getCurrentElementId(), error);\r\n }\r\n if (error.options.isDisplayToUser) {\r\n this.controlsLayerManager.showMessage(error);\r\n }\r\n }\r\n\r\n onPlay(): void {\r\n const playbackData = this.scenarioRunner.getPlaybackData();\r\n if (!this.isPlayerStarted) {\r\n this.analyticsCollector.logPlayerStart(this.getCurrentElementId());\r\n this.isPlayerStarted = true;\r\n }\r\n\r\n this.analyticsCollector.logScenarioElementPlaying(\r\n this.getCurrentElementId(),\r\n playbackData.videoType,\r\n playbackData.volume,\r\n playbackData.duration,\r\n playbackData.time);\r\n\r\n const state = this.getState() as IframeNotifierPlayerState;\r\n state.code = this.playerConfig.code;\r\n state.type = \"vintomPlayerPlay\";\r\n this.onPlayCallbacks.forEach((cb) => cb(state));\r\n }\r\n\r\n onPause(): void {\r\n const playbackData = this.scenarioRunner.getPlaybackData();\r\n this.analyticsCollector.logScenarioElementPlaying(\r\n this.getCurrentElementId(),\r\n playbackData.videoType,\r\n playbackData.volume,\r\n playbackData.duration,\r\n playbackData.time,\r\n \"PAUSED\");\r\n\r\n const state = this.getState() as IframeNotifierPlayerState;\r\n state.code = this.playerConfig.code;\r\n state.type = \"vintomPlayerPause\";\r\n this.onPauseCallbacks.forEach((cb) => cb(state));\r\n }\r\n\r\n onSeek(): void {\r\n const playbackData = this.scenarioRunner.getPlaybackData();\r\n this.analyticsCollector.logScenarioElementPlaying(\r\n this.getCurrentElementId(),\r\n playbackData.videoType,\r\n playbackData.volume,\r\n playbackData.duration,\r\n playbackData.time,\r\n \"SEEKED\");\r\n }\r\n\r\n onProgress(progress: number): void {\r\n\r\n if (this.scenarioElementProgress < PlayerManagerImpl.ANALYTICS_PROGRESS_25_THRESHOLD &&\r\n progress >= PlayerManagerImpl.ANALYTICS_PROGRESS_25_THRESHOLD) {\r\n this.analyticsCollector.logScenarioElementProgress(this.getCurrentElementId(), 25);\r\n }\r\n if (this.scenarioElementProgress < PlayerManagerImpl.ANALYTICS_PROGRESS_50_THRESHOLD &&\r\n progress >= PlayerManagerImpl.ANALYTICS_PROGRESS_50_THRESHOLD) {\r\n this.analyticsCollector.logScenarioElementProgress(this.getCurrentElementId(), 50);\r\n }\r\n if (this.scenarioElementProgress < PlayerManagerImpl.ANALYTICS_PROGRESS_75_THRESHOLD &&\r\n progress >= PlayerManagerImpl.ANALYTICS_PROGRESS_75_THRESHOLD) {\r\n this.analyticsCollector.logScenarioElementProgress(this.getCurrentElementId(), 75);\r\n }\r\n if (this.scenarioElementProgress < PlayerManagerImpl.ANALYTICS_PROGRESS_100_THRESHOLD &&\r\n progress >= PlayerManagerImpl.ANALYTICS_PROGRESS_100_THRESHOLD) {\r\n this.analyticsCollector.logScenarioElementProgress(this.getCurrentElementId(), 100);\r\n }\r\n\r\n this.scenarioElementProgress = progress;\r\n }\r\n\r\n onScenarioElementStart(): void {\r\n const playbackData = this.scenarioRunner.getPlaybackData();\r\n this.analyticsCollector.logScenarioElementStart(\r\n this.getCurrentElementId(),\r\n playbackData.videoType,\r\n playbackData.volume,\r\n playbackData.duration,\r\n );\r\n\r\n this.startCollectingAnalyticsAtInterval();\r\n }\r\n\r\n onScenarioElementEnd(): void {\r\n const playbackData = this.scenarioRunner.getPlaybackData();\r\n this.analyticsCollector.logScenarioElementPlaying(\r\n this.getCurrentElementId(),\r\n playbackData.videoType,\r\n playbackData.volume,\r\n playbackData.duration,\r\n playbackData.time,\r\n \"FINISHED\");\r\n\r\n this.clearAnalyticsInterval();\r\n\r\n if (this.getScenarioPath().isLastPart) {\r\n const state = this.getState() as IframeNotifierPlayerState;\r\n state.code = this.playerConfig.code;\r\n state.type = \"vintomPlayerFinish\";\r\n this.onFinishCallbacks.forEach((cb) => cb(state));\r\n } else {\r\n this.loadNextScenarioElement();\r\n }\r\n }\r\n\r\n onCTAShow(cta: CTA): void {\r\n if (!this.isTechnicalCTA(cta)) {\r\n this.analyticsCollector.logCTAShow(this.getCurrentElementId(), cta.id);\r\n }\r\n }\r\n\r\n isTechnicalCTA(cta: CTA): boolean {\r\n return cta.triggerType === \"RANGE\" && cta.visibilityRange && cta.visibilityRange.startTime === 0;\r\n }\r\n\r\n onCTAAction(ctaId: number, actionId: number, actionAdditionalData: object): void {\r\n const state = this.getState();\r\n const actionState: IframeNotifierPlayerActionState = {\r\n ...state,\r\n ctaId,\r\n actionId,\r\n actionAdditionalData,\r\n code: this.playerConfig.code,\r\n type: \"vintomPlayerAction\"\r\n };\r\n this.analyticsCollector.logCTAAction(this.getCurrentElementId(), ctaId, actionId, actionAdditionalData);\r\n this.onActionCallbacks.forEach((cb) => cb(actionState));\r\n }\r\n\r\n onPlayerRemove(): void {\r\n const playbackData = this.scenarioRunner.getPlaybackData();\r\n if (playbackData) {\r\n this.analyticsCollector.logScenarioElementPlaying(\r\n this.getCurrentElementId(),\r\n playbackData.videoType,\r\n playbackData.volume,\r\n playbackData.duration,\r\n playbackData.time,\r\n \"CLOSED\");\r\n } else {\r\n // player may be removed before it's initialized\r\n this.analyticsCollector.logScenarioElementPlaying(\r\n this.getCurrentElementId(),\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n \"CLOSED\");\r\n }\r\n\r\n }\r\n\r\n getState(): PlayerState {\r\n const playbackData = this.scenarioRunner.getPlaybackData();\r\n\r\n const state: PlayerState = {\r\n playing: playbackData.isPlaying,\r\n time: playbackData.time\r\n };\r\n\r\n if (!playbackData) {\r\n return undefined;\r\n }\r\n\r\n if (this.playerConfig.scenarioElements.length > 1) {\r\n state.scenarioElementId = this.getCurrentElementId();\r\n }\r\n\r\n if (this.getScenarioPath().hasMultipleParts) {\r\n state.part = this.getScenarioPath().currentPartNumber;\r\n }\r\n\r\n return state;\r\n }\r\n\r\n loadNextScenarioElement() {\r\n const nextId = this.getScenarioPath().currentElement.nextScenarioElementId;\r\n if (nextId !== undefined) {\r\n const nextElement = this.playerConfig.findScenarioElement(nextId);\r\n if (nextElement) {\r\n this.loadScenarioElement(nextElement, { isAutoplay: true });\r\n }\r\n }\r\n }\r\n\r\n loadScenarioElement(scenarioElement: ScenarioElement, options: ScenarioElementPlayOptions = {}) {\r\n options = {\r\n ...PlayerManagerImpl.DEFAULT_SCENARIO_ELEMENT_PLAY_OPTIONS,\r\n ...options\r\n };\r\n if (scenarioElement.music) {\r\n this.musicLayerManager.changeSource(scenarioElement.music.musicUrl);\r\n this.musicLayerManager.setMusicTime(scenarioElement.music.musicStartTime, scenarioElement.music.musicEndTime);\r\n this.videoLayerManager.setMusicTime(scenarioElement.music.musicStartTime, scenarioElement.music.musicEndTime);\r\n }\r\n this.controlsLayerManager.showLoader();\r\n\r\n const scenarioResources = this.scenarioLoader\r\n .loadResources(this.playerConfig, scenarioElement);\r\n scenarioResources.catch((e) => this.onError(e));\r\n const scenarioGlobalState = this.scenarioRunner.getScenarioGlobalState() ||\r\n this.getInitialScenarioGlobalState();\r\n\r\n return this.scenarioRunner.run(scenarioGlobalState, scenarioElement, scenarioResources, options);\r\n }\r\n\r\n jumpToScenarioElement(\r\n scenarioElementId: number,\r\n options?: ScencarioElementOptions,\r\n ) {\r\n const progress = options && options.progress || 0;\r\n const start = options && options.start !== undefined ? options.start : true;\r\n\r\n const scenarioElement = this.playerConfig.findScenarioElement(\r\n scenarioElementId\r\n );\r\n if (scenarioElement) {\r\n this.scenarioRunner.jumpToScenarioElement(\r\n scenarioElement,\r\n progress,\r\n start\r\n );\r\n } else {\r\n this.onError(new VintomError(\"runtimeError\", `Attempted to load non existing scenario element (id: ${scenarioElementId})`));\r\n }\r\n }\r\n\r\n replay() {\r\n this.loadScenarioElement(this.getScenarioPath().initialElement, { isAutoplay: true });\r\n }\r\n\r\n logUserError(error: VintomError): void {\r\n this.errorReporter.sendErrorLog(error);\r\n }\r\n\r\n private registerIframeNotifier() {\r\n this.onReadyCallbacks.push(this.iframeNotifier.notify);\r\n this.onErrorCallbacks.push(this.iframeNotifier.notify);\r\n this.onPlayCallbacks.push(this.iframeNotifier.notify);\r\n this.onPauseCallbacks.push(this.iframeNotifier.notify);\r\n this.onFinishCallbacks.push(this.iframeNotifier.notify);\r\n this.onActionCallbacks.push(this.iframeNotifier.notify);\r\n }\r\n\r\n private getInitialScenarioGlobalState(): ScenarioGlobalState {\r\n const storedPreferences = this.preferencesStorage.getPreferences();\r\n return ScenarioGlobalState.ininitialState(\r\n this.playerConfig.scenarioElements,\r\n this.playerConfig.parts,\r\n this.playerConfig.aspectRatio,\r\n this.playerConfig.mutedStart,\r\n this.playerConfig.autoRefreshBeforeReady,\r\n this.playerConfig.subtitlesActiveOnStart,\r\n storedPreferences);\r\n }\r\n\r\n private getScenarioPath(): ScenarioPath {\r\n const scenarioGlobalState = this.scenarioRunner.getScenarioGlobalState();\r\n return scenarioGlobalState && scenarioGlobalState.scenarioPath;\r\n }\r\n\r\n private getCurrentElementId(): number {\r\n const scenarioPath = this.getScenarioPath();\r\n return scenarioPath && scenarioPath.currentElementId;\r\n }\r\n\r\n private callback(loadingPageVisible: boolean, counter: number, timeToReload: number) {\r\n if (counter > 0) {\r\n this.configurationBuilder.build(this.videoCode, this.configurationJSON, this.configurationOverrideJSON, this.personalizationJSON)\r\n .then((conf) => {\r\n this.playerConfig = conf;\r\n this.checkStatus(loadingPageVisible, counter + 1, timeToReload + 3000);\r\n });\r\n } else {\r\n this.checkStatus(loadingPageVisible, counter + 1, timeToReload + 3000);\r\n }\r\n }\r\n\r\n private checkStatus(loadingPageVisible: boolean, counter: number, timeToReload: number) {\r\n switch (this.playerConfig.status) {\r\n case \"DELETED\":\r\n this.playerLoader.loadResources(this.playerConfig).then(() => {\r\n this.controlsLayerManager.showMessage(this.i18n.videoDeleted);\r\n });\r\n return;\r\n case \"PREPARING\":\r\n if (loadingPageVisible === true && counter < 7) {\r\n this.playerLoader.loadResources(this.playerConfig).then(() => {\r\n this.controlsLayerManager.showLoadingPage(true);\r\n });\r\n if (!this.videoCode) {\r\n console.error(\"Video code must be set on initialize for autoRefreshBeforeReady function\");\r\n } else {\r\n setTimeout(() => this.callback(loadingPageVisible, counter, timeToReload), timeToReload);\r\n }\r\n } else if (loadingPageVisible === true && counter >= 7) {\r\n this.controlsLayerManager.showLoadingPage(false);\r\n this.playerLoader.loadResources(this.playerConfig).then(() => {\r\n this.controlsLayerManager.showMessage(this.i18n.videoInPreparationLoadingPage);\r\n });\r\n } else if (loadingPageVisible === false) {\r\n this.controlsLayerManager.showLoadingPage(false);\r\n this.playerLoader.loadResources(this.playerConfig).then(() => {\r\n this.controlsLayerManager.showMessage(this.i18n.videoInPreparation);\r\n });\r\n }\r\n return;\r\n case \"READY\":\r\n this.controlsLayerManager.showLoadingPage(false);\r\n this.controlsLayerManager.showLoader();\r\n const initialScEl = this.playerConfig.scenarioElements.find((scEl) => scEl.initial);\r\n this.posterLayerManager.showInitialPoster(initialScEl.poster, this.playerConfig.aspectRatio);\r\n if (initialScEl.music) {\r\n this.musicLayerManager.changeSource(initialScEl.music.musicUrl);\r\n this.musicLayerManager.setMusicTime(initialScEl.music.musicStartTime, initialScEl.music.musicEndTime);\r\n this.videoLayerManager.setMusicTime(initialScEl.music.musicStartTime, initialScEl.music.musicEndTime);\r\n\r\n }\r\n this.loadAndInitializeLayers()\r\n .then(() => {\r\n if (this.playerConfig.autoplay || initialScEl.isCTAOnlyElement && !initialScEl.isCTAOnlyPlaybackStoppingElement) {\r\n return this.checkAutoplaySupported();\r\n }\r\n return false;\r\n })\r\n .then((isAutoplay) => this.loadScenarioElement(initialScEl, { isAutoplay }))\r\n .then(() => this.controlsLayerManager.hideLoader())\r\n .then(() => this.onReady());\r\n return;\r\n default:\r\n throw new VintomError(\"runtimeError\", `Unsupported film status '${status}'`);\r\n }}\r\n\r\n private start(): void {\r\n const loadingPageVisible = this.playerConfig.autoRefreshBeforeReady;\r\n this.controlsLayerManager.setConfiguration(this.playerConfig.playerControls, this.playerConfig.adminMode);\r\n this.playerContainerManager.setConfiguration(this.playerConfig.playerControls);\r\n this.checkStatus(loadingPageVisible, 0, 0);\r\n }\r\n\r\n private loadAndInitializeLayers(): Promise {\r\n return this.playerLoader.loadResources(this.playerConfig)\r\n .then(() => {\r\n if (this.playerConfig.hasScenarioElementWithVideo) {\r\n this.videoLayerManager.initializeLayer();\r\n }\r\n this.musicLayerManager.initializeLayer();\r\n });\r\n }\r\n\r\n private clearAnalyticsInterval() {\r\n if (this.analyticsIntervalHandle !== undefined) {\r\n clearInterval(this.analyticsIntervalHandle);\r\n }\r\n }\r\n\r\n private startCollectingAnalyticsAtInterval() {\r\n this.clearAnalyticsInterval();\r\n\r\n const duration = this.scenarioRunner.getPlaybackData().duration;\r\n const interval = duration < PlayerManagerImpl.ANALYTICS_SLOWER_RATE_THRESHOLD ?\r\n PlayerManagerImpl.ANALYTICS_FASTER_RATE : PlayerManagerImpl.ANALYTICS_SLOWER_RATE;\r\n\r\n this.analyticsIntervalHandle = window.setInterval(\r\n () => {\r\n const playbackData = this.scenarioRunner.getPlaybackData();\r\n if (playbackData.isPlaying) {\r\n this.analyticsCollector.logScenarioElementPlaying(\r\n this.getCurrentElementId(),\r\n playbackData.videoType,\r\n playbackData.volume,\r\n playbackData.duration,\r\n playbackData.time);\r\n }\r\n },\r\n interval * 1000);\r\n }\r\n\r\n private checkAutoplaySupported(): Promise {\r\n return canAutoPlay.video()\r\n .then(({ result }) => result)\r\n .catch(() => false);\r\n }\r\n}\r\n","import { injectable } from \"inversify\";\r\nimport { parse } from \"sparkson\";\r\nimport { VintomError } from \"../../api/model/error/VintomError\";\r\nimport { Config } from \"../../config/config\";\r\nimport { ConfigurationOverride } from \"../../model/playerConfiguration/ConfigurationOverride\";\r\nimport { FullPlayerConfiguration } from \"../../model/playerConfiguration/FullPlayerConfiguration\";\r\nimport { PlayerConfiguration } from \"../../model/playerConfiguration/PlayerConfiguration\";\r\n\r\nexport interface ConfigurationBuilder {\r\n build(videoCode: string, configurationJSON: any, configurationOverrideJSON: any, personalizationJSON: any): Promise;\r\n}\r\n\r\n@injectable()\r\nexport class ConfigurationBuilderImpl implements ConfigurationBuilder {\r\n\r\n build(videoCode: string, configurationJSON: any, configurationOverrideJSON: any, personalizationJSON: any): Promise {\r\n if (videoCode) {\r\n const playerServerUrl = Config.videoConfigurationUrl(\r\n (configurationOverrideJSON ? configurationOverrideJSON.playerServerUrl : null),\r\n videoCode);\r\n return this.fetchConfig(playerServerUrl)\r\n .then((fetchedConfigurationJSON) => this.parseAndMerge(fetchedConfigurationJSON, configurationOverrideJSON, personalizationJSON));\r\n } else {\r\n return this.parseAndMerge(configurationJSON, configurationOverrideJSON, personalizationJSON);\r\n }\r\n }\r\n\r\n private parseAndMerge(configurationJSON: any, configurationOverrideJSON: any, personalizationJSON: any): Promise {\r\n try {\r\n const conf = parse(PlayerConfiguration, configurationJSON);\r\n let confOverride: ConfigurationOverride;\r\n if (configurationOverrideJSON) {\r\n confOverride = parse(ConfigurationOverride, configurationOverrideJSON);\r\n }\r\n return Promise.resolve(new FullPlayerConfiguration(\r\n conf.code,\r\n conf.scenarioElements,\r\n confOverride && confOverride.analyticsEndpoints || conf.analyticsEndpoints,\r\n conf.aspectRatio,\r\n conf.parts,\r\n conf.videoDate,\r\n confOverride && confOverride.playerControls || conf.playerControls,\r\n conf.status,\r\n confOverride && confOverride.playerServerUrl || Config.defaultPlayerServerUrl,\r\n confOverride && confOverride.ctaStorageUrl || Config.defaultCTAStorageUrl,\r\n this.calculateVideoJSUrl(confOverride && confOverride.jsAssetsUrl || conf.jsAssetsUrl || Config.defaultJSAssetsLocation),\r\n this.calculateLottieUrl(confOverride && confOverride.jsAssetsUrl || conf.jsAssetsUrl || Config.defaultJSAssetsLocation),\r\n confOverride && confOverride.adminMode || conf.adminMode,\r\n confOverride && confOverride.autoplay || conf.autoplay,\r\n confOverride && confOverride.mutedStart || conf.mutedStart,\r\n confOverride && confOverride.autoRefreshBeforeReady || conf.autoRefreshBeforeReady,\r\n confOverride && confOverride.subtitlesActiveOnStart || conf.subtitlesActiveOnStart,\r\n personalizationJSON,\r\n conf.campaign,\r\n confOverride && confOverride.skin || conf.skin,\r\n conf.groupId\r\n ));\r\n } catch (e) {\r\n return Promise.reject(new VintomError(\"configurationParsingFailure\", \"Failed to parse configuration\", e));\r\n }\r\n }\r\n\r\n private fetchConfig(url: string): Promise {\r\n return fetch(url)\r\n .then((response) => response.json())\r\n .catch(() => Promise.reject(new VintomError(\"resourceLoadingFailure\", `Failed to load configuration from '${url}'`)));\r\n }\r\n\r\n private calculateVideoJSUrl(jsAssetsUrl: string): string {\r\n return `${jsAssetsUrl}${Config.defaultVideoJSLocation}`;\r\n }\r\n\r\n private calculateLottieUrl(jsAssetsUrl: string): string {\r\n return `${jsAssetsUrl}${Config.defaultLottieJSLocation}`;\r\n }\r\n}\r\n","import { Container } from \"inversify\";\r\nimport { ConfigurationBuilder, ConfigurationBuilderImpl } from \"../configurationBuilder/ConfigurationBuilder\";\r\nimport { ErrorReporter, ErrorReporterImpl } from \"../errorReporter/ErrorReporter\";\r\nimport { IframeNotifier, IframeNotifierImpl } from \"../iframeNotifier/IframeNotifier\";\r\nimport { AnimationLayer } from \"../layer/AnimationLayer\";\r\nimport { ControlsLayer } from \"../layer/ControlsLayer\";\r\nimport { CTALayer } from \"../layer/CTALayer\";\r\nimport { MusicLayer } from \"../layer/MusicLayer\";\r\nimport { PlayerContainer } from \"../layer/PlayerContainer\";\r\nimport { PosterLayer } from \"../layer/PosterLayer\";\r\nimport { VideoLayer } from \"../layer/VideoLayer\";\r\nimport { PlayerLoader, PlayerLoaderImpl } from \"../loader/playerLoader/PlayerLoader\";\r\nimport { ResourceLoader, ResourceLoaderImpl } from \"../loader/resourceLoader/ResourceLoader\";\r\nimport { ScenarioLoader, ScenarioLoaderImpl } from \"../loader/scenarioLoader/ScenarioLoader\";\r\nimport { NotSupportedBrowserPlayerManagerImpl } from \"../NotSupportedBrowserPlayerManagerImpl\";\r\nimport { AnimationPersonalizer, AnimationPersonalizerImpl } from \"../personalizer/AnimationPersonalizer\";\r\nimport { Personalizer, PersonalizerImpl } from \"../personalizer/Personalizer\";\r\nimport { AnalyticsCollector, AnalyticsCollectorImpl } from \"../playerAnalytics/AnalyticsCollector\";\r\nimport { GoogleAnalyticsSender, GoogleAnalyticsSenderImpl } from \"../playerAnalytics/GoogleAnalyticsSender\";\r\nimport { VintomAnalyticsSender, VintomAnalyticsSenderImpl } from \"../playerAnalytics/VintomAnalyticsSender\";\r\nimport { PlayerManager } from \"../PlayerManager\";\r\nimport { PlayerManagerImpl } from \"../PlayerManagerImpl\";\r\nimport { PreferencesStorage, PreferencesStorageImpl } from \"../preferencesStorage/PreferencesStorage\";\r\nimport { AnimationDrivenScenarioExecutorImpl } from \"../scenarioRunner/AnimationDrivenScenarioExecutor\";\r\nimport { CTAOnlyScenarioExecutorImpl } from \"../scenarioRunner/CTAOnlyScenarioExecutor\";\r\nimport { ControlsLayerManager, ControlsLayerManagerImpl } from \"../scenarioRunner/layerManager/ControlsLayerManager\";\r\nimport { CTALayerManager, CTALayerManagerImpl } from \"../scenarioRunner/layerManager/CTALayerManager\";\r\nimport { DependentAnimationLayerManager, DependentAnimationLayerManagerImpl } from \"../scenarioRunner/layerManager/DependentAnimationLayerManager\";\r\nimport { IndependentAnimationLayerManager, IndependentAnimationLayerManagerImpl } from \"../scenarioRunner/layerManager/IndependentAnimationLayerManager\";\r\nimport { MusicLayerManager, MusicLayerManagerImpl } from \"../scenarioRunner/layerManager/MusicLayerManager\";\r\nimport { PlayerContainerManager, PlayerContainerManagerImpl } from \"../scenarioRunner/layerManager/PlayerContainerManager\";\r\nimport { PosterLayerManager, PosterLayerManagerImpl } from \"../scenarioRunner/layerManager/PosterLayerManager\";\r\nimport { VideoLayerManager, VideoLayerManagerImpl } from \"../scenarioRunner/layerManager/VideoLayerManager\";\r\nimport { ScenarioExecutor } from \"../scenarioRunner/ScenarioExecutor\";\r\nimport { ScenarioRunner, ScenarioRunnerImpl } from \"../scenarioRunner/ScenarioRunner\";\r\nimport { VideoDrivenScenarioExecutorImpl } from \"../scenarioRunner/VideoDrivenScenarioExecutor\";\r\nimport { ThemeUpdater, ThemeUpdaterImpl } from \"../themeUpdater/ThemeUpdater\";\r\nimport { TYPES } from \"./types\";\r\n\r\nexport const createApplicationContext = (\r\n playerContainer: PlayerContainer,\r\n animationLayer: AnimationLayer,\r\n controlsLayer: ControlsLayer,\r\n ctaLayer: CTALayer,\r\n posterLayer: PosterLayer,\r\n videoLayer: VideoLayer,\r\n musicLayer: MusicLayer\r\n): Container => {\r\n const container = new Container();\r\n\r\n container.bind(TYPES.layer.PlayerContainer).toConstantValue(playerContainer);\r\n container.bind(TYPES.layer.AnimationLayer).toConstantValue(animationLayer);\r\n container.bind(TYPES.layer.ControlsLayer).toConstantValue(controlsLayer);\r\n container.bind(TYPES.layer.CTALayer).toConstantValue(ctaLayer);\r\n container.bind(TYPES.layer.PosterLayer).toConstantValue(posterLayer);\r\n container.bind(TYPES.layer.VideoLayer).toConstantValue(videoLayer);\r\n container.bind(TYPES.layer.MusicLayer).toConstantValue(musicLayer);\r\n\r\n container.bind(TYPES.analyticsCollector.AnalyticsCollector).to(AnalyticsCollectorImpl).inSingletonScope();\r\n container.bind(TYPES.analyticsCollector.GoogleAnalyticsSender).to(GoogleAnalyticsSenderImpl).inSingletonScope();\r\n container.bind(TYPES.analyticsCollector.VintomAnalyticsSender).to(VintomAnalyticsSenderImpl).inSingletonScope();\r\n\r\n container.bind(TYPES.preferencesStorage.PreferencesStorage).to(PreferencesStorageImpl).inSingletonScope();\r\n container.bind(TYPES.errorReporter.ErrorReporter).to(ErrorReporterImpl).inSingletonScope();\r\n container.bind(TYPES.iframeNotifier.IframeNotifier).to(IframeNotifierImpl).inSingletonScope();\r\n container.bind(TYPES.animationPersonalizer.AnimationPersonalizer).to(AnimationPersonalizerImpl).inSingletonScope();\r\n container.bind(TYPES.personalizer.Personalizer).to(PersonalizerImpl).inSingletonScope();\r\n container.bind(TYPES.configurationBuilder.ConfigurationBuilder).to(ConfigurationBuilderImpl).inSingletonScope();\r\n container.bind(TYPES.themeUpdater.ThemeUpdater).to(ThemeUpdaterImpl).inSingletonScope();\r\n\r\n container.bind(TYPES.loader.playerLoader.PlayerLoader).to(PlayerLoaderImpl).inSingletonScope();\r\n container.bind(TYPES.loader.resourceLoader.ResourceLoader).to(ResourceLoaderImpl).inSingletonScope();\r\n container.bind(TYPES.loader.scenarioLoader.ScenarioLoader).to(ScenarioLoaderImpl).inSingletonScope();\r\n\r\n container.bind(TYPES.scenarioRunner.layerManager.PlayerContainerManager)\r\n .to(PlayerContainerManagerImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.layerManager.ControlsLayerManager).to(ControlsLayerManagerImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.layerManager.CTALayerManager).to(CTALayerManagerImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.layerManager.DependentAnimationLayerManager)\r\n .to(DependentAnimationLayerManagerImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.layerManager.IndependentAnimationLayerManager)\r\n .to(IndependentAnimationLayerManagerImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.layerManager.PosterLayerManager).to(PosterLayerManagerImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.layerManager.VideoLayerManager).to(VideoLayerManagerImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.layerManager.MusicLayerManager).to(MusicLayerManagerImpl).inSingletonScope();\r\n\r\n container.bind(TYPES.scenarioRunner.AnimationDrivenScenarioExecutor)\r\n .to(AnimationDrivenScenarioExecutorImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.VideoDrivenScenarioExecutor).to(VideoDrivenScenarioExecutorImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.CTAOnlyScenarioExecutor).to(CTAOnlyScenarioExecutorImpl).inSingletonScope();\r\n container.bind(TYPES.scenarioRunner.ScenarioRunner).to(ScenarioRunnerImpl).inSingletonScope();\r\n\r\n container.bind(TYPES.PlayerManager).to(PlayerManagerImpl).inSingletonScope();\r\n\r\n return container;\r\n};\r\n\r\nexport const createNotSupportedBrowserApplicationContext = (): Container => {\r\n const container = new Container();\r\n\r\n container.bind(TYPES.analyticsCollector.AnalyticsCollector).to(AnalyticsCollectorImpl).inSingletonScope();\r\n container.bind(TYPES.analyticsCollector.GoogleAnalyticsSender).to(GoogleAnalyticsSenderImpl).inSingletonScope();\r\n container.bind(TYPES.analyticsCollector.VintomAnalyticsSender).to(VintomAnalyticsSenderImpl).inSingletonScope();\r\n\r\n container.bind(TYPES.configurationBuilder.ConfigurationBuilder).to(ConfigurationBuilderImpl).inSingletonScope();\r\n container.bind(TYPES.loader.resourceLoader.ResourceLoader).to(ResourceLoaderImpl).inSingletonScope();\r\n\r\n container.bind(TYPES.PlayerManager).to(NotSupportedBrowserPlayerManagerImpl).inSingletonScope();\r\n\r\n return container;\r\n};\r\n","export const TYPES = {\r\n analyticsCollector: {\r\n AnalyticsCollector: \"AnalyticsCollector\",\r\n GoogleAnalyticsSender: \"GoogleAnalyticsSender\",\r\n VintomAnalyticsSender: \"VintomAnalyticsSender\"\r\n },\r\n animationPersonalizer: {\r\n AnimationPersonalizer: \"AnimationPersonalizer\"\r\n },\r\n configurationBuilder: {\r\n ConfigurationBuilder: \"ConfigurationBuilder\"\r\n },\r\n iframeNotifier: {\r\n IframeNotifier: \"IframeNotifier\"\r\n },\r\n layer: {\r\n PlayerContainer: \"PlayerContainer\",\r\n AnimationLayer: \"AnimationLayer\",\r\n ControlsLayer: \"ControlsLayer\",\r\n CTALayer: \"CTALayer\",\r\n PosterLayer: \"PosterLayer\",\r\n VideoLayer: \"VideoLayer\",\r\n MusicLayer: \"MusicLayer\"\r\n },\r\n loader: {\r\n playerLoader: {\r\n PlayerLoader: \"PlayerLoader\"\r\n },\r\n resourceLoader: {\r\n ResourceLoader: \"ResourceLoader\"\r\n },\r\n scenarioLoader: {\r\n ScenarioLoader: \"ScenarioLoader\"\r\n }\r\n },\r\n personalizer: {\r\n Personalizer: \"Personalizer\"\r\n },\r\n preferencesStorage: {\r\n PreferencesStorage: \"PreferencesStorage\"\r\n },\r\n errorReporter: {\r\n ErrorReporter: \"ErrorReporter\"\r\n },\r\n scenarioRunner: {\r\n layerManager: {\r\n PlayerContainerManager: \"PlayerContainerManager\",\r\n ControlsLayerManager: \"ControlsLayerManager\",\r\n CTALayerManager: \"CTALayerManager\",\r\n DependentAnimationLayerManager: \"DependentAnimationLayerManager\",\r\n IndependentAnimationLayerManager: \"IndependentAnimationLayerManager\",\r\n PosterLayerManager: \"PosterLayerManager\",\r\n VideoLayerManager: \"VideoLayerManager\",\r\n MusicLayerManager: \"MusicLayerManager\"\r\n },\r\n AnimationDrivenScenarioExecutor: \"AnimationDrivenScenarioExecutor\",\r\n CTAOnlyScenarioExecutor: \"CTAOnlyScenarioExecutor\",\r\n ScenarioRunner: \"ScenarioRunner\",\r\n VideoDrivenScenarioExecutor: \"VideoDrivenScenarioExecutor\"\r\n },\r\n themeUpdater: {\r\n ThemeUpdater: \"ThemeUpadater\"\r\n },\r\n PlayerManager: \"PlayerManager\"\r\n};\r\n","import { injectable } from \"inversify\";\r\nimport { VintomError } from \"src/api/model/error/VintomError\";\r\nimport { Config } from \"../../config/config\";\r\n\r\nexport interface ErrorReporter {\r\n initialize(videoCode: string): void;\r\n sendErrorLog(error: VintomError): void;\r\n}\r\n\r\n@injectable()\r\nexport class ErrorReporterImpl implements ErrorReporter {\r\n private videoCode: string;\r\n\r\n initialize(videoCode: string): void {\r\n this.videoCode = videoCode;\r\n }\r\n\r\n sendErrorLog(error: VintomError): void {\r\n const videoLogUrl = Config.videoLogUrl(this.videoCode);\r\n fetch(videoLogUrl, {\r\n method: \"POST\",\r\n body: JSON.stringify(this.errorToPayload(error))\r\n })\r\n .catch(() => { });\r\n }\r\n\r\n private errorToPayload(error: VintomError): any {\r\n return \"errorCode: \" + error.errorCode + \", \" +\r\n \"message: \" + error.message + \", \" +\r\n \"userAgent: \" + error.errorAdditionalInfo.userAgent + \", \" +\r\n \"playerVersion: \" + error.errorAdditionalInfo.playerVersion + \", \" +\r\n \"operatingSystem: \" + error.errorAdditionalInfo.operatingSystem + \", \" +\r\n \"browserName: \" + error.errorAdditionalInfo.browserName + \", \" +\r\n \"browserMajorVersion: \" + error.errorAdditionalInfo.browserMajorVersion + \", \" +\r\n \"stackTrace: \" + error.stackTrace;\r\n }\r\n}\r\n","import { injectable } from \"inversify\";\r\n\r\nexport interface IframeNotifier {\r\n notify(payload?: any): void;\r\n}\r\n\r\n@injectable()\r\nexport class IframeNotifierImpl implements IframeNotifier {\r\n notify(payload?: any): void {\r\n const insideIframe = window.self !== window.parent;\r\n if (insideIframe) {\r\n window.parent.postMessage(payload, \"*\");\r\n }\r\n }\r\n}","import { inject, injectable } from \"inversify\";\r\nimport { VintomError } from \"../../../api/model/error/VintomError\";\r\nimport { FullPlayerConfiguration } from \"../../../model/playerConfiguration/FullPlayerConfiguration\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { ResourceLoader } from \"../resourceLoader/ResourceLoader\";\r\n\r\nexport interface PlayerLoader {\r\n loadResources(playerConfig: FullPlayerConfiguration): Promise;\r\n}\r\n\r\n@injectable()\r\nexport class PlayerLoaderImpl implements PlayerLoader {\r\n\r\n constructor(@inject(TYPES.loader.resourceLoader.ResourceLoader) private resourceLoader: ResourceLoader) {}\r\n\r\n loadResources(playerConfig: FullPlayerConfiguration): Promise {\r\n return Promise.all([\r\n this.loadVideoJS(playerConfig),\r\n this.loadVideoLottie(playerConfig)\r\n ])\r\n .then(() => Promise.resolve());\r\n }\r\n\r\n private loadVideoJS(playerConfig: FullPlayerConfiguration): Promise {\r\n if (\r\n !playerConfig.hasScenarioElementWithVideo ||\r\n playerConfig.status !== \"READY\"\r\n ) {\r\n return Promise.resolve();\r\n }\r\n // @ts-ignore\r\n window.VIDEOJS_NO_DYNAMIC_STYLE = true;\r\n return this.resourceLoader.loadResources([{ location: playerConfig.videoJSUrl, type: \"JS\" }])\r\n .catch(() => Promise.reject(new VintomError(\"resourceLoadingFailure\", \"Failed to load videojs\")));\r\n }\r\n\r\n private loadVideoLottie(playerConfig: FullPlayerConfiguration): Promise {\r\n if (\r\n !playerConfig.hasScenarioElementWithAnimation ||\r\n playerConfig.status !== \"READY\"\r\n ) {\r\n return Promise.resolve();\r\n }\r\n return this.resourceLoader.loadResources([{ location: playerConfig.lottieUrl, type: \"JS\" }])\r\n .catch(() => Promise.reject(new VintomError(\"resourceLoadingFailure\", \"Failed to load lottie-web\")));\r\n }\r\n}\r\n","import { injectable } from \"inversify\";\r\nimport loadjs from \"loadjs\";\r\nimport { vintom } from \"../../../api/globalVintomNamespace/GlobalVintomNamespace\";\r\nimport { Resource } from \"./Resource\";\r\n\r\nexport interface ResourceLoader {\r\n loadResources(resources: Resource[], mayNotExist?: boolean): Promise;\r\n}\r\n\r\n@injectable()\r\nexport class ResourceLoaderImpl implements ResourceLoader {\r\n\r\n loadResources(resources: Resource[], mayNotExist: boolean): Promise {\r\n const resourcesToLoad = resources.filter((resource) => !vintom.requestedResources[resource.location]);\r\n const resourcesRequestedEarlier = resources.filter((resource) => vintom.requestedResources[resource.location]);\r\n const resourcesRequestedEarlierProgress = resourcesRequestedEarlier.map((resource) => vintom.requestedResources[resource.location]);\r\n\r\n const cssLocationsToLoad = resourcesToLoad\r\n .filter((resource) => resource.type === \"CSS\")\r\n .map((resource) => resource.location);\r\n\r\n const jsLocationsToLoad = resourcesToLoad\r\n .filter((resource) => resource.type === \"JS\")\r\n .map((resource) => resource.location);\r\n\r\n return Promise.all([\r\n ... resourcesRequestedEarlierProgress,\r\n this.loadCssResources(cssLocationsToLoad, mayNotExist),\r\n this.loadJsResources(jsLocationsToLoad, mayNotExist)])\r\n .then(() => Promise.resolve());\r\n }\r\n\r\n private loadJsResources(locations: string[], mayNotExist: boolean): Promise {\r\n if (!locations.length) {\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.all(locations.map((location) => this.loadJSResource(location, mayNotExist)))\r\n .then(() => Promise.resolve());\r\n }\r\n\r\n private loadJSResource(location: string, mayNotExist: boolean): Promise {\r\n const loadJsRequest = new Promise((resolve, reject) => {\r\n loadjs([location], location, {\r\n error: (mayNotExist ? resolve : reject),\r\n success: resolve\r\n });\r\n })\r\n .then(() => Promise.resolve());\r\n\r\n vintom.requestedResources[location] = loadJsRequest;\r\n return loadJsRequest;\r\n }\r\n\r\n private loadCssResources(locations: string[], mayNotExist: boolean): Promise {\r\n return Promise.all(locations.map((location) => this.loadCssResource(location, mayNotExist)))\r\n .then(() => Promise.resolve());\r\n }\r\n\r\n private loadCssResource(location: string, mayNotExist: boolean): Promise {\r\n const link = document.createElement(\"link\");\r\n link.setAttribute(\"rel\", \"stylesheet\");\r\n link.setAttribute(\"type\", \"text/css\");\r\n link.setAttribute(\"href\", location);\r\n const loadCssRequest = new Promise((resolve, reject) => {\r\n document.head.appendChild(link);\r\n link.onload = () => resolve();\r\n link.onerror = () => (mayNotExist ? resolve() : reject());\r\n })\r\n .then(() => Promise.resolve());\r\n\r\n vintom.requestedResources[location] = loadCssRequest;\r\n return loadCssRequest;\r\n }\r\n}\r\n","import { AppliedCTAFunction } from \"../../appliedCTAFunction/AppliedCTAFunction\";\r\n\r\nexport class CachedCTAResource {\r\n constructor(public ctaFunction: AppliedCTAFunction, public ctaHtml: string) {}\r\n}","import { CachedCTAResource } from \"./CachedCTAResource\";\r\n\r\nexport class ResourcesCache {\r\n readonly animationsBySrc = new Map();\r\n readonly ctasByType = new Map();\r\n readonly posterObjectUrlsByUrl = new Map();\r\n}","import { AnimationPersonalizer } from \"@manager/personalizer/AnimationPersonalizer\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport { PlayerCTAAPI } from \"../../../api/cta/PlayerCTAAPI\";\r\nimport { vintom } from \"../../../api/globalVintomNamespace/GlobalVintomNamespace\";\r\nimport { VintomError } from \"../../../api/model/error/VintomError\";\r\nimport { Config } from \"../../../config/config\";\r\nimport { prepackagedCTAs } from \"../../../cta/prepackagedCTAs/prepackagedCTAs\";\r\nimport { Animation } from \"../../../model/playerConfiguration/Animation\";\r\nimport { FullPlayerConfiguration } from \"../../../model/playerConfiguration/FullPlayerConfiguration\";\r\nimport { ScenarioElement } from \"../../../model/playerConfiguration/ScenarioElement\";\r\nimport { AppliedCTAFunction } from \"../../appliedCTAFunction/AppliedCTAFunction\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { Personalizer } from \"../../personalizer/Personalizer\";\r\nimport { ResourceLoader } from \"../resourceLoader/ResourceLoader\";\r\nimport { CachedCTAResource } from \"./CachedCTAResource\";\r\nimport { ResourcesCache } from \"./ResourcesCache\";\r\n\r\nexport interface ScenarioLoader {\r\n loadResources(configuration: FullPlayerConfiguration, scenarioEl: ScenarioElement): Promise;\r\n prepareForRemove(): void;\r\n setPlayerCTAAPIDelegate(ctaPlayerAPI: PlayerCTAAPI): void;\r\n}\r\n\r\n@injectable()\r\nexport class ScenarioLoaderImpl implements ScenarioLoader {\r\n\r\n private readonly cache = new ResourcesCache();\r\n private ctaPlayerAPI: PlayerCTAAPI;\r\n\r\n constructor(\r\n @inject(TYPES.animationPersonalizer.AnimationPersonalizer) private animationPersonalizer: AnimationPersonalizer,\r\n @inject(TYPES.personalizer.Personalizer) private personalizer: Personalizer,\r\n @inject(TYPES.loader.resourceLoader.ResourceLoader) private resourceLoader: ResourceLoader) { }\r\n\r\n setPlayerCTAAPIDelegate(ctaPlayerAPI: PlayerCTAAPI): void {\r\n this.ctaPlayerAPI = ctaPlayerAPI;\r\n }\r\n\r\n loadResources(configuration: FullPlayerConfiguration, scenarioEl: ScenarioElement): Promise {\r\n this.loadPrepackagedCTAResources();\r\n return Promise.all([\r\n this.loadAndPersonalizeAnimationResources(scenarioEl, configuration.personalizationJSON),\r\n this.loadAndPersonalizeCTAResources(scenarioEl, configuration.personalizationJSON, configuration.ctaStorageUrl),\r\n this.loadPosterResources(scenarioEl)\r\n ])\r\n .then(() => Promise.resolve(this.cache));\r\n }\r\n\r\n prepareForRemove(): void {\r\n for (const objectUrl of Array.from(this.cache.posterObjectUrlsByUrl.values())) {\r\n URL.revokeObjectURL(objectUrl);\r\n }\r\n }\r\n\r\n private loadPrepackagedCTAResources() {\r\n const prepackagedCTATypes = Array.from(prepackagedCTAs.keys());\r\n prepackagedCTATypes.forEach((type) => {\r\n const ctaResource = prepackagedCTAs.get(type);\r\n const appliedCTAFunction: AppliedCTAFunction = (ctaId: number, ctaBoard: HTMLElement, ctaCustomAttributes: any) =>\r\n ctaResource.ctaFunction(this.ctaPlayerAPI, ctaId, ctaBoard, ctaCustomAttributes);\r\n this.cache.ctasByType.set(type, new CachedCTAResource(appliedCTAFunction, ctaResource.html));\r\n });\r\n }\r\n\r\n private loadAndPersonalizeAnimationResources(scenarioEl: ScenarioElement, personalizationJSON: any) {\r\n return Promise.all(scenarioEl.animations.map((animation) => this.loadAndPersonalizeAnimationResource(animation, personalizationJSON)))\r\n .then(() => Promise.resolve());\r\n }\r\n\r\n private loadAndPersonalizeAnimationResource(animation: Animation, personalizationJSON: any): Promise {\r\n\r\n return fetch(animation.src)\r\n .then((response) => response.json())\r\n .catch(() => Promise.reject(new VintomError(\"resourceLoadingFailure\", `Failed to load animation ${animation.src}`)))\r\n .then((json) => {\r\n if (animation.customAttributes) {\r\n const customAttributes = { ...animation.customAttributes };\r\n const values = Object.keys(customAttributes).map((key) => {\r\n return JSON.parse(JSON.stringify(customAttributes[key]));\r\n });\r\n const promises = values\r\n .reduce((acc, val) => [...acc, ...val], [])\r\n .filter((valItem) => valItem.type === \"image\" && valItem.src)\r\n // tslint:disable-next-line:no-eval\r\n .map((valItem) => fetch(eval(valItem.src))\r\n .then((response) => response.blob()));\r\n return Promise.all(promises).then(() => json);\r\n }\r\n })\r\n .then((json) => {\r\n const personalized = this.animationPersonalizer.personalizeAnim(json, animation.customAttributes, personalizationJSON);\r\n this.cache.animationsBySrc.set(animation.src, personalized);\r\n });\r\n }\r\n\r\n private loadPosterResources(scenarioEl: ScenarioElement): Promise {\r\n const posters = scenarioEl.ctas.map((cta) => cta.poster).filter((poster) => !!poster);\r\n if (scenarioEl.poster) {\r\n posters.push(scenarioEl.poster);\r\n }\r\n\r\n return Promise.all(posters.map((poster) => this.loadImgResource(poster)))\r\n .then(() => Promise.resolve());\r\n }\r\n\r\n private loadImgResource(url: string): Promise {\r\n if (this.cache.posterObjectUrlsByUrl.get(url)) {\r\n return Promise.resolve();\r\n }\r\n return fetch(url)\r\n .then((response) => response.blob())\r\n .then((blob) => {\r\n const objectUrl = URL.createObjectURL(blob);\r\n this.cache.posterObjectUrlsByUrl.set(url, objectUrl);\r\n })\r\n .catch(() => console.log(\"Poster not loaded\"));\r\n }\r\n\r\n private loadAndPersonalizeCTAResources(scenarioEl: ScenarioElement, personalizationJSON: any, ctaStorageUrl: string) {\r\n const types = scenarioEl.ctas.map((cta) => cta.type);\r\n\r\n scenarioEl.ctas.forEach((cta) => {\r\n if (cta.customAttributes) {\r\n cta.customAttributes = this.personalizer.personalize(cta.customAttributes, personalizationJSON);\r\n }\r\n });\r\n\r\n return Promise.all(\r\n types.map((type) => {\r\n\r\n const htmlUrl = Config.htmlCTAStorageUrlPattern\r\n .replace(Config.ctaStorageUrlPlaceholder, ctaStorageUrl)\r\n .replace(Config.ctaTypePlaceholder, type);\r\n const jsUrl = Config.jsCTAStorageUrlPattern\r\n .replace(Config.ctaStorageUrlPlaceholder, ctaStorageUrl)\r\n .replace(Config.ctaTypePlaceholder, type);\r\n const cssUrl = Config.cssCTAStorageUrlPattern\r\n .replace(Config.ctaStorageUrlPlaceholder, ctaStorageUrl)\r\n .replace(Config.ctaTypePlaceholder, type);\r\n\r\n return this.loadCTAResource(type, htmlUrl, jsUrl, cssUrl);\r\n }))\r\n .then(() => Promise.resolve());\r\n }\r\n\r\n private loadCTAResource(type: string, htmlSrc: string, jsSrc: string, cssSrc: string): Promise {\r\n if (this.cache.ctasByType.get(type)) {\r\n return Promise.resolve();\r\n }\r\n\r\n const loadedHtml = fetch(htmlSrc)\r\n .then((response) => response.text());\r\n\r\n const jsLoadedSuccessfully = this.resourceLoader.loadResources([{ location: jsSrc, type: \"JS\" }]);\r\n const cssLoadedSuccessfully = this.resourceLoader.loadResources([{ location: cssSrc, type: \"CSS\" }], true);\r\n\r\n return Promise.all([loadedHtml, jsLoadedSuccessfully, cssLoadedSuccessfully])\r\n .catch(() => Promise.reject(new VintomError(\"resourceLoadingFailure\", `Failed to load cta for type ${type}`)))\r\n .then(([html]) => {\r\n const ctaFunction = vintom.cta[type];\r\n // if (!ctaFunction) {\r\n // return Promise.reject(new VintomError(\"resourceLoadingFailure\", `Missing CTA function in cta.js file.\r\n // Please make sure to add cta function to vintom.cta dictionary (vintom.cta.${type} = function(....) { .... }))`));\r\n // }\r\n const appliedCTAFuntion: AppliedCTAFunction = (ctaId: number, ctaBoard: HTMLElement, ctaCustomAttributes: any) =>\r\n ctaFunction(this.ctaPlayerAPI, ctaId, ctaBoard, ctaCustomAttributes);\r\n\r\n this.cache.ctasByType.set(type, new CachedCTAResource(appliedCTAFuntion, html));\r\n });\r\n }\r\n\r\n}\r\n","import { injectable } from \"inversify\";\r\nimport merge from \"lodash/merge\";\r\nimport { PersonalizerImpl } from \"./Personalizer\";\r\n\r\nexport interface AnimationPersonalizer {\r\n personalizeAnim(animationJSON: any, customAttributes: any, personalizationJSON: any): any;\r\n}\r\n\r\n@injectable()\r\nexport class AnimationPersonalizerImpl extends PersonalizerImpl implements AnimationPersonalizer {\r\n\r\n personalizeAnim(animationJSON: any, customAttributes: { [attr: string]: string }, personalizationJSON: any): any {\r\n\r\n if (customAttributes) {\r\n this.updateAnimJSON(animationJSON, this.personalize(customAttributes, personalizationJSON));\r\n return animationJSON;\r\n }\r\n\r\n return animationJSON;\r\n }\r\n\r\n private updateAnimJSON(animationItem: any, customAttributes: { [key: string]: string }) {\r\n\r\n const values = Object.keys(customAttributes).map((key) => JSON.parse(this.escapeBreakingChars(customAttributes[key])));\r\n\r\n let globalExpr = \"\";\r\n\r\n for (const value of values) {\r\n for (const valItem of value) {\r\n switch (valItem.type) {\r\n case \"letiant\":\r\n break;\r\n case \"global\":\r\n if (valItem.init) {\r\n // tslint:disable-next-line:no-eval\r\n globalExpr += valItem.init + \";\";\r\n }\r\n break;\r\n default:\r\n // appease linter\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (const value of values) {\r\n for (const valItem of value) {\r\n const layers = this.findLayersByName(animationItem, valItem.name);\r\n // tslint:disable:prefer-for-of\r\n for (let i = 0; i < layers.length; i++) {\r\n if (valItem.position) {\r\n if (valItem.keyFrameNo === undefined) {\r\n // tslint:disable-next-line:no-eval\r\n layers[i].ks.p.k = eval(globalExpr + valItem.position);\r\n } else {\r\n // tslint:disable-next-line:no-eval\r\n let evaluatedValue = eval(globalExpr + valItem.position);\r\n evaluatedValue = evaluatedValue.length === 2 ? [...evaluatedValue, 0] : evaluatedValue;\r\n layers[i].ks.p.k[valItem.keyFrameNo].s = evaluatedValue;\r\n }\r\n }\r\n if (valItem.scale) {\r\n // tslint:disable-next-line:no-eval\r\n let evaluatedValue = eval(globalExpr + valItem.scale);\r\n evaluatedValue = typeof evaluatedValue === \"number\" ? [evaluatedValue, evaluatedValue] : evaluatedValue;\r\n if (valItem.keyFrameNo === undefined) {\r\n layers[i].ks.s.k = evaluatedValue;\r\n } else {\r\n layers[i].ks.s.k[valItem.keyFrameNo].s = evaluatedValue;\r\n }\r\n }\r\n if (valItem.anchor) {\r\n // tslint:disable-next-line:no-eval\r\n if (valItem.keyFrameNo === undefined) {\r\n // tslint:disable-next-line:no-eval\r\n layers[i].ks.a.k = eval(globalExpr + valItem.anchor);\r\n } else {\r\n // tslint:disable-next-line:no-eval\r\n let evaluatedValue = eval(globalExpr + valItem.anchor);\r\n evaluatedValue = evaluatedValue.length === 2 ? [...evaluatedValue, 0] : evaluatedValue;\r\n layers[i].ks.a.k[valItem.keyFrameNo].s = evaluatedValue;\r\n }\r\n }\r\n if (valItem.opacity) {\r\n // tslint:disable-next-line:no-eval\r\n if (valItem.keyFrameNo === undefined) {\r\n // tslint:disable-next-line:no-eval\r\n layers[i].ks.o.k = eval(globalExpr + valItem.opacity);\r\n } else {\r\n // tslint:disable-next-line:no-eval\r\n let evaluatedValue = eval(globalExpr + valItem.opacity);\r\n evaluatedValue = evaluatedValue instanceof Array ? evaluatedValue : [evaluatedValue];\r\n layers[i].ks.o.k[valItem.keyFrameNo].s = evaluatedValue;\r\n }\r\n\r\n }\r\n if (valItem.rotation) {\r\n // tslint:disable-next-line:no-eval\r\n if (valItem.keyFrameNo === undefined) {\r\n // tslint:disable-next-line:no-eval\r\n layers[i].ks.r.k = eval(globalExpr + valItem.rotation);\r\n } else {\r\n // tslint:disable-next-line:no-eval\r\n let evaluatedValue = eval(globalExpr + valItem.rotation);\r\n evaluatedValue = evaluatedValue instanceof Array ? evaluatedValue : [evaluatedValue];\r\n layers[i].ks.r.k[valItem.keyFrameNo].s = evaluatedValue;\r\n }\r\n }\r\n }\r\n\r\n switch (valItem.type) {\r\n case \"text\":\r\n this.updateText(animationItem, valItem, globalExpr);\r\n break;\r\n case \"shape\":\r\n this.updateShape(animationItem, valItem, globalExpr);\r\n break;\r\n case \"image\":\r\n // tslint:disable-next-line:no-eval\r\n this.updateImage(animationItem, valItem, globalExpr);\r\n break;\r\n default:\r\n // appease linter\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private escapeBreakingChars(parse: string): string {\r\n return parse.replace(/([^\\\\])\\t/g, \"$1\\\\t\");\r\n }\r\n\r\n private updateText(animationItem: any, value: any, globalExpr: string) {\r\n const layers = this.findLayersByName(animationItem, value.name);\r\n // tslint:disable:prefer-for-of\r\n for (let i = 0; i < layers.length; i++) {\r\n if (value.val) {\r\n // tslint:disable-next-line:no-eval\r\n layers[i].t.d.k[0].s.t = eval(globalExpr + value.val);\r\n }\r\n if (value.color) {\r\n layers[i].t.d.k[0].s.fc[0] = parseInt(\"0x\" + value.color.slice(0, 2), 16) / 256;\r\n layers[i].t.d.k[0].s.fc[1] = parseInt(\"0x\" + value.color.slice(2, 4), 16) / 256;\r\n layers[i].t.d.k[0].s.fc[2] = parseInt(\"0x\" + value.color.slice(4, 6), 16) / 256;\r\n }\r\n if (value.fontSize) {\r\n // tslint:disable-next-line:no-eval\r\n layers[i].t.d.k[0].s.s = eval(globalExpr + value.fontSize);\r\n }\r\n if (value.font) {\r\n // tslint:disable-next-line:no-eval\r\n layers[i].t.d.k[0].s.f = eval(globalExpr + value.font);\r\n }\r\n if (value.init) {\r\n // tslint:disable-next-line:no-eval\r\n merge(layers[i], eval(globalExpr + value.init));\r\n }\r\n }\r\n // tslint:enable:prefer-for-of\r\n }\r\n\r\n private updateShape(animationItem: any, value: any, globalExpr: string) {\r\n const layers = this.findLayersByName(animationItem, value.name);\r\n for (const layer of layers) {\r\n if (value.init) {\r\n // tslint:disable-next-line:no-eval\r\n merge(layer, eval(globalExpr + value.init));\r\n }\r\n }\r\n }\r\n\r\n private updateImage(animationItem: any, value: any, globalExpr: string) {\r\n const layers = this.findLayersByName(animationItem, value.name);\r\n for (const layer of layers) {\r\n if (value.src) {\r\n // tslint:disable-next-line:no-eval\r\n const src = eval(globalExpr + value.src);\r\n const asset = this.findAssetByRefId(animationItem, layer.refId);\r\n const pathLength = src.lastIndexOf(\"/\");\r\n asset.u = src.substr(0, pathLength) + \"/\";\r\n asset.p = src.substr(pathLength + 1, src.length);\r\n }\r\n }\r\n }\r\n\r\n private findLayersByName(animationItem: any, name: string): any[] {\r\n const layers = [];\r\n const elements = animationItem.layers;\r\n for (const element of elements) {\r\n if (element.nm === name) {\r\n layers.push(element);\r\n }\r\n }\r\n return layers;\r\n }\r\n\r\n private findAssetByRefId(animationItem: any, refId: string) {\r\n let asset = null;\r\n const elements = animationItem.assets;\r\n for (const element of elements) {\r\n if (element.id === refId) {\r\n asset = element;\r\n break;\r\n }\r\n }\r\n return asset;\r\n }\r\n}\r\n","import { injectable } from \"inversify\";\r\nimport { Config } from \"../../config/config\";\r\n\r\nexport interface Personalizer {\r\n personalize(customAttributes: any, personalizationJSON: any): any;\r\n}\r\n\r\n@injectable()\r\nexport class PersonalizerImpl implements Personalizer {\r\n\r\n personalize(customAttributes: { [attr: string]: string }, personalizationJSON: any): any {\r\n\r\n if (customAttributes) {\r\n customAttributes = { ...customAttributes };\r\n if (personalizationJSON) {\r\n Object.keys(personalizationJSON).forEach((personalizationAttr) => {\r\n\r\n const personalizationAttrValue = personalizationJSON[personalizationAttr];\r\n const personalizationPlaceholder = new RegExp(this.escapeRegExp(Config.placeholder(personalizationAttr)), \"g\");\r\n\r\n Object.keys(customAttributes).forEach((attr) => {\r\n customAttributes[attr] = customAttributes[attr].replace(personalizationPlaceholder, personalizationAttrValue);\r\n });\r\n });\r\n }\r\n }\r\n\r\n return customAttributes;\r\n }\r\n\r\n private escapeRegExp(str: string) {\r\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\r\n }\r\n}\r\n","import { VintomErrorCode } from \"src/api/model/error/VintomErrorCode\";\r\n\r\n// tslint:disable:max-classes-per-file\r\nexport type ScenarioElementEndReason = \"SEEKED\" | \"PAUSED\" | \"FINISHED\" | \"CLOSED\";\r\nexport type ScenarioElementProgress = 25 | 50 | 75 | 100;\r\n\r\nexport abstract class BaseAnalyticsEvent {\r\n\r\n type: T;\r\n timestamp = Date.now();\r\n constructor(\r\n public projectCode: string,\r\n public groupId: number,\r\n public scenarioElementId: number,\r\n public videoCode: string,\r\n public userIdentifier: string,\r\n public videoDate: number) { }\r\n}\r\n\r\nexport class PlayerInitEvent extends BaseAnalyticsEvent<\"PLAYER_INIT\"> {\r\n type: \"PLAYER_INIT\" = \"PLAYER_INIT\";\r\n}\r\n\r\nexport class PlayerStartEvent extends BaseAnalyticsEvent<\"PLAYER_START\"> {\r\n type: \"PLAYER_START\" = \"PLAYER_START\";\r\n}\r\n\r\nexport class PlayerErrorEvent extends BaseAnalyticsEvent<\"PLAYER_ERROR\"> {\r\n type: \"PLAYER_ERROR\" = \"PLAYER_ERROR\";\r\n constructor(\r\n projectCode: string,\r\n groupId: number,\r\n scenarioElementId: number,\r\n videoCode: string,\r\n userIdentifier: string,\r\n videoDate: number,\r\n public errorCode: VintomErrorCode,\r\n public errorMessage: string) {\r\n\r\n super(projectCode, groupId, scenarioElementId, videoCode, userIdentifier, videoDate);\r\n }\r\n}\r\n\r\nexport class ScenarioElementStartEvent extends BaseAnalyticsEvent<\"SCENARIO_ELEMENT_START\"> {\r\n\r\n type: \"SCENARIO_ELEMENT_START\" = \"SCENARIO_ELEMENT_START\";\r\n currentTime = 0;\r\n\r\n constructor(\r\n projectCode: string,\r\n groupId: number,\r\n scenarioElementId: number,\r\n videoCode: string,\r\n userIdentifier: string,\r\n videoDate: number,\r\n public videoType: string,\r\n public volume: number,\r\n public duration: number) {\r\n\r\n super(projectCode, groupId, scenarioElementId, videoCode, userIdentifier, videoDate);\r\n }\r\n\r\n}\r\n\r\nexport class ScenarioElementPlayingEvent extends BaseAnalyticsEvent<\"SCENARIO_ELEMENT_PLAYING\"> {\r\n type: \"SCENARIO_ELEMENT_PLAYING\" = \"SCENARIO_ELEMENT_PLAYING\";\r\n constructor(\r\n projectCode: string,\r\n groupId: number,\r\n scenarioElementId: number,\r\n videoCode: string,\r\n userIdentifier: string,\r\n videoDate: number,\r\n public videoType: string,\r\n public volume: number,\r\n public duration: number,\r\n public currentTime: number,\r\n public startTime: number,\r\n public endReason?: ScenarioElementEndReason) {\r\n\r\n super(projectCode, groupId, scenarioElementId, videoCode, userIdentifier, videoDate);\r\n }\r\n\r\n}\r\n\r\nexport class ScenarioElementProgressEvent extends BaseAnalyticsEvent<\"SCENARIO_ELEMENT_PROGRESS\"> {\r\n type: \"SCENARIO_ELEMENT_PROGRESS\" = \"SCENARIO_ELEMENT_PROGRESS\";\r\n constructor(\r\n projectCode: string,\r\n groupId: number,\r\n scenarioElementId: number,\r\n videoCode: string,\r\n userIdentifier: string,\r\n videoDate: number,\r\n public progress: ScenarioElementProgress) {\r\n\r\n super(projectCode, groupId, scenarioElementId, videoCode, userIdentifier, videoDate);\r\n }\r\n}\r\n\r\nexport class CTAShowEvent extends BaseAnalyticsEvent<\"CTA_SHOW\"> {\r\n type: \"CTA_SHOW\" = \"CTA_SHOW\";\r\n constructor(\r\n projectCode: string,\r\n groupId: number,\r\n scenarioElementId: number,\r\n videoCode: string,\r\n userIdentifier: string,\r\n videoDate: number,\r\n public ctaId: number) {\r\n\r\n super(projectCode, groupId, scenarioElementId, videoCode, userIdentifier, videoDate);\r\n }\r\n\r\n}\r\n\r\nexport class CTAActionEvent extends BaseAnalyticsEvent<\"CTA_ACTION\"> {\r\n type: \"CTA_ACTION\" = \"CTA_ACTION\";\r\n constructor(\r\n projectCode: string,\r\n groupId: number,\r\n scenarioElementId: number,\r\n videoCode: string,\r\n userIdentifier: string,\r\n videoDate: number,\r\n public ctaId: number, \r\n public actionId: number,\r\n public actionAdditionalData: object) {\r\n\r\n super(projectCode, groupId, scenarioElementId, videoCode, userIdentifier, videoDate);\r\n }\r\n \r\n}\r\n\r\nexport class NotSupportedBrowserEvent extends BaseAnalyticsEvent<\"NOT_SUPPORTED_BROWSER\"> {\r\n type: \"NOT_SUPPORTED_BROWSER\" = \"NOT_SUPPORTED_BROWSER\";\r\n constructor(\r\n projectCode: string,\r\n groupId: number,\r\n scenarioElementId: number,\r\n videoCode: string,\r\n userIdentifier: string,\r\n videoDate: number) {\r\n\r\n super(projectCode, groupId, scenarioElementId, videoCode, userIdentifier, videoDate);\r\n }\r\n\r\n}\r\n\r\nexport type AnalyticsEvent =\r\n PlayerInitEvent |\r\n PlayerStartEvent |\r\n PlayerErrorEvent |\r\n ScenarioElementStartEvent |\r\n ScenarioElementPlayingEvent |\r\n ScenarioElementProgressEvent |\r\n CTAShowEvent |\r\n CTAActionEvent |\r\n NotSupportedBrowserEvent;\r\n\r\n// tslint:enable:max-classes-per-file\r\n","import { inject, injectable } from \"inversify\";\r\nimport { Md5 } from \"ts-md5/dist/md5\";\r\nimport { VintomError } from \"../../api/model/error/VintomError\";\r\nimport { AnalyticsEndpoint } from \"../../model/playerConfiguration/AnalyticsEndpoint\";\r\nimport { CookieHelper } from \"../../utils/CookieHelper\";\r\nimport { TYPES } from \"../di/types\";\r\nimport {\r\n AnalyticsEvent,\r\n CTAActionEvent,\r\n CTAShowEvent,\r\n NotSupportedBrowserEvent,\r\n PlayerErrorEvent,\r\n PlayerInitEvent,\r\n PlayerStartEvent,\r\n ScenarioElementEndReason,\r\n ScenarioElementPlayingEvent,\r\n ScenarioElementProgress,\r\n ScenarioElementProgressEvent,\r\n ScenarioElementStartEvent\r\n} from \"./AnalyticEvent\";\r\nimport { AnalyticsSender } from \"./AnalyticsSender\";\r\nimport { GoogleAnalyticsSender, GoogleAnalyticsSenderImpl } from \"./GoogleAnalyticsSender\";\r\nimport { VintomAnalyticsSender } from \"./VintomAnalyticsSender\";\r\n\r\nexport interface AnalyticsCollector {\r\n initialize(videoCode: string, videoDate: number, endpoints: AnalyticsEndpoint[], campaign: string, groupId: number): void;\r\n logPlayerInit(scenarioElementId: number): void;\r\n logPlayerStart(scenarioElementId: number): void;\r\n logPlayerError(scenarioElementId: number, error: VintomError): void;\r\n logScenarioElementStart(scenarioElementId: number, videoType: string, volume: number, duration: number): void;\r\n logScenarioElementPlaying(\r\n scenarioElementId: number,\r\n videoType: string,\r\n volume: number,\r\n duration: number,\r\n currentTime: number,\r\n endReason?: ScenarioElementEndReason): void;\r\n logScenarioElementProgress(scenarioElementId: number, progress: ScenarioElementProgress): void;\r\n logCTAShow(scenarioElementId: number, ctaId: number): void;\r\n logCTAAction(scenarioElementId: number, ctaId: number, actionId: number, actionAdditionalData: object): void;\r\n logNotSupportedBrowser(): void;\r\n}\r\n\r\n@injectable()\r\nexport class AnalyticsCollectorImpl implements AnalyticsCollector {\r\n\r\n private static USER_IDENTIFIER_COOKIE_NAME = \"vintomUserIdentifier\";\r\n\r\n private projectCode: string;\r\n private groupId: number;\r\n private videoCode: string;\r\n private videoDate: number;\r\n private userIdentifier: string;\r\n private lastPlayEventTime: number;\r\n private configuredSenders: AnalyticsSender[] = [];\r\n private googleAnalyticsEndpointExists: boolean = false;\r\n private googleAnalyticsEventQueue: AnalyticsEvent[] = [];\r\n\r\n constructor(\r\n @inject(TYPES.analyticsCollector.GoogleAnalyticsSender) private googleAnalyticsSender: GoogleAnalyticsSender,\r\n @inject(TYPES.analyticsCollector.VintomAnalyticsSender) private vintomAnalyticsSender: VintomAnalyticsSender) {}\r\n\r\n initialize(videoCode: string, videoDate: number, endpoints: AnalyticsEndpoint[], campaign: string, groupId: number) {\r\n this.projectCode = campaign;\r\n this.groupId = groupId;\r\n this.videoCode = videoCode;\r\n this.videoDate = videoDate;\r\n this.userIdentifier = this.readUserIdentifierFromCookie();\r\n if (!this.userIdentifier) {\r\n this.userIdentifier = this.createUserIdentifier();\r\n this.saveUserIdentifierToCookie(this.userIdentifier);\r\n }\r\n\r\n const gaTrackers = endpoints.filter((endpoint) => endpoint.provider === \"GA\").map((endpoint) => endpoint.gaServiceTracker);\r\n if (gaTrackers.length) {\r\n this.googleAnalyticsEndpointExists = true;\r\n this.googleAnalyticsSender.initialize(gaTrackers, campaign)\r\n .then(() => this.configuredSenders.push(this.googleAnalyticsSender))\r\n .then(() => this.processGoogleAnalyticsEventQueue());\r\n }\r\n\r\n const vintomEndpoints = endpoints.filter((endpoint) => endpoint.provider === \"vintom\").map((endpoint) => endpoint.vintomServer);\r\n if (vintomEndpoints.length) {\r\n this.vintomAnalyticsSender.initialize(vintomEndpoints);\r\n this.configuredSenders.push(this.vintomAnalyticsSender);\r\n }\r\n\r\n }\r\n\r\n logPlayerInit(scenarioElementId: number) {\r\n this.sendEvent(new PlayerInitEvent(\r\n this.projectCode,\r\n this.groupId,\r\n scenarioElementId,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate\r\n ));\r\n }\r\n\r\n logPlayerStart(scenarioElementId: number) {\r\n this.sendEvent(new PlayerStartEvent(\r\n this.projectCode,\r\n this.groupId,\r\n scenarioElementId,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate\r\n ));\r\n }\r\n\r\n logPlayerError(scenarioElementId: number, error: VintomError) {\r\n this.sendEvent(new PlayerErrorEvent(\r\n this.projectCode,\r\n this.groupId,\r\n scenarioElementId,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate,\r\n error.errorCode,\r\n error.message\r\n ));\r\n }\r\n\r\n logScenarioElementStart(scenarioElementId: number, videoType: string, volume: number, duration: number) {\r\n this.sendEvent(new ScenarioElementStartEvent(\r\n this.projectCode,\r\n this.groupId,\r\n scenarioElementId,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate,\r\n videoType,\r\n volume,\r\n duration\r\n ));\r\n\r\n this.lastPlayEventTime = 0;\r\n }\r\n\r\n logScenarioElementPlaying(\r\n scenarioElementId: number,\r\n videoType: string,\r\n volume: number,\r\n duration: number,\r\n currentTime: number,\r\n endReason?: ScenarioElementEndReason) {\r\n\r\n this.sendEvent(new ScenarioElementPlayingEvent(\r\n this.projectCode,\r\n this.groupId,\r\n scenarioElementId,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate,\r\n videoType,\r\n volume,\r\n duration,\r\n currentTime,\r\n this.lastPlayEventTime,\r\n endReason\r\n ));\r\n\r\n this.lastPlayEventTime = currentTime;\r\n }\r\n\r\n logScenarioElementProgress(scenarioElementId: number, progress: ScenarioElementProgress) {\r\n this.sendEvent(new ScenarioElementProgressEvent(\r\n this.projectCode,\r\n this.groupId,\r\n scenarioElementId,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate,\r\n progress\r\n ));\r\n }\r\n\r\n logCTAShow(scenarioElementId: number, ctaId: number) {\r\n this.sendEvent(new CTAShowEvent(\r\n this.projectCode,\r\n this.groupId,\r\n scenarioElementId,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate,\r\n ctaId\r\n ));\r\n }\r\n\r\n logCTAAction(scenarioElementId: number, ctaId: number, actionId: number, actionAdditionalData: object) {\r\n this.sendEvent(new CTAActionEvent(\r\n this.projectCode,\r\n this.groupId,\r\n scenarioElementId,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate,\r\n ctaId,\r\n actionId,\r\n actionAdditionalData\r\n ));\r\n }\r\n\r\n logNotSupportedBrowser() {\r\n this.sendEvent(new NotSupportedBrowserEvent(\r\n this.projectCode,\r\n this.groupId,\r\n null,\r\n this.videoCode,\r\n this.userIdentifier,\r\n this.videoDate\r\n ));\r\n }\r\n\r\n private sendEvent(event: AnalyticsEvent) {\r\n for (const sender of this.configuredSenders) {\r\n sender.sendEvent(event);\r\n }\r\n if (!this.googleAnalyticsSenderInitialized()) {\r\n this.googleAnalyticsEventQueue.push(event);\r\n }\r\n }\r\n\r\n private googleAnalyticsSenderInitialized(): boolean {\r\n if (!this.googleAnalyticsEndpointExists) {\r\n return true;\r\n } else {\r\n for (const sender of this.configuredSenders) {\r\n if (sender instanceof GoogleAnalyticsSenderImpl) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private processGoogleAnalyticsEventQueue(): void {\r\n for (const event of this.googleAnalyticsEventQueue) {\r\n this.googleAnalyticsSender.sendEvent(event);\r\n }\r\n this.googleAnalyticsEventQueue = [];\r\n }\r\n\r\n private createUserIdentifier(): string {\r\n return Md5.hashStr(Math.random() + \"\") as string;\r\n }\r\n\r\n private saveUserIdentifierToCookie(identifier: string) {\r\n CookieHelper.setCookie(AnalyticsCollectorImpl.USER_IDENTIFIER_COOKIE_NAME, identifier);\r\n }\r\n\r\n private readUserIdentifierFromCookie() {\r\n return CookieHelper.readCookie(AnalyticsCollectorImpl.USER_IDENTIFIER_COOKIE_NAME);\r\n }\r\n\r\n}\r\n","import { inject, injectable } from \"inversify\";\r\nimport { Config } from \"../../config/config\";\r\nimport { TYPES } from \"../di/types\";\r\nimport { ResourceLoader } from \"../loader/resourceLoader/ResourceLoader\";\r\nimport { AnalyticsEvent } from \"./AnalyticEvent\";\r\nimport { AnalyticsSender } from \"./AnalyticsSender\";\r\n\r\ndeclare global {\r\n interface Window {\r\n vintomGADataLayer: any[];\r\n vintomGtag: (...args: any) => void;\r\n }\r\n}\r\nlet eventCategory: string;\r\n\r\nexport interface GoogleAnalyticsSender extends AnalyticsSender {\r\n initialize(gaServiceTrackers: string[], campaign: string): Promise;\r\n}\r\n\r\n@injectable()\r\nexport class GoogleAnalyticsSenderImpl implements GoogleAnalyticsSender {\r\n\r\n constructor(@inject(TYPES.loader.resourceLoader.ResourceLoader) private resourceLoader: ResourceLoader) { }\r\n\r\n initialize(gaServiceTrackers: string[], campaign: string): Promise {\r\n return this.resourceLoader.loadResources([{ location: Config.gaEndpoint, type: \"JS\" }])\r\n .then(() => {\r\n window.vintomGADataLayer = window.vintomGADataLayer || [];\r\n\r\n // tslint:disable:only-arrow-functions\r\n window.vintomGtag = function() {\r\n window.vintomGADataLayer.push(arguments);\r\n };\r\n // tslint:enable:only-arrow-functions\r\n if (campaign !== \"MBBANKFULL2\") {\r\n window.vintomGtag(\"js\", new Date());\r\n }\r\n\r\n for (const gaServiceTracker of gaServiceTrackers) {\r\n window.vintomGtag(\"config\", gaServiceTracker, {\r\n campaign: {\r\n source: campaign\r\n },\r\n anonymize_ip: true\r\n });\r\n eventCategory = campaign;\r\n }\r\n });\r\n }\r\n\r\n sendEvent(event: AnalyticsEvent): void {\r\n const eventAction =\r\n event.type === \"SCENARIO_ELEMENT_PROGRESS\"\r\n ? `${event.type}_${event.progress}`\r\n : event.type;\r\n\r\n const eventLabel = this.serializeEventToAction(event);\r\n\r\n if (eventAction !== undefined) {\r\n if ((eventCategory === \"MBBANKFULL2\" && eventAction === \"PLAYER_INIT\") ||\r\n (eventCategory === \"MBBANKFULL2\" && eventAction === \"SCENARIO_ELEMENT_PLAYING\")) {\r\n return;\r\n }\r\n if (eventCategory === \"MBBANKFULL2\") {\r\n window.vintomGtag(\"js\", new Date());\r\n }\r\n window.vintomGtag(\"event\", eventAction, {\r\n event_category: eventCategory,\r\n event_label: eventLabel\r\n });\r\n }\r\n }\r\n\r\n private serializeEventToAction(event: AnalyticsEvent): string {\r\n const base = `scenario element id: ${event.scenarioElementId}`;\r\n\r\n switch (event.type) {\r\n case \"PLAYER_INIT\":\r\n return base;\r\n case \"PLAYER_START\":\r\n return base;\r\n case \"PLAYER_ERROR\":\r\n return `${base}, message: ${event.errorMessage}`;\r\n case \"SCENARIO_ELEMENT_START\":\r\n return base;\r\n case \"SCENARIO_ELEMENT_PROGRESS\":\r\n return base;\r\n case \"CTA_SHOW\":\r\n return `${base}, cta id: ${event.ctaId}`;\r\n case \"CTA_ACTION\":\r\n return `${base}, cta id: ${event.ctaId}, action id: ${event.actionId}`;\r\n case \"NOT_SUPPORTED_BROWSER\":\r\n return base;\r\n default:\r\n // all other events are ignored by GoogleAnalyticsSender\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { injectable } from \"inversify\";\r\nimport { AnalyticsEvent, BaseAnalyticsEvent } from \"./AnalyticEvent\";\r\nimport { AnalyticsSender } from \"./AnalyticsSender\";\r\n\r\nexport interface VintomAnalyticsSender extends AnalyticsSender {\r\n initialize(vintomEndpoints: string[]): void;\r\n}\r\n\r\n@injectable()\r\nexport class VintomAnalyticsSenderImpl implements VintomAnalyticsSender {\r\n\r\n private endpoints: string[] = [];\r\n\r\n initialize(vintomEndpoints: string[]): void {\r\n this.endpoints = vintomEndpoints;\r\n }\r\n\r\n sendEvent(event: AnalyticsEvent): void {\r\n const eventJSON = this.serializeEventToJSON(event);\r\n if (eventJSON) {\r\n for (const endpoint of this.endpoints) {\r\n fetch(endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-type\": \"application/json; charset=UTF-8\"\r\n },\r\n body: JSON.stringify(eventJSON)\r\n });\r\n }\r\n }\r\n }\r\n\r\n private serializeEventToJSON(event: AnalyticsEvent): any {\r\n const base = this.serializeBaseAnalyticsEvent(event);\r\n\r\n switch (event.type) {\r\n case \"PLAYER_INIT\":\r\n return base;\r\n case \"PLAYER_START\":\r\n return base;\r\n case \"PLAYER_ERROR\":\r\n return {\r\n ...base,\r\n ei: event.errorCode,\r\n em: event.errorMessage\r\n };\r\n case \"SCENARIO_ELEMENT_START\":\r\n return {\r\n ...base,\r\n st: event.videoType,\r\n t: event.currentTime,\r\n vo: event.volume * 100,\r\n d: event.duration * 1000\r\n };\r\n case \"SCENARIO_ELEMENT_PLAYING\":\r\n return {\r\n ...base,\r\n st: event.videoType,\r\n t: event.currentTime * 1000,\r\n vo: event.volume * 100,\r\n d: event.duration * 1000,\r\n ts: event.startTime * 1000,\r\n er: event.endReason\r\n };\r\n case \"CTA_SHOW\":\r\n return {\r\n ...base,\r\n ct: event.ctaId\r\n };\r\n case \"CTA_ACTION\":\r\n return {\r\n ...base,\r\n ct: event.ctaId,\r\n ac: event.actionId,\r\n ds: event.actionAdditionalData\r\n };\r\n case \"NOT_SUPPORTED_BROWSER\":\r\n return base;\r\n default:\r\n // all other events are ignored by VintomAnalyticsSender\r\n return undefined;\r\n }\r\n }\r\n\r\n private serializeBaseAnalyticsEvent(event: BaseAnalyticsEvent): any {\r\n return {\r\n type: event.type,\r\n dttm: event.timestamp,\r\n se: event.scenarioElementId,\r\n c: event.videoCode,\r\n vui: event.userIdentifier,\r\n vd: event.videoDate,\r\n pc: event.projectCode,\r\n gr: event.groupId\r\n };\r\n }\r\n}\r\n","\r\nimport { injectable } from \"inversify\";\r\nimport { StoredPreferences } from \"../../model/storedPreferences/StoredPreferences\";\r\nimport { CookieHelper } from \"../../utils/CookieHelper\";\r\n\r\nexport interface PreferencesStorage {\r\n getPreferences(): StoredPreferences;\r\n saveVolumePreference(volume: number): void;\r\n saveSubtitlesPreference(isDisplayed: boolean, language: string): void;\r\n}\r\n\r\n@injectable()\r\nexport class PreferencesStorageImpl implements PreferencesStorage {\r\n\r\n private static VOLUME_COOKIE_NAME = \"vintomVolume\";\r\n private static SUBTITLES_DISPLAYED_COOKIE_NAME = \"vintomSubtitlesDisplayed\";\r\n private static LANGUAGE_COOKIE_NAME = \"vintomLanguage\";\r\n\r\n getPreferences(): StoredPreferences {\r\n\r\n let volume;\r\n try {\r\n const volumeStr = CookieHelper.readCookie(PreferencesStorageImpl.VOLUME_COOKIE_NAME);\r\n volume = volumeStr && Number(volumeStr);\r\n\r\n if (isNaN(volume) || !volume) {\r\n volume = undefined;\r\n } else if (volume !== undefined) {\r\n volume = Math.max(0, Math.min(1, parseFloat(volume)));\r\n }\r\n } catch {\r\n // ignore\r\n }\r\n\r\n let isSubtitlesDisplayed: boolean;\r\n try {\r\n const isSubtitlesDisplayedStr = CookieHelper.readCookie(PreferencesStorageImpl.SUBTITLES_DISPLAYED_COOKIE_NAME);\r\n isSubtitlesDisplayed = isSubtitlesDisplayedStr && isSubtitlesDisplayedStr.toLowerCase() === \"true\";\r\n } catch {\r\n // ignore\r\n }\r\n\r\n const language = CookieHelper.readCookie(PreferencesStorageImpl.LANGUAGE_COOKIE_NAME);\r\n return new StoredPreferences(volume, isSubtitlesDisplayed, language);\r\n }\r\n\r\n saveVolumePreference(volume: number): void {\r\n CookieHelper.setCookie(PreferencesStorageImpl.VOLUME_COOKIE_NAME, volume && volume.toString());\r\n }\r\n\r\n saveSubtitlesPreference(isDisplayed: boolean, language: string): void {\r\n CookieHelper.setCookie(PreferencesStorageImpl.SUBTITLES_DISPLAYED_COOKIE_NAME, `${isDisplayed}`);\r\n CookieHelper.setCookie(PreferencesStorageImpl.LANGUAGE_COOKIE_NAME, language);\r\n }\r\n}\r\n","import { PlayerScenarioRunnerAPI } from \"@manager/PlayerManager\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { VintomError } from \"../../api/model/error/VintomError\";\r\nimport { ScenarioElement } from \"../../model/playerConfiguration/ScenarioElement\";\r\nimport { Subtitle } from \"../../model/playerConfiguration/Subtitle\";\r\nimport { PlaybackData } from \"../../model/playerState/PlaybackData\";\r\nimport { ScenarioElementPlayOptions } from \"../../model/scenarioElementPlayOptions/ScenarioElementPlayOptions\";\r\nimport { ScenarioGlobalState } from \"../../model/scenarioGlobalState/ScenarioGlobalState\";\r\nimport { TYPES } from \"../di/types\";\r\nimport { ResourcesCache } from \"../loader/scenarioLoader/ResourcesCache\";\r\nimport { PreferencesStorage } from \"../preferencesStorage/PreferencesStorage\";\r\nimport { ControlsLayerManager } from \"./layerManager/ControlsLayerManager\";\r\nimport { CTALayerManager } from \"./layerManager/CTALayerManager\";\r\nimport { IndependentAnimationLayerManager } from \"./layerManager/IndependentAnimationLayerManager\";\r\nimport { PlayerContainerManager } from \"./layerManager/PlayerContainerManager\";\r\nimport { PosterLayerManager } from \"./layerManager/PosterLayerManager\";\r\nimport { VideoLayerManager } from \"./layerManager/VideoLayerManager\";\r\nimport { ScenarioExecutor } from \"./ScenarioExecutor\";\r\n\r\n@injectable()\r\nexport class AnimationDrivenScenarioExecutorImpl implements ScenarioExecutor {\r\n\r\n private playerAPI: PlayerScenarioRunnerAPI;\r\n private animationFrameHandle: number;\r\n private scenarioGlobalState: ScenarioGlobalState;\r\n\r\n constructor(\r\n @inject(TYPES.scenarioRunner.layerManager.PlayerContainerManager) private playerContainerManager: PlayerContainerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.IndependentAnimationLayerManager) private animationLayerManager: IndependentAnimationLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.CTALayerManager) private ctaLayerManager: CTALayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.ControlsLayerManager) private controlsLayerManager: ControlsLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.PosterLayerManager) private posterLayerManager: PosterLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.VideoLayerManager) private videoLayerManager: VideoLayerManager,\r\n @inject(TYPES.preferencesStorage.PreferencesStorage) private preferencesStorage: PreferencesStorage) {}\r\n\r\n setPlayerAPIDelegate(playerAPI: PlayerScenarioRunnerAPI) {\r\n this.playerAPI = playerAPI;\r\n }\r\n\r\n cancel(): void {\r\n if (this.animationFrameHandle !== undefined) {\r\n cancelAnimationFrame(this.animationFrameHandle);\r\n }\r\n }\r\n\r\n intializeAndRun(\r\n scenarioGlobalState: ScenarioGlobalState,\r\n scenarioResources: Promise,\r\n options: ScenarioElementPlayOptions): Promise {\r\n\r\n this.scenarioGlobalState = scenarioGlobalState;\r\n return this.initializeScenarioElement(scenarioGlobalState, scenarioResources, options.progress)\r\n .then(() => {\r\n this.runSyncLoop();\r\n if (options.isAutoplay) {\r\n this.controlsLayerManager.play();\r\n } else {\r\n this.controlsLayerManager.pause();\r\n }\r\n });\r\n }\r\n\r\n getPlaybackData(): PlaybackData {\r\n const isPlaying = this.animationLayerManager.getIsPlaying();\r\n const time = this.animationLayerManager.getCurrentTime();\r\n const duration = this.animationLayerManager.getTotalTime();\r\n return { isPlaying, time, duration };\r\n }\r\n\r\n getScenarioGlobalState(): ScenarioGlobalState {\r\n return this.scenarioGlobalState;\r\n }\r\n\r\n play(): void {\r\n this.controlsLayerManager.play();\r\n }\r\n\r\n pause(): void {\r\n this.controlsLayerManager.pause();\r\n }\r\n\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void {\r\n this.ctaLayerManager.performAction(ctaId, actionId, args);\r\n }\r\n\r\n jumpToScenarioElement(scenarioElement: ScenarioElement, progress: number): void {\r\n this.animationLayerManager.pause();\r\n cancelAnimationFrame(this.animationFrameHandle);\r\n this.playerAPI.loadScenarioElement(scenarioElement, { isAutoplay: true, progress });\r\n }\r\n\r\n private initializeScenarioElement(scenarioGlobalState: ScenarioGlobalState, scenarioResources: Promise, progress: number):\r\n Promise {\r\n\r\n this.resetObservers();\r\n\r\n this.videoLayerManager.hide();\r\n const scenarioPath = scenarioGlobalState.scenarioPath;\r\n this.posterLayerManager.newScenarioElement(scenarioGlobalState);\r\n this.controlsLayerManager.newScenarioElement(scenarioPath);\r\n this.ctaLayerManager.newScenarioElement(scenarioGlobalState);\r\n this.animationLayerManager.newScenarioElement(scenarioPath);\r\n\r\n return scenarioResources.then((resourcesCache) => {\r\n this.posterLayerManager.resourcesLoaded(resourcesCache);\r\n\r\n this.animationLayerManager.resourcesLoaded(resourcesCache);\r\n this.animationLayerManager.loadAnimation();\r\n const totalTime = this.animationLayerManager.getTotalTime();\r\n\r\n this.ctaLayerManager.resourcesLoaded(resourcesCache, totalTime);\r\n\r\n if (progress) {\r\n const currentTime = totalTime * progress;\r\n ////////\r\n this.animationLayerManager.moveTo(currentTime);\r\n this.controlsLayerManager.moveTo(currentTime);\r\n }\r\n this.controlsLayerManager.setTotalTime(totalTime);\r\n this.controlsLayerManager.hideLoader();\r\n });\r\n }\r\n\r\n private resetObservers() {\r\n this.videoLayerManager.registerObserver(undefined);\r\n\r\n this.playerContainerManager.registerObserver({\r\n onPlayerInteractionEnd: () => this.controlsLayerManager.userInteractionEnded(),\r\n onPlayerInteraction: () => this.controlsLayerManager.userInteractedWithPlayer(),\r\n onPlayerClick: () => this.controlsLayerManager.userClickedPlayer(),\r\n onPlayerContextMenu: (x: number, y: number) => this.controlsLayerManager.showPlayerInfoTooltip(x, y)\r\n });\r\n\r\n this.animationLayerManager.registerObserver({\r\n onStarted: () => this.playerAPI.onScenarioElementStart(),\r\n onEnded: () => {\r\n this.playerAPI.onScenarioElementEnd();\r\n this.controlsLayerManager.scenarioElementEnded();\r\n }\r\n });\r\n\r\n this.controlsLayerManager.registerObserver({\r\n onPause: () => {\r\n this.animationLayerManager.pause();\r\n this.playerAPI.onPause();\r\n },\r\n onSeekStart: () => {\r\n this.animationLayerManager.pause();\r\n this.playerAPI.onSeek();\r\n },\r\n onPlay: () => {\r\n this.animationLayerManager.play();\r\n this.playerAPI.onPlay();\r\n },\r\n onReloadFrame: () => { },\r\n ////\r\n onSeekTo: (time) => this.animationLayerManager.moveTo(time),\r\n onVolumeChange: (volume: number) => {\r\n this.preferencesStorage.saveVolumePreference(volume);\r\n this.scenarioGlobalState = this.scenarioGlobalState.withVolume(volume);\r\n },\r\n onMutedChange: (isMuted: boolean) => {\r\n this.scenarioGlobalState = this.scenarioGlobalState.withMuted(isMuted);\r\n },\r\n onSubtitleSourceSelected: (subtitle: Subtitle) => { /*cannot happen */ },\r\n onJumpToScenarioElement: (scElement: ScenarioElement, progress: number) => this.jumpToScenarioElement(scElement, progress),\r\n onToggleFullscreen: () => this.playerContainerManager.toggleFullscreen(),\r\n onSendError: (error: VintomError) => this.playerAPI.logUserError(error)\r\n });\r\n\r\n this.ctaLayerManager.registerObserver({\r\n onCTAShow: (cta) => this.playerAPI.onCTAShow(cta)\r\n });\r\n }\r\n\r\n private runSyncLoop() {\r\n\r\n this.animationFrameHandle = requestAnimationFrame(() => {\r\n try {\r\n const currentTime = this.animationLayerManager.getCurrentTime();\r\n const totalTime = this.animationLayerManager.getTotalTime();\r\n const isPlaying = this.animationLayerManager.getIsPlaying();\r\n\r\n ReactDOM.unstable_batchedUpdates(() => {\r\n this.ctaLayerManager.moveTo(currentTime);\r\n this.controlsLayerManager.moveTo(currentTime);\r\n\r\n this.playerAPI.onProgress(currentTime / totalTime);\r\n\r\n if (isPlaying) {\r\n this.posterLayerManager.hidePoster();\r\n }\r\n });\r\n\r\n this.runSyncLoop();\r\n } catch (e) {\r\n this.playerAPI.onError(new VintomError(\"runtimeError\", e.stack.toString()));\r\n }\r\n\r\n });\r\n }\r\n\r\n}\r\n","import { PlayerScenarioRunnerAPI } from \"@manager/PlayerManager\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport { VintomError } from \"../../api/model/error/VintomError\";\r\nimport { ScenarioElement } from \"../../model/playerConfiguration/ScenarioElement\";\r\nimport { Subtitle } from \"../../model/playerConfiguration/Subtitle\";\r\nimport { PlaybackData } from \"../../model/playerState/PlaybackData\";\r\nimport { ScenarioElementPlayOptions } from \"../../model/scenarioElementPlayOptions/ScenarioElementPlayOptions\";\r\nimport { ScenarioGlobalState } from \"../../model/scenarioGlobalState/ScenarioGlobalState\";\r\nimport { TYPES } from \"../di/types\";\r\nimport { ResourcesCache } from \"../loader/scenarioLoader/ResourcesCache\";\r\nimport { PreferencesStorage } from \"../preferencesStorage/PreferencesStorage\";\r\nimport { ControlsLayerManager } from \"./layerManager/ControlsLayerManager\";\r\nimport { CTALayerManager } from \"./layerManager/CTALayerManager\";\r\nimport { MusicLayerManager } from \"./layerManager/MusicLayerManager\";\r\nimport { PlayerContainerManager } from \"./layerManager/PlayerContainerManager\";\r\nimport { PosterLayerManager } from \"./layerManager/PosterLayerManager\";\r\nimport { VideoLayerManager } from \"./layerManager/VideoLayerManager\";\r\nimport { ScenarioExecutor } from \"./ScenarioExecutor\";\r\n\r\n@injectable()\r\nexport class CTAOnlyScenarioExecutorImpl implements ScenarioExecutor {\r\n\r\n private playerAPI: PlayerScenarioRunnerAPI;\r\n private scenarioGlobalState: ScenarioGlobalState;\r\n\r\n constructor(\r\n @inject(TYPES.scenarioRunner.layerManager.PlayerContainerManager) private playerContainerManager: PlayerContainerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.CTALayerManager) private ctaLayerManager: CTALayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.ControlsLayerManager) private controlsLayerManager: ControlsLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.PosterLayerManager) private posterLayerManager: PosterLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.VideoLayerManager) private videoLayerManager: VideoLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.MusicLayerManager) private musicLayerManager: MusicLayerManager,\r\n @inject(TYPES.preferencesStorage.PreferencesStorage) private preferencesStorage: PreferencesStorage) {}\r\n\r\n setPlayerAPIDelegate(playerAPI: PlayerScenarioRunnerAPI) {\r\n this.playerAPI = playerAPI;\r\n }\r\n\r\n cancel(): void { }\r\n\r\n intializeAndRun(\r\n scenarioGlobalState: ScenarioGlobalState,\r\n scenarioResources: Promise,\r\n options: ScenarioElementPlayOptions): Promise {\r\n\r\n this.scenarioGlobalState = scenarioGlobalState;\r\n return this.initializeScenarioElement(scenarioGlobalState, scenarioResources)\r\n .then(() => {\r\n const scenarioElement = this.scenarioGlobalState.scenarioPath.currentElement;\r\n if (options.isAutoplay && !scenarioElement.isCTAOnlyPlaybackStoppingElement) {\r\n this.controlsLayerManager.play();\r\n }\r\n });\r\n }\r\n\r\n getPlaybackData(): PlaybackData {\r\n const isPlaying = true;\r\n const time = 0;\r\n const duration = 0;\r\n return { isPlaying, time, duration };\r\n }\r\n\r\n getScenarioGlobalState(): ScenarioGlobalState {\r\n return this.scenarioGlobalState;\r\n }\r\n\r\n play(): void {}\r\n\r\n pause(): void {}\r\n\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void {\r\n this.ctaLayerManager.performAction(ctaId, actionId, args);\r\n }\r\n\r\n jumpToScenarioElement(\r\n scenarioElement: ScenarioElement,\r\n progress: number,\r\n isAutoplay: boolean\r\n ): void {\r\n this.playerAPI.loadScenarioElement(scenarioElement, {\r\n isAutoplay,\r\n progress\r\n });\r\n }\r\n\r\n private initializeScenarioElement(scenarioGlobalState: ScenarioGlobalState, scenarioResources: Promise): Promise {\r\n\r\n this.resetObservers();\r\n\r\n this.videoLayerManager.hide();\r\n this.ctaLayerManager.newScenarioElement(scenarioGlobalState);\r\n\r\n const scenarioPath = scenarioGlobalState.scenarioPath;\r\n this.posterLayerManager.newScenarioElement(scenarioGlobalState);\r\n this.controlsLayerManager.newScenarioElement(scenarioPath);\r\n this.ctaLayerManager.newScenarioElement(scenarioGlobalState);\r\n\r\n return scenarioResources.then((resourcesCache) => {\r\n this.ctaLayerManager.resourcesLoaded(resourcesCache, undefined);\r\n this.ctaLayerManager.displayAllCTAsForCTAOnlyElemnt();\r\n this.controlsLayerManager.hideLoader();\r\n });\r\n }\r\n\r\n private resetObservers() {\r\n\r\n this.videoLayerManager.registerObserver(undefined);\r\n\r\n this.playerContainerManager.registerObserver({\r\n onPlayerInteractionEnd: () => this.controlsLayerManager.userInteractionEnded(),\r\n onPlayerInteraction: () => this.controlsLayerManager.userInteractedWithPlayer(),\r\n onPlayerClick: () => this.controlsLayerManager.userClickedPlayer(),\r\n onPlayerContextMenu: (x: number, y: number) => this.controlsLayerManager.showPlayerInfoTooltip(x, y)\r\n });\r\n\r\n this.controlsLayerManager.registerObserver({\r\n onPause: () => { },\r\n onSeekStart: () => { },\r\n onPlay: () => {\r\n const scenarioElement = this.scenarioGlobalState.scenarioPath.currentElement;\r\n if (!scenarioElement.isCTAOnlyPlaybackStoppingElement) {\r\n this.playerAPI.loadNextScenarioElement();\r\n }\r\n },\r\n onReloadFrame: () => { },\r\n onSeekTo: (time) => { },\r\n onVolumeChange: (volume: number) => {\r\n this.preferencesStorage.saveVolumePreference(volume);\r\n this.scenarioGlobalState = this.scenarioGlobalState.withVolume(volume);\r\n },\r\n onMutedChange: (isMuted: boolean) => {\r\n this.scenarioGlobalState = this.scenarioGlobalState.withMuted(isMuted);\r\n },\r\n onSubtitleSourceSelected: (subtitle: Subtitle) => { },\r\n onJumpToScenarioElement: (\r\n scElement: ScenarioElement,\r\n progress: number,\r\n isAutoplay?: boolean\r\n ) => this.jumpToScenarioElement(scElement, progress, isAutoplay),\r\n onToggleFullscreen: () => this.playerContainerManager.toggleFullscreen(),\r\n onSendError: (error: VintomError) => this.playerAPI.logUserError(error)\r\n });\r\n\r\n this.ctaLayerManager.registerObserver({\r\n onCTAShow: (cta) => this.playerAPI.onCTAShow(cta)\r\n });\r\n }\r\n\r\n}","import { PlayerScenarioRunnerAPI } from \"@manager/PlayerManager\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport { ScenarioElement } from \"../../model/playerConfiguration/ScenarioElement\";\r\nimport { PlaybackData } from \"../../model/playerState/PlaybackData\";\r\nimport { ScenarioElementPlayOptions } from \"../../model/scenarioElementPlayOptions/ScenarioElementPlayOptions\";\r\nimport { ScenarioGlobalState } from \"../../model/scenarioGlobalState/ScenarioGlobalState\";\r\nimport { TYPES } from \"../di/types\";\r\nimport { ResourcesCache } from \"../loader/scenarioLoader/ResourcesCache\";\r\nimport { ScenarioExecutor } from \"./ScenarioExecutor\";\r\n\r\nexport interface ScenarioRunner {\r\n setPlayerAPIDelegate(playerAPI: PlayerScenarioRunnerAPI): void;\r\n run(\r\n scenarioGlobalState: ScenarioGlobalState,\r\n scenarioElement: ScenarioElement,\r\n scenarioResources: Promise,\r\n options: ScenarioElementPlayOptions): void;\r\n getPlaybackData(): PlaybackData;\r\n getScenarioGlobalState(): ScenarioGlobalState;\r\n play(): void;\r\n pause(): void;\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void;\r\n jumpToScenarioElement(\r\n scenarioElement: ScenarioElement,\r\n progress: number,\r\n isAutoplay?: boolean\r\n ): void;\r\n}\r\n\r\n@injectable()\r\nexport class ScenarioRunnerImpl implements ScenarioRunner {\r\n\r\n private currentActiveExecutor: ScenarioExecutor;\r\n private allExecutors: ScenarioExecutor[];\r\n\r\n constructor(\r\n @inject(TYPES.scenarioRunner.CTAOnlyScenarioExecutor) private ctaOnlyScenarioExecutor: ScenarioExecutor,\r\n @inject(TYPES.scenarioRunner.VideoDrivenScenarioExecutor) private videoDrivenScenarioExecutor: ScenarioExecutor,\r\n @inject(TYPES.scenarioRunner.AnimationDrivenScenarioExecutor) private animationDrivenScenarioExecutor: ScenarioExecutor\r\n ) {\r\n this.allExecutors = [ctaOnlyScenarioExecutor, videoDrivenScenarioExecutor, animationDrivenScenarioExecutor];\r\n }\r\n\r\n setPlayerAPIDelegate(playerAPI: PlayerScenarioRunnerAPI) {\r\n for (const executor of this.allExecutors) {\r\n executor.setPlayerAPIDelegate(playerAPI);\r\n }\r\n }\r\n\r\n run(\r\n scenarioGlobalState: ScenarioGlobalState,\r\n scenarioElement: ScenarioElement,\r\n scenarioResources: Promise,\r\n options: ScenarioElementPlayOptions): Promise {\r\n\r\n scenarioGlobalState = scenarioGlobalState.withNowPlaying(scenarioElement);\r\n\r\n for (const executor of this.allExecutors) {\r\n executor.cancel();\r\n }\r\n\r\n if (scenarioElement.video) {\r\n this.currentActiveExecutor = this.videoDrivenScenarioExecutor;\r\n } else if (scenarioElement.animations.length) {\r\n this.currentActiveExecutor = this.animationDrivenScenarioExecutor;\r\n } else {\r\n this.currentActiveExecutor = this.ctaOnlyScenarioExecutor;\r\n }\r\n\r\n return this.currentActiveExecutor.intializeAndRun(scenarioGlobalState, scenarioResources, options);\r\n }\r\n\r\n getPlaybackData(): PlaybackData {\r\n return this.currentActiveExecutor && this.currentActiveExecutor.getPlaybackData();\r\n }\r\n\r\n getScenarioGlobalState(): ScenarioGlobalState {\r\n return this.currentActiveExecutor && this.currentActiveExecutor.getScenarioGlobalState();\r\n }\r\n\r\n play(): void {\r\n this.currentActiveExecutor && this.currentActiveExecutor.play();\r\n }\r\n\r\n pause(): void {\r\n this.currentActiveExecutor && this.currentActiveExecutor.pause();\r\n }\r\n\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void {\r\n this.currentActiveExecutor && this.currentActiveExecutor.performAction(ctaId, actionId, args);\r\n }\r\n\r\n jumpToScenarioElement(scenarioElement: ScenarioElement, progress: number, isAutoplay?: boolean): void {\r\n this.currentActiveExecutor && this.currentActiveExecutor.jumpToScenarioElement(scenarioElement, progress, isAutoplay);\r\n }\r\n\r\n}\r\n","import { PlayerScenarioRunnerAPI } from \"@manager/PlayerManager\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { VintomError } from \"../../api/model/error/VintomError\";\r\nimport { ScenarioElement } from \"../../model/playerConfiguration/ScenarioElement\";\r\nimport { Subtitle } from \"../../model/playerConfiguration/Subtitle\";\r\nimport { PlaybackData } from \"../../model/playerState/PlaybackData\";\r\nimport { ScenarioElementPlayOptions } from \"../../model/scenarioElementPlayOptions/ScenarioElementPlayOptions\";\r\nimport { ScenarioGlobalState } from \"../../model/scenarioGlobalState/ScenarioGlobalState\";\r\nimport { SubtitlesText } from \"../../model/subtitles/SubtitlesText\";\r\nimport { TYPES } from \"../di/types\";\r\nimport { ResourcesCache } from \"../loader/scenarioLoader/ResourcesCache\";\r\nimport { PreferencesStorage } from \"../preferencesStorage/PreferencesStorage\";\r\nimport { ControlsLayerManager } from \"./layerManager/ControlsLayerManager\";\r\nimport { CTALayerManager } from \"./layerManager/CTALayerManager\";\r\nimport { DependentAnimationLayerManager } from \"./layerManager/DependentAnimationLayerManager\";\r\nimport { MusicLayerManager } from \"./layerManager/MusicLayerManager\";\r\nimport { PlayerContainerManager } from \"./layerManager/PlayerContainerManager\";\r\nimport { PosterLayerManager } from \"./layerManager/PosterLayerManager\";\r\nimport { VideoLayerManager } from \"./layerManager/VideoLayerManager\";\r\nimport { ScenarioExecutor } from \"./ScenarioExecutor\";\r\n\r\n@injectable()\r\nexport class VideoDrivenScenarioExecutorImpl implements ScenarioExecutor {\r\n\r\n private playerAPI: PlayerScenarioRunnerAPI;\r\n private animationFrameHandle: number;\r\n private scenarioGlobalState: ScenarioGlobalState;\r\n\r\n constructor(\r\n @inject(TYPES.scenarioRunner.layerManager.PlayerContainerManager) private playerContainerManager: PlayerContainerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.VideoLayerManager) private videoLayerManager: VideoLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.DependentAnimationLayerManager) private animationLayerManager: DependentAnimationLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.CTALayerManager) private ctaLayerManager: CTALayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.ControlsLayerManager) private controlsLayerManager: ControlsLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.PosterLayerManager) private posterLayerManager: PosterLayerManager,\r\n @inject(TYPES.scenarioRunner.layerManager.MusicLayerManager) private musicLayerManager: MusicLayerManager,\r\n @inject(TYPES.preferencesStorage.PreferencesStorage) private preferencesStorage: PreferencesStorage) {}\r\n\r\n setPlayerAPIDelegate(playerAPI: PlayerScenarioRunnerAPI) {\r\n this.playerAPI = playerAPI;\r\n }\r\n\r\n cancel(): void {\r\n if (this.animationFrameHandle !== undefined) {\r\n cancelAnimationFrame(this.animationFrameHandle);\r\n }\r\n }\r\n\r\n intializeAndRun(\r\n scenarioGlobalState: ScenarioGlobalState,\r\n scenarioResources: Promise,\r\n options: ScenarioElementPlayOptions): Promise {\r\n\r\n this.scenarioGlobalState = scenarioGlobalState;\r\n return this.initializeScenarioElement(scenarioGlobalState, scenarioResources, options.progress)\r\n .then(() => {\r\n this.runSyncLoop();\r\n if (options.isAutoplay) {\r\n this.controlsLayerManager.play();\r\n } else {\r\n this.controlsLayerManager.pause();\r\n }\r\n });\r\n }\r\n\r\n getPlaybackData(): PlaybackData {\r\n const isPlaying = this.videoLayerManager.getIsPlaying();\r\n const time = this.videoLayerManager.getCurrentSeekTime();\r\n const duration = this.videoLayerManager.getTotalTime();\r\n const volume = this.videoLayerManager.getVolume();\r\n\r\n return { isPlaying, time, duration, volume };\r\n }\r\n\r\n getScenarioGlobalState(): ScenarioGlobalState {\r\n return this.scenarioGlobalState;\r\n }\r\n\r\n play(): void {\r\n this.controlsLayerManager.play();\r\n }\r\n\r\n pause(): void {\r\n this.controlsLayerManager.pause();\r\n }\r\n\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void {\r\n this.ctaLayerManager.performAction(ctaId, actionId, args);\r\n }\r\n\r\n jumpToScenarioElement(scenarioElement: ScenarioElement, progress: number): void {\r\n this.videoLayerManager.pause();\r\n const volume = this.videoLayerManager.getVolume();\r\n this.musicLayerManager.changeVolume(volume);\r\n cancelAnimationFrame(this.animationFrameHandle);\r\n this.posterLayerManager.setCurrentVideoSnapshotAsPoster();\r\n this.playerAPI.loadScenarioElement(scenarioElement, { isAutoplay: true, progress });\r\n }\r\n\r\n private initializeScenarioElement(scenarioGlobalState: ScenarioGlobalState, scenarioResources: Promise, progress: number):\r\n Promise {\r\n\r\n this.resetObservers();\r\n\r\n const scenarioPath = scenarioGlobalState.scenarioPath;\r\n this.posterLayerManager.newScenarioElement(scenarioGlobalState);\r\n this.videoLayerManager.newScenarioElement(scenarioPath);\r\n this.controlsLayerManager.newScenarioElement(scenarioPath);\r\n this.controlsLayerManager.showLoader();\r\n this.ctaLayerManager.newScenarioElement(scenarioGlobalState);\r\n this.animationLayerManager.newScenarioElement(scenarioPath);\r\n\r\n return scenarioResources.then((resourcesCache) => {\r\n\r\n this.posterLayerManager.resourcesLoaded(resourcesCache);\r\n if (!this.posterLayerManager.getIsShowingPoster() && progress === 0) {\r\n this.posterLayerManager.showCachedPoster(scenarioPath.currentElement.poster);\r\n }\r\n\r\n const videoDuration = this.videoLayerManager.loadVideoAndGetDuration(progress);\r\n\r\n return videoDuration.then((duration) => {\r\n\r\n this.animationLayerManager.resourcesLoaded(resourcesCache, duration);\r\n\r\n this.ctaLayerManager.resourcesLoaded(resourcesCache, duration);\r\n\r\n this.videoLayerManager.changeVolume(scenarioGlobalState.volume);\r\n this.videoLayerManager.changeMuted(scenarioGlobalState.isMuted);\r\n if (scenarioGlobalState.scenarioPath.currentElement.hasSubtitles) {\r\n this.videoLayerManager.activateSubtitles(this.scenarioGlobalState.selectedSubtitles &&\r\n this.scenarioGlobalState.selectedSubtitles.source);\r\n }\r\n\r\n this.controlsLayerManager.setTotalTime(duration);\r\n this.controlsLayerManager.changeVolume(scenarioGlobalState.volume);\r\n this.controlsLayerManager.changeIsMuted(scenarioGlobalState.isMuted);\r\n if (scenarioGlobalState.scenarioPath.currentElement.hasSubtitles) {\r\n this.controlsLayerManager.selectSubtitleSource(this.scenarioGlobalState.selectedSubtitles);\r\n }\r\n\r\n });\r\n });\r\n }\r\n\r\n private resetObservers() {\r\n this.playerContainerManager.registerObserver({\r\n onPlayerInteractionEnd: () => this.controlsLayerManager.userInteractionEnded(),\r\n onPlayerInteraction: () => this.controlsLayerManager.userInteractedWithPlayer(),\r\n onPlayerClick: () => this.controlsLayerManager.userClickedPlayer(),\r\n onPlayerContextMenu: (x: number, y: number) => this.controlsLayerManager.showPlayerInfoTooltip(x, y)\r\n });\r\n\r\n this.videoLayerManager.registerObserver({\r\n initializeMusic: () => {\r\n this.musicLayerManager.play(this.getPlaybackData().time, this.getPlaybackData().duration); \r\n },\r\n onNearTheEnd: (turnOffFadeOut: boolean) => {\r\n if (turnOffFadeOut) {\r\n this.musicLayerManager.pause();\r\n }\r\n this.musicLayerManager.fadeOut();\r\n },\r\n onEnded: () => {\r\n this.controlsLayerManager.scenarioElementEnded();\r\n this.posterLayerManager.scenarioElementEnded();\r\n this.playerAPI.onScenarioElementEnd();\r\n },\r\n onError: (error) => this.playerAPI.onError(error),\r\n onStarted: () => this.playerAPI.onScenarioElementStart(),\r\n onSubtitlesChange: (subtitles: SubtitlesText) => this.controlsLayerManager.displaySubtitles(subtitles),\r\n onTotalTimeChange: (totalTime) => {\r\n this.animationLayerManager.setTotalTime(totalTime);\r\n this.ctaLayerManager.setTotalTime(totalTime);\r\n this.controlsLayerManager.setTotalTime(totalTime);\r\n },\r\n onPlay: () => this.playerAPI.onPlay(),\r\n onPause: () => this.playerAPI.onPause()\r\n });\r\n\r\n this.controlsLayerManager.registerObserver({\r\n onPause: () => { \r\n this.videoLayerManager.pause(); \r\n this.musicLayerManager.pause();\r\n },\r\n onSeekStart: () => {\r\n this.videoLayerManager.pause();\r\n this.musicLayerManager.pause();\r\n this.playerAPI.onSeek();\r\n },\r\n onPlay: () => { \r\n this.videoLayerManager.play(); \r\n const volume = this.videoLayerManager.getVolume();\r\n this.musicLayerManager.changeVolume(volume); \r\n this.musicLayerManager.play(this.getPlaybackData().time, this.getPlaybackData().duration);\r\n }, \r\n onReloadFrame: () => this.videoLayerManager.reloadFrame(),\r\n onSeekTo: (time) => {\r\n this.videoLayerManager.moveTo(time);\r\n this.musicLayerManager.moveTo(time);\r\n },\r\n onVolumeChange: (volume: number) => {\r\n this.preferencesStorage.saveVolumePreference(volume);\r\n this.scenarioGlobalState = this.scenarioGlobalState.withVolume(volume);\r\n this.videoLayerManager.changeVolume(volume);\r\n this.musicLayerManager.changeVolume(volume);\r\n },\r\n onMutedChange: (isMuted: boolean) => {\r\n this.scenarioGlobalState = this.scenarioGlobalState.withMuted(isMuted);\r\n this.videoLayerManager.changeMuted(isMuted);\r\n this.musicLayerManager.changeMuted(isMuted);\r\n },\r\n onSubtitleSourceSelected: (subtitle: Subtitle) => {\r\n this.preferencesStorage.saveSubtitlesPreference(!!subtitle, subtitle && subtitle.label);\r\n this.scenarioGlobalState = this.scenarioGlobalState.withSelectedSubtitles(subtitle);\r\n this.videoLayerManager.activateSubtitles(this.scenarioGlobalState.selectedSubtitles &&\r\n this.scenarioGlobalState.selectedSubtitles.source);\r\n },\r\n onJumpToScenarioElement: (scElement: ScenarioElement, progress: number) => this.jumpToScenarioElement(scElement, progress),\r\n onToggleFullscreen: () => this.playerContainerManager.toggleFullscreen(),\r\n onSendError: (error: VintomError) => this.playerAPI.logUserError(error)\r\n });\r\n\r\n this.ctaLayerManager.registerObserver({\r\n onCTAShow: (cta) => this.playerAPI.onCTAShow(cta)\r\n });\r\n }\r\n\r\n private runSyncLoop() {\r\n this.animationFrameHandle = requestAnimationFrame(() => {\r\n try {\r\n const currentSeekTime = this.videoLayerManager.getCurrentSeekTime();\r\n const currentFrameTime = this.videoLayerManager.getCurrentFrameTime();\r\n const bufferedTime = this.videoLayerManager.getBufferedTime();\r\n const totalTime = this.videoLayerManager.getTotalTime();\r\n const bandwidth = this.videoLayerManager.getBandwidth();\r\n const qualityLevels = this.videoLayerManager.getQualityLevels();\r\n const isFullyLoaded = this.videoLayerManager.getIsFullyLoaded();\r\n const isPlaying = this.videoLayerManager.getIsPlaying();\r\n const isWaiting = this.videoLayerManager.getIsWaiting();\r\n\r\n ReactDOM.unstable_batchedUpdates(() => {\r\n\r\n this.ctaLayerManager.moveTo(currentFrameTime);\r\n\r\n this.controlsLayerManager.moveTo(currentSeekTime);\r\n this.controlsLayerManager.updateBufferedTime(bufferedTime);\r\n this.controlsLayerManager.updateQualityLevels(qualityLevels);\r\n this.controlsLayerManager.updateBandwidth(bandwidth);\r\n\r\n this.playerAPI.onProgress(currentFrameTime / totalTime);\r\n\r\n if (isFullyLoaded) {\r\n this.animationLayerManager.moveTo(currentFrameTime);\r\n }\r\n\r\n if (isFullyLoaded && isPlaying) {\r\n this.posterLayerManager.hidePoster();\r\n }\r\n\r\n if (isWaiting) {\r\n this.controlsLayerManager.showLoader();\r\n } else {\r\n this.controlsLayerManager.hideLoader();\r\n }\r\n });\r\n\r\n this.runSyncLoop();\r\n } catch (e) {\r\n this.playerAPI.onError(new VintomError(\"runtimeError\", e.stack.toString()));\r\n }\r\n\r\n });\r\n }\r\n\r\n}\r\n","import { ControlsLayer } from \"@manager/layer/ControlsLayer\";\r\nimport { PosterLayer } from \"@manager/layer/PosterLayer\";\r\nimport { CTALayerObserver } from \"@manager/layerObserver/CTALayerObserver\";\r\nimport { ResourcesCache } from \"@manager/loader/scenarioLoader/ResourcesCache\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport { CTA } from \"../../../model/playerConfiguration/CTA\";\r\nimport { ScenarioGlobalState } from \"../../../model/scenarioGlobalState/ScenarioGlobalState\";\r\nimport { ScenarioPath } from \"../../../model/scenarioPath/ScenarioPath\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { CTALayer } from \"../../layer/CTALayer\";\r\nimport { CachedCTAResource } from \"../../loader/scenarioLoader/CachedCTAResource\";\r\nimport { ScenarioTimeHelper } from \"../util/ScenarioTimeHelper\";\r\n\r\nexport interface CTALayerManager {\r\n newScenarioElement(scenarioGlobalState: ScenarioGlobalState): void;\r\n resourcesLoaded(resourcesCache: ResourcesCache, totalTime: number): void;\r\n setTotalTime(totalTime: number): void;\r\n moveTo(time: number): void;\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void;\r\n registerObserver(observer: CTALayerObserver): void;\r\n displayAllCTAsForCTAOnlyElemnt(): void;\r\n}\r\n\r\n@injectable()\r\nexport class CTALayerManagerImpl implements CTALayerManager { \r\n private observer: CTALayerObserver;\r\n private reusableCTAs: number[];\r\n private currentCTAs: CTA[] = [];\r\n private scenarioPath: ScenarioPath;\r\n private ctasByType: Map;\r\n private totalTime: number;\r\n\r\n constructor(\r\n @inject(TYPES.layer.CTALayer) private layer: CTALayer,\r\n @inject(TYPES.layer.PosterLayer) private posterLayer: PosterLayer,\r\n @inject(TYPES.layer.ControlsLayer) private controlsLayer: ControlsLayer) { }\r\n\r\n newScenarioElement(scenarioGlobalState: ScenarioGlobalState): void {\r\n this.scenarioPath = scenarioGlobalState.scenarioPath;\r\n this.layer.setAspectRatio(scenarioGlobalState.aspectRatio);\r\n }\r\n\r\n resourcesLoaded(resourcesCache: ResourcesCache, totalTime: number): void {\r\n this.ctasByType = resourcesCache.ctasByType;\r\n this.totalTime = totalTime;\r\n\r\n this.intializeReusableCTAs();\r\n this.removeCTAs(this.currentCTAs);\r\n }\r\n\r\n setTotalTime(totalTime: number): void {\r\n this.totalTime = totalTime;\r\n }\r\n\r\n registerObserver(observer: CTALayerObserver): void {\r\n this.observer = observer;\r\n }\r\n\r\n moveTo(time: number): void {\r\n const ctas = this.findCTAsAtTime(time);\r\n this.displayCTAs(ctas);\r\n this.controlsLayer.setIsPlaybackBlockingCTADisplayed(ctas.length > 0);\r\n }\r\n\r\n performAction(ctaId: number, actionId: number, ...args: any[]): void {\r\n this.layer.performAction(ctaId, actionId, args);\r\n }\r\n\r\n displayAllCTAsForCTAOnlyElemnt(): void {\r\n const ctas = this.scenarioPath.currentElement.ctas;\r\n const playbackStoppingCTAs = ctas.filter((cta) => cta.stopsPlayback);\r\n this.displayCTAs(ctas);\r\n\r\n this.controlsLayer.setIsPlaybackBlockingCTADisplayed(playbackStoppingCTAs.length > 0);\r\n }\r\n\r\n private intializeReusableCTAs() {\r\n if (!this.reusableCTAs) {\r\n\r\n const hashToCTACount = new Map();\r\n for (const scElem of this.scenarioPath.allElements) {\r\n for (const cta of scElem.ctas) {\r\n const countForHash = hashToCTACount.get(cta.hashCode) || 0;\r\n hashToCTACount.set(cta.hashCode, countForHash + 1);\r\n }\r\n }\r\n\r\n const duplicatedCTAHashes = Array.from(hashToCTACount.entries())\r\n .filter((entry) => entry[1] > 1)\r\n .map((entry) => entry[0]);\r\n\r\n this.reusableCTAs = duplicatedCTAHashes;\r\n }\r\n }\r\n\r\n private displayCTAs(ctas: CTA[]): void {\r\n\r\n const ctaHashesToDisplay = ctas.map((cta) => cta.hashCode);\r\n\r\n const ctasToRemove = this.currentCTAs.filter((cta) => ctaHashesToDisplay.indexOf(cta.hashCode) < 0);\r\n const ctasToLoad = ctas.filter((cta) => !this.currentCTAs.find((currCTA) => currCTA.id === cta.id));\r\n\r\n this.removeCTAs(ctasToRemove);\r\n this.loadCTAs(ctasToLoad);\r\n\r\n }\r\n\r\n private removeCTAs(ctasToRemove: CTA[]): void {\r\n for (const ctaToRemove of ctasToRemove) {\r\n this.currentCTAs = this.currentCTAs.filter((cta) => !ctasToRemove.find((toRemove) => toRemove.id === cta.id));\r\n this.layer.removeCTA(ctaToRemove.id, ctaToRemove.hashCode);\r\n }\r\n\r\n const ctaWithPoster = ctasToRemove.find((cta) => !!cta.poster);\r\n if (ctaWithPoster) {\r\n this.posterLayer.hidePoster();\r\n }\r\n\r\n }\r\n\r\n private loadCTAs(ctas: CTA[]): void {\r\n for (const cta of ctas) {\r\n const cachedCTAResource = this.ctasByType.get(cta.type);\r\n if (cachedCTAResource) {\r\n this.currentCTAs.push(cta);\r\n const isCTAReusable = this.reusableCTAs.indexOf(cta.hashCode) > -1;\r\n this.layer.loadCTA(cta.hashCode, isCTAReusable, cta.id, cachedCTAResource, cta.customAttributes);\r\n\r\n this.observer.onCTAShow(cta);\r\n }\r\n }\r\n\r\n const ctaWithPoster = ctas.find((cta) => !!cta.poster);\r\n const posterToShow = ctaWithPoster && ctaWithPoster.poster;\r\n if (posterToShow) {\r\n this.posterLayer.showPoster(posterToShow);\r\n }\r\n }\r\n\r\n private findCTAsAtTime(time: number): CTA[] {\r\n \r\n const ctasAtTime = this.scenarioPath.currentElement.ctas\r\n .filter((cta) => cta.triggerType === \"RANGE\")\r\n .filter((cta) => ScenarioTimeHelper.getTimeFromVideoStart(this.totalTime, cta.visibilityRange.startTime) <= time &&\r\n (cta.visibilityRange.endTime === \"END\" ||\r\n ScenarioTimeHelper.getTimeFromVideoStart(this.totalTime, cta.visibilityRange.endTime) >= time));\r\n \r\n if (time >= this.totalTime) {\r\n const ctasAtEnd = this.scenarioPath.currentElement.ctas\r\n .filter((cta) => cta.triggerType === \"END\");\r\n return ctasAtTime.concat(ctasAtEnd);\r\n }\r\n return ctasAtTime;\r\n }\r\n}","import { inject, injectable } from \"inversify\";\r\nimport { VintomError } from \"../../../api/model/error/VintomError\";\r\nimport { PlayerControls } from \"../../../model/playerConfiguration/PlayerControls\";\r\nimport { Subtitle } from \"../../../model/playerConfiguration/Subtitle\";\r\nimport { QualityLevel } from \"../../../model/qualityLevel/QualityLevel\";\r\nimport { ScenarioPath } from \"../../../model/scenarioPath/ScenarioPath\";\r\nimport { SubtitlesText } from \"../../../model/subtitles/SubtitlesText\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { ControlsLayer } from \"../../layer/ControlsLayer\";\r\nimport { ControlsLayerObserver } from \"../../layerObserver/ControlsLayerObserver\";\r\n\r\nexport interface ControlsLayerManager {\r\n newScenarioElement(scenarioPath: ScenarioPath): void;\r\n setTotalTime(totalTime: number): void;\r\n setConfiguration(configuration: PlayerControls, isAdminMode: boolean): void;\r\n play(): void;\r\n pause(): void;\r\n moveTo(time: number): void;\r\n updateBufferedTime(time: number): void;\r\n showLoader(): void;\r\n hideLoader(): void;\r\n changeVolume(volume: number): void;\r\n changeIsMuted(isMuted: boolean): void;\r\n selectSubtitleSource(subtitle: Subtitle): void;\r\n displaySubtitles(subtitles: SubtitlesText): void;\r\n scenarioElementEnded(): void;\r\n userInteractionEnded(): void;\r\n userInteractedWithPlayer(): void;\r\n userClickedPlayer(): void;\r\n registerObserver(observer: ControlsLayerObserver): void;\r\n showPlayerInfoTooltip(x: number, y: number): void;\r\n showMessage(message: string | VintomError): void;\r\n showLoadingPage(loadingPageVisible: boolean): void;\r\n updateBandwidth(bandwidth: number): void;\r\n updateQualityLevels(qualityLevels: QualityLevel[]): void;\r\n}\r\n\r\n@injectable()\r\nexport class ControlsLayerManagerImpl implements ControlsLayerManager {\r\n\r\n constructor(@inject(TYPES.layer.ControlsLayer) private layer: ControlsLayer) {}\r\n\r\n newScenarioElement(scenarioPath: ScenarioPath): void {\r\n const scenarioElement = scenarioPath.currentElement;\r\n if (scenarioElement.video && scenarioElement.video.subtitles) {\r\n this.layer.resetScenarioElement(scenarioPath, scenarioElement.video.subtitles);\r\n } else {\r\n this.layer.resetScenarioElement(scenarioPath);\r\n }\r\n }\r\n\r\n setTotalTime(totalTime: number): void {\r\n this.layer.setTotalScenarioTime(totalTime);\r\n }\r\n\r\n setConfiguration(configuration: PlayerControls, isAdminMode: boolean) {\r\n this.layer.setConfiguration(configuration, isAdminMode);\r\n }\r\n\r\n play() {\r\n this.layer.play();\r\n }\r\n\r\n pause() {\r\n this.layer.pause();\r\n }\r\n\r\n moveTo(time: number): void {\r\n this.layer.moveTo(time);\r\n }\r\n\r\n updateBufferedTime(time: number): void {\r\n this.layer.updateBufferedTime(time);\r\n }\r\n\r\n showLoader(): void {\r\n this.layer.showLoader();\r\n }\r\n\r\n hideLoader(): void {\r\n this.layer.hideLoader();\r\n }\r\n\r\n registerObserver(observer: ControlsLayerObserver): void {\r\n this.layer.registerObserver(observer);\r\n }\r\n\r\n changeVolume(volume: number) {\r\n this.layer.setVolume(volume);\r\n }\r\n\r\n changeIsMuted(isMuted: boolean): void {\r\n this.layer.setIsMuted(isMuted);\r\n }\r\n\r\n selectSubtitleSource(subtitle: Subtitle): void {\r\n this.layer.selectSubtitleSource(subtitle);\r\n }\r\n\r\n displaySubtitles(subtitles: SubtitlesText): void {\r\n this.layer.displaySubtitles(subtitles);\r\n }\r\n\r\n scenarioElementEnded() {\r\n this.layer.scenarioEnded();\r\n }\r\n\r\n userInteractionEnded() {\r\n this.layer.userInteractionEnded();\r\n }\r\n\r\n userInteractedWithPlayer() {\r\n this.layer.userInteractedWithPlayer();\r\n }\r\n\r\n userClickedPlayer() {\r\n this.layer.userClickedPlayer();\r\n }\r\n\r\n showPlayerInfoTooltip(x: number, y: number) {\r\n this.layer.showPlayerInfoTooltip(x, y);\r\n }\r\n\r\n showMessage(message: string | VintomError): void {\r\n this.layer.showMessage(message);\r\n }\r\n\r\n showLoadingPage(loadingPageVisible: boolean): void {\r\n this.layer.showLoadingPage(loadingPageVisible);\r\n }\r\n\r\n updateBandwidth(bandwidth: number): void {\r\n this.layer.setBandwidth(bandwidth);\r\n }\r\n\r\n updateQualityLevels(qualityLevels: QualityLevel[]): void {\r\n this.layer.setQualityLevels(qualityLevels);\r\n }\r\n\r\n}\r\n","import { ResourcesCache } from \"@manager/loader/scenarioLoader/ResourcesCache\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport { Animation } from \"../../../model/playerConfiguration/Animation\";\r\nimport { ScenarioElement } from \"../../../model/playerConfiguration/ScenarioElement\";\r\nimport { ScenarioPath } from \"../../../model/scenarioPath/ScenarioPath\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { AnimationLayer } from \"../../layer/AnimationLayer\";\r\nimport { ScenarioTimeHelper } from \"../util/ScenarioTimeHelper\";\r\n\r\nexport interface DependentAnimationLayerManager {\r\n newScenarioElement(scenarioPath: ScenarioPath): void;\r\n resourcesLoaded(resourcesCache: ResourcesCache, totalTime: number): void;\r\n setTotalTime(totalTime: number): void;\r\n moveTo(time: number): void;\r\n}\r\n\r\n@injectable()\r\nexport class DependentAnimationLayerManagerImpl implements DependentAnimationLayerManager {\r\n\r\n private scenarioElement: ScenarioElement;\r\n private animationsBySrc: Map;\r\n private totalTime: number;\r\n\r\n private currentAnimationSources: string[] = [];\r\n\r\n constructor(@inject(TYPES.layer.AnimationLayer) private layer: AnimationLayer) {}\r\n\r\n newScenarioElement(scenarioPath: ScenarioPath): void {\r\n this.scenarioElement = scenarioPath.currentElement;\r\n this.layer.registerObserver(undefined);\r\n }\r\n\r\n resourcesLoaded(resourcesCache: ResourcesCache, totalTime: number): void {\r\n this.animationsBySrc = resourcesCache.animationsBySrc;\r\n this.totalTime = totalTime;\r\n if (this.findAnimationsAtTime(0).filter((animation) => animation.displayAbovePoster === true).length > 0) {\r\n this.moveTo(1);\r\n }\r\n }\r\n\r\n setTotalTime(totalTime: number): void {\r\n this.totalTime = totalTime;\r\n }\r\n\r\n moveTo(time: number): void {\r\n\r\n const timeMillis = time * 1000;\r\n const animations = this.findAnimationsAtTime(timeMillis);\r\n const animationsToLoad = animations.filter((animation) => this.currentAnimationSources.indexOf(animation.src) === -1);\r\n\r\n const animationSources = animations.map((animation) => animation.src);\r\n const animationToRemoveSources = this.currentAnimationSources.filter((src) => animationSources.indexOf(src) === -1);\r\n\r\n for (const animation of animationsToLoad) {\r\n this.layer.loadAnimation(animation.src, this.animationsBySrc.get(animation.src), animation.animationBlur);\r\n }\r\n for (const src of animationToRemoveSources) {\r\n this.layer.removeAnimation(src);\r\n }\r\n\r\n const animationToLoadSources = animationsToLoad.map((animation) => animation.src);\r\n this.currentAnimationSources = this.currentAnimationSources.concat(animationToLoadSources);\r\n this.currentAnimationSources = this.currentAnimationSources.filter((src) => animationToRemoveSources.indexOf(src) === -1);\r\n\r\n const currentAnimations = animations.filter((animation) => this.currentAnimationSources.indexOf(animation.src) > -1);\r\n for (const animation of currentAnimations) {\r\n this.layer.moveTo(animation.src, this.getAnimationRelativeTime(timeMillis, animation));\r\n }\r\n }\r\n\r\n private findAnimationsAtTime(timeMillis: number): Animation[] {\r\n return this.scenarioElement.animations\r\n .filter((animation) => ScenarioTimeHelper.getTimeFromVideoStart(this.totalTime, animation.startTimeMillis) <= timeMillis &&\r\n (animation.endTimeMillis === undefined ||\r\n ScenarioTimeHelper.getTimeFromVideoStart(this.totalTime, animation.endTimeMillis) >= timeMillis));\r\n }\r\n\r\n private getAnimationRelativeTime(time: number, animation: Animation) {\r\n return time - animation.startTimeMillis;\r\n }\r\n}\r\n","import { ResourcesCache } from \"@manager/loader/scenarioLoader/ResourcesCache\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport { ScenarioPath } from \"../../../model/scenarioPath/ScenarioPath\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { AnimationLayer } from \"../../layer/AnimationLayer\";\r\nimport { AnimationLayerObserver } from \"../../layerObserver/AnimationLayerObserver\";\r\n\r\nexport interface IndependentAnimationLayerManager {\r\n newScenarioElement(scenarioPath: ScenarioPath): void;\r\n resourcesLoaded(resourcesCache: ResourcesCache): void;\r\n getCurrentTime(): number;\r\n getTotalTime(): number;\r\n loadAnimation(): void;\r\n getIsPlaying(): boolean;\r\n play(): void;\r\n pause(): void;\r\n moveTo(time: number): void;\r\n registerObserver(observer: AnimationLayerObserver): void;\r\n}\r\n\r\n@injectable()\r\nexport class IndependentAnimationLayerManagerImpl implements IndependentAnimationLayerManager {\r\n\r\n private isPlaying: boolean = false;\r\n private animationJSON: any;\r\n private animationSrc: string;\r\n\r\n constructor(@inject(TYPES.layer.AnimationLayer) private layer: AnimationLayer) {}\r\n\r\n newScenarioElement(scenarioPath: ScenarioPath): void {\r\n this.animationSrc = scenarioPath.currentElement.animations[0].src;\r\n }\r\n\r\n resourcesLoaded(resourcesCache: ResourcesCache): void {\r\n this.animationJSON = resourcesCache.animationsBySrc.get(this.animationSrc);\r\n this.layer.clearAllAnimations();\r\n }\r\n\r\n getCurrentTime(): number {\r\n return this.layer.getAnimationCurrentTime(this.animationSrc);\r\n }\r\n\r\n getTotalTime(): number {\r\n return this.layer.getAnimationDuration(this.animationSrc);\r\n }\r\n\r\n loadAnimation(): void {\r\n this.layer.loadAnimation(this.animationSrc, this.animationJSON);\r\n }\r\n\r\n getIsPlaying(): boolean {\r\n return this.layer.getIsAnimationPlaying(this.animationSrc);\r\n }\r\n\r\n play(): void {\r\n this.isPlaying = true;\r\n this.layer.playAnimation(this.animationSrc);\r\n }\r\n\r\n pause(): void {\r\n this.isPlaying = false;\r\n this.layer.pauseAnimation(this.animationSrc);\r\n }\r\n\r\n moveTo(time: number): void {\r\n const timeMillis = time * 1000;\r\n this.layer.moveTo(this.animationSrc, timeMillis, this.isPlaying);\r\n }\r\n\r\n registerObserver(observer: AnimationLayerObserver): void {\r\n this.layer.registerObserver(observer);\r\n }\r\n}","import { inject, injectable } from \"inversify\";\r\nimport { ScenarioElement } from \"../../../model/playerConfiguration/ScenarioElement\";\r\nimport { ScenarioPath } from \"../../../model/scenarioPath/ScenarioPath\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { MusicLayer } from \"../../layer/MusicLayer\";\r\nexport interface MusicLayerManager {\r\n play(videoCurrentTime: number, videoDuration: number): void;\r\n fadeOut(): void;\r\n changeSource(src: string): void;\r\n pause(): void;\r\n moveTo(time: number): void;\r\n changeVolume(volume: number): void;\r\n changeMuted(isMuted: boolean): void;\r\n initializeLayer(): void;\r\n setMusicTime(startTime: number, endTime: number): void;\r\n}\r\n@injectable()\r\nexport class MusicLayerManagerImpl implements MusicLayerManager {\r\n private scenarioElement: ScenarioElement;\r\n constructor(@inject(TYPES.layer.MusicLayer) private layer: MusicLayer) {}\r\n\r\n play(videoCurrentTime: number, videoDuration: number): void {\r\n this.layer.play(videoCurrentTime, videoDuration);\r\n }\r\n\r\n pause(): void {\r\n this.layer.pause();\r\n }\r\n\r\n fadeOut(): void {\r\n this.layer.fadeOut();\r\n }\r\n\r\n changeSource(src: string): void {\r\n this.layer.changeSource(src);\r\n }\r\n\r\n moveTo(time: number): void {\r\n this.layer.moveTo(time);\r\n }\r\n \r\n changeVolume(volume: number): void {\r\n this.layer.changeVolume(volume);\r\n }\r\n\r\n changeMuted(isMuted: boolean): void {\r\n this.layer.changeMuted(isMuted);\r\n }\r\n\r\n initializeLayer(): void {\r\n this.layer.initializeLayer();\r\n }\r\n\r\n setMusicTime(startTime: number, endTime: number): void {\r\n this.layer.setMusicTime(startTime, endTime);\r\n }\r\n}","import { inject, injectable } from \"inversify\";\r\nimport { PlayerControls } from \"../../../model/playerConfiguration/PlayerControls\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { PlayerContainer } from \"../../layer/PlayerContainer\";\r\nimport { PlayerContainerObserver } from \"../../layerObserver/PlayerContainerObserver\";\r\n\r\nexport interface PlayerContainerManager {\r\n registerObserver(observer: PlayerContainerObserver): void;\r\n toggleFullscreen(): void;\r\n setConfiguration(configuration: PlayerControls): void;\r\n}\r\n\r\n@injectable()\r\nexport class PlayerContainerManagerImpl implements PlayerContainerManager {\r\n\r\n constructor(@inject(TYPES.layer.PlayerContainer) private container: PlayerContainer) {}\r\n\r\n registerObserver(observer: PlayerContainerObserver) {\r\n this.container.registerObserver(observer);\r\n }\r\n\r\n toggleFullscreen() {\r\n this.container.toggleFullscreen();\r\n }\r\n\r\n setConfiguration(configuration: PlayerControls) {\r\n this.container.setConfiguration(configuration);\r\n }\r\n}","import { inject, injectable } from \"inversify\";\r\nimport { ScenarioElement } from \"../../../model/playerConfiguration/ScenarioElement\";\r\nimport { ScenarioGlobalState } from \"../../../model/scenarioGlobalState/ScenarioGlobalState\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { PosterLayer } from \"../../layer/PosterLayer\";\r\nimport { VideoLayer } from \"../../layer/VideoLayer\";\r\nimport { ResourcesCache } from \"../../loader/scenarioLoader/ResourcesCache\";\r\n\r\nexport interface PosterLayerManager {\r\n newScenarioElement(scenarioGlobalState: ScenarioGlobalState): void;\r\n resourcesLoaded(resourcesCache: ResourcesCache): void;\r\n scenarioElementEnded(): void;\r\n setCurrentVideoSnapshotAsPoster(): void;\r\n hidePoster(): void;\r\n showInitialPoster(posterUrl: string, aspectRatio: number): void;\r\n showCachedPoster(posterUrl: string): void;\r\n getIsShowingPoster(): boolean;\r\n}\r\n\r\n@injectable()\r\nexport class PosterLayerManagerImpl implements PosterLayerManager {\r\n\r\n private scenarioElement: ScenarioElement;\r\n private resourcesCache: ResourcesCache;\r\n\r\n constructor(\r\n @inject(TYPES.layer.PosterLayer) private posterLayer: PosterLayer,\r\n @inject(TYPES.layer.VideoLayer) private videoLayer: VideoLayer) {}\r\n\r\n newScenarioElement(scenarioGlobalState: ScenarioGlobalState): void {\r\n this.scenarioElement = scenarioGlobalState.scenarioPath.currentElement;\r\n }\r\n\r\n resourcesLoaded(resourcesCache: ResourcesCache): void {\r\n this.resourcesCache = resourcesCache;\r\n if (this.scenarioElement.isCTAOnlyElement && this.scenarioElement.poster) {\r\n this.showCachedPoster(this.scenarioElement.poster);\r\n }\r\n }\r\n\r\n scenarioElementEnded(): void {\r\n if (this.scenarioElement.video) {\r\n const triggerTypeEndCTA = this.scenarioElement.ctas.find((cta) => cta.triggerType === \"END\");\r\n if (!triggerTypeEndCTA || !triggerTypeEndCTA.poster) {\r\n this.setCurrentVideoSnapshotAsPoster();\r\n }\r\n }\r\n }\r\n\r\n setCurrentVideoSnapshotAsPoster(): void {\r\n if (this.scenarioElement.video) {\r\n const videoSnapshot = this.videoLayer.captureSnapshot();\r\n if (videoSnapshot) {\r\n this.doShowPoster(videoSnapshot);\r\n }\r\n }\r\n }\r\n\r\n hidePoster(): void {\r\n this.posterLayer.hidePoster();\r\n }\r\n\r\n showInitialPoster(posterUrl: string, aspectRatio: number) {\r\n this.posterLayer.setAspectRatio(aspectRatio);\r\n // this poster isn't cached\r\n this.doShowPoster(posterUrl);\r\n }\r\n\r\n showCachedPoster(posterUrl: string) {\r\n const posterObjectUrl = this.resourcesCache.posterObjectUrlsByUrl.get(posterUrl);\r\n this.doShowPoster(posterObjectUrl);\r\n }\r\n\r\n getIsShowingPoster(): boolean {\r\n return this.posterLayer.getIsShowingPoster();\r\n }\r\n\r\n private doShowPoster(posterUrl: string): void {\r\n this.posterLayer.showPoster(posterUrl);\r\n }\r\n\r\n}","import { inject, injectable } from \"inversify\";\r\nimport { ScenarioElement } from \"../../../model/playerConfiguration/ScenarioElement\";\r\nimport { QualityLevel } from \"../../../model/qualityLevel/QualityLevel\";\r\nimport { ScenarioPath } from \"../../../model/scenarioPath/ScenarioPath\";\r\nimport { TYPES } from \"../../di/types\";\r\nimport { VideoLayer } from \"../../layer/VideoLayer\";\r\nimport { VideoLayerObserver } from \"../../layerObserver/VideoLayerObserver\";\r\n\r\nexport interface VideoLayerManager {\r\n newScenarioElement(scenarioPath: ScenarioPath): void;\r\n loadVideoAndGetDuration(progress: number): Promise;\r\n getCurrentSeekTime(): number;\r\n getCurrentFrameTime(): number;\r\n getBufferedTime(): number;\r\n getTotalTime(): number;\r\n getVolume(): number;\r\n getIsPlaying(): boolean;\r\n getIsFullyLoaded(): boolean;\r\n getIsWaiting(): boolean;\r\n play(): void;\r\n pause(): void;\r\n moveTo(time: number): void;\r\n reloadFrame(): void;\r\n changeVolume(volume: number): void;\r\n changeMuted(isMuted: boolean): void;\r\n getBandwidth(): number;\r\n getQualityLevels(): QualityLevel[];\r\n activateSubtitles(source: string): void;\r\n registerObserver(observer: VideoLayerObserver): void;\r\n initializeLayer(): void;\r\n hide(): void;\r\n setMusicTime(startTime: number, endTime: number): void;\r\n}\r\n\r\n@injectable()\r\nexport class VideoLayerManagerImpl implements VideoLayerManager {\r\n\r\n private scenarioElement: ScenarioElement;\r\n\r\n constructor(@inject(TYPES.layer.VideoLayer) private layer: VideoLayer) {}\r\n\r\n newScenarioElement(scenarioPath: ScenarioPath): void {\r\n this.scenarioElement = scenarioPath.currentElement;\r\n }\r\n\r\n loadVideoAndGetDuration(progress: number): Promise {\r\n return this.layer.loadVideo(this.scenarioElement.video.sources, this.scenarioElement.video.subtitles, progress)\r\n .then(() => this.layer.getTotalTime());\r\n }\r\n\r\n getCurrentSeekTime(): number {\r\n return this.layer.getCurrentSeekTime();\r\n }\r\n\r\n getCurrentFrameTime(): number {\r\n return this.layer.getCurrentFrameTime();\r\n }\r\n\r\n getBufferedTime(): number {\r\n return this.layer.getBufferedTime();\r\n }\r\n\r\n getTotalTime(): number {\r\n return this.layer.getTotalTime();\r\n }\r\n\r\n getVolume(): number {\r\n return this.layer.getVolume();\r\n }\r\n\r\n getIsPlaying(): boolean {\r\n return this.layer.getIsPlaying();\r\n }\r\n\r\n getIsFullyLoaded(): boolean {\r\n return this.layer.getIsFullyLoaded();\r\n }\r\n\r\n getIsWaiting(): boolean {\r\n return this.layer.getIsWaiting();\r\n }\r\n\r\n play(): void {\r\n this.layer.play();\r\n }\r\n\r\n pause(): void {\r\n this.layer.pause();\r\n }\r\n\r\n moveTo(time: number): void {\r\n this.layer.moveTo(time);\r\n }\r\n\r\n reloadFrame(): void {\r\n this.layer.reloadFrame();\r\n }\r\n\r\n changeVolume(volume: number): void {\r\n this.layer.changeVolume(volume);\r\n }\r\n\r\n changeMuted(isMuted: boolean): void {\r\n this.layer.changeMuted(isMuted);\r\n }\r\n\r\n getBandwidth(): number {\r\n return this.layer.getBandwidth();\r\n }\r\n\r\n getQualityLevels(): QualityLevel[] {\r\n return this.layer.getQualityLevels();\r\n }\r\n\r\n activateSubtitles(source: string): void {\r\n this.layer.activateSubtitles(source);\r\n }\r\n\r\n registerObserver(observer: VideoLayerObserver): void {\r\n this.layer.registerObserver(observer);\r\n }\r\n\r\n initializeLayer(): void {\r\n this.layer.initializeLayer();\r\n }\r\n\r\n hide(): void {\r\n this.layer.hide();\r\n }\r\n\r\n setMusicTime(startTime: number, endTime: number): void {\r\n this.layer.setMusicTime(startTime, endTime);\r\n }\r\n\r\n}","const getTimeFromVideoStart = (totalTime: number, time: number) => {\r\n return time < 0 ? totalTime + time : time;\r\n};\r\n\r\nexport const ScenarioTimeHelper = {\r\n getTimeFromVideoStart\r\n};\r\n","import { injectable } from \"inversify\";\r\nimport { Skin } from \"../../model/playerConfiguration/Skin\";\r\n\r\nexport interface ThemeUpdater {\r\n setTheme(skin: Skin): void;\r\n}\r\n\r\n@injectable()\r\nexport class ThemeUpdaterImpl implements ThemeUpdater {\r\n\r\n setTheme(skin?: Skin): void {\r\n if (!skin || skin.color === undefined) {\r\n return;\r\n }\r\n\r\n document.querySelector(\"body\").style.setProperty(\"--theme-color\", skin.color);\r\n }\r\n}","import { Field, JsonParseError, JsonParseErrorCode, Regexp } from \"sparkson\";\r\n\r\nexport class AnalyticsEndpoint {\r\n constructor(\r\n @Field(\"pr\") @Regexp(/^(GA|vintom)$/) public provider: \"GA\" | \"vintom\",\r\n @Field(\"st\", true) public gaServiceTracker?: string,\r\n @Field(\"vs\", true) public vintomServer?: string\r\n ) {\r\n this.validate();\r\n }\r\n\r\n private validate() {\r\n if (this.provider === \"GA\" && !this.gaServiceTracker) {\r\n throw new JsonParseError(\"Google Analytics endpoint has to have gaServiceTracker defined\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n if (this.provider === \"vintom\" && !this.vintomServer) {\r\n throw new JsonParseError(\"Vintom Analytics endpoint has to have vintomServer defined\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n}","import { Field, RawJsonField } from \"sparkson\";\r\n\r\nexport class Animation {\r\n constructor(\r\n @Field(\"s\") public src: string,\r\n @Field(\"st\", true) public startTimeMillis: number = 0,\r\n @Field(\"et\", true) public endTimeMillis?: number,\r\n @Field(\"t\", true) public type: \"L\" = \"L\",\r\n @Field(\"da\", true) public displayAbovePoster: boolean = true,\r\n @Field(\"blr\", true) public animationBlur: string = \"0.6px\",\r\n @RawJsonField(\"c\", true) public customAttributes?: any,\r\n ) {}\r\n\r\n}","import stableStringify from \"json-stable-stringify\";\r\nimport { Field, JsonParseError, JsonParseErrorCode, RawJsonField, Regexp } from \"sparkson\";\r\nimport { StringHashCodeGenerator } from \"../../utils/StringHashCodeGenerator\";\r\nimport { VisibilityRange } from \"./VisibilityRange\";\r\n\r\nexport class CTA {\r\n hashCode: number;\r\n\r\n constructor(\r\n @Field(\"id\") public id: number,\r\n @Field(\"t\") public type: string,\r\n @Field(\"tt\") @Regexp(/^(RANGE|END)$/) public triggerType: \"RANGE\" | \"END\",\r\n @Field(\"p\", true) public poster?: string,\r\n @RawJsonField(\"c\", true) public customAttributes?: any,\r\n @Field(\"re\", true) public remarketingData?: string,\r\n @Field(\"vr\", true) public visibilityRange?: VisibilityRange,\r\n @Field(\"sp\", true) public stopsPlayback: boolean = true\r\n ) {\r\n this.validate();\r\n this.hashCode = StringHashCodeGenerator.hashCode(stableStringify(this.customAttributes || {}) + this.type);\r\n }\r\n\r\n private validate() {\r\n if (this.triggerType === \"RANGE\" && !this.visibilityRange) {\r\n throw new JsonParseError(\"visibilityRange has to be specified for \\\"RANGE\\\" triggerType\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (this.poster && this.triggerType !== \"END\") {\r\n throw new JsonParseError(\"Posters can be defined only for CTAs with triggerType 'END'\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (this.type === \"clickableArea\" || this.type === \"clickableButton\") {\r\n this.validateClickableAreaCustomAttributes();\r\n }\r\n }\r\n\r\n private validateClickableAreaCustomAttributes() {\r\n if (this.type === \"clickableButton\") {\r\n [\"color\", \"bgrcolor\", \"buttontext\", \"textsize\"].forEach((attr) => this.validateClickableButtonStringAttributes(attr));\r\n [\"rounded\", \"outline\"].forEach((attr) => this.validateClickableButtonBooleanAttributes(attr));\r\n }\r\n\r\n if (!this.customAttributes) {\r\n throw new JsonParseError(`Missing attributes for clickable area cta`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n [\"top\", \"bottom\", \"left\", \"right\"].forEach((dimensionName) => this.validateClickableAreaDimension(dimensionName));\r\n\r\n const scenarioElementId = this.customAttributes.scenarioElementId;\r\n if (scenarioElementId !== undefined) {\r\n if (typeof scenarioElementId !== \"string\") {\r\n throw new JsonParseError(`Clickable area cta 'scenarioElementId' attribute must be a string`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n\r\n const url = this.customAttributes.url;\r\n if (url) {\r\n if (typeof url !== \"string\") {\r\n throw new JsonParseError(`Clickable area cta 'url' attribute must be a url`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n\r\n const scenarioElementIdPresent = scenarioElementId !== undefined;\r\n const urlPresent = url !== undefined;\r\n if (scenarioElementIdPresent === urlPresent) {\r\n throw new JsonParseError(`Clickable area must have either 'scenarioElementId' or 'url' attribute `, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n }\r\n\r\n private validateClickableAreaDimension(dimensionName: string) {\r\n const value = this.customAttributes[dimensionName];\r\n if (value === undefined) {\r\n throw new JsonParseError(`Clickable area cta must have '${dimensionName}' attribute`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (typeof value !== \"string\") {\r\n throw new JsonParseError(`Clickable area cta '${dimensionName}' attribute must be a string`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (parseInt(value, 10) < 0 || parseInt(value, 10) > 100) {\r\n throw new JsonParseError(`Clickable area cta '${dimensionName}' attribute must be from interval [0, 100]`,\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n private validateClickableButtonStringAttributes(attr: string) {\r\n const value = this.customAttributes[attr];\r\n if (value === undefined) {\r\n throw new JsonParseError(`Clickable button cta must have '${attr}' attribute`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (typeof value !== \"string\") {\r\n throw new JsonParseError(`Clickable cta '${attr}' attribute must be a string`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n }\r\n private validateClickableButtonBooleanAttributes(attr: string) {\r\n const value = this.customAttributes[attr];\r\n if (value === undefined) {\r\n throw new JsonParseError(`Clickable button cta must have '${attr}' attribute`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (typeof value !== \"boolean\") {\r\n throw new JsonParseError(`Clickable area cta '${attr}' attribute must be a boolean`, JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { ArrayField, Field } from \"sparkson\";\r\nimport { AnalyticsEndpoint } from \"./AnalyticsEndpoint\";\r\nimport { PlayerControls } from \"./PlayerControls\";\r\nimport { Skin } from \"./Skin\";\r\n\r\nexport class ConfigurationOverride {\r\n constructor(\r\n @Field(\"adminMode\", true) public adminMode?: boolean,\r\n @Field(\"autoplay\", true) public autoplay?: boolean,\r\n @Field(\"mutedStart\", true) public mutedStart?: boolean,\r\n @Field(\"autoRefreshBeforeReady\", true) public autoRefreshBeforeReady?: boolean,\r\n @Field(\"subtitlesActiveOnStart\", true) public subtitlesActiveOnStart?: boolean,\r\n @ArrayField(\"analyticsEndpoints\", AnalyticsEndpoint, true) public analyticsEndpoints?: AnalyticsEndpoint[],\r\n @Field(\"playerControls\", true) public playerControls?: PlayerControls,\r\n @Field(\"skin\", true) public skin?: Skin,\r\n @Field(\"playerServerUrl\", true) public playerServerUrl?: string,\r\n @Field(\"ctaStorageUrl\", true) public ctaStorageUrl?: string,\r\n @Field(\"jsAssetsUrl\", true) public jsAssetsUrl?: string,\r\n @Field(\"playIconOnPoster\", true) public playIconOnPoster?: boolean\r\n ) {}\r\n}\r\n","import { AnalyticsEndpoint } from \"./AnalyticsEndpoint\";\r\nimport { Part } from \"./Part\";\r\nimport { PlayerControls } from \"./PlayerControls\";\r\nimport { ScenarioElement } from \"./ScenarioElement\";\r\nimport { Skin } from \"./Skin\";\r\n\r\nexport class FullPlayerConfiguration {\r\n constructor(\r\n public code: string,\r\n public scenarioElements: ScenarioElement[],\r\n public analyticsEndpoints: AnalyticsEndpoint[],\r\n public aspectRatio: number,\r\n public parts: Part[],\r\n public videoDate: number,\r\n public playerControls: PlayerControls,\r\n public status: \"READY\" | \"PREPARING\" | \"DELETED\",\r\n public playerServerUrl: string,\r\n public ctaStorageUrl: string,\r\n public videoJSUrl: string,\r\n public lottieUrl: string,\r\n public adminMode: boolean,\r\n public autoplay: boolean,\r\n public mutedStart: boolean,\r\n public autoRefreshBeforeReady: boolean,\r\n public subtitlesActiveOnStart: boolean,\r\n public personalizationJSON?: any,\r\n public campaign?: string,\r\n public skin?: Skin,\r\n public groupId?: number\r\n ) {}\r\n\r\n get hasScenarioElementWithVideo(): boolean {\r\n return this.scenarioElements.reduce((acc, scEl) => acc || !!scEl.video, false);\r\n }\r\n\r\n get hasScenarioElementWithAnimation(): boolean {\r\n return this.scenarioElements\r\n .reduce((acc, scEl) => acc || !!scEl.animations && scEl.animations.length > 0, false);\r\n }\r\n\r\n findScenarioElement(id: number) {\r\n return this.scenarioElements.find((el) => el.id === id);\r\n }\r\n}\r\n","import { Field } from \"sparkson\";\r\n\r\nexport class Part {\r\n constructor(\r\n @Field(\"id\") public id: number,\r\n @Field(\"s\") public size: number\r\n ) {}\r\n}\r\n","import { ArrayField, Field, JsonParseError, JsonParseErrorCode, Regexp } from \"sparkson\";\r\nimport { AnalyticsEndpoint } from \"./AnalyticsEndpoint\";\r\nimport { Part } from \"./Part\";\r\nimport { PlayerControls } from \"./PlayerControls\";\r\nimport { ScenarioElement } from \"./ScenarioElement\";\r\nimport { Skin } from \"./Skin\";\r\n\r\nexport class PlayerConfiguration {\r\n\r\n aspectRatio: number;\r\n\r\n constructor(\r\n @Field(\"c\") public code: string,\r\n @ArrayField(\"se\", ScenarioElement) public scenarioElements: ScenarioElement[],\r\n @ArrayField(\"ae\", AnalyticsEndpoint) public analyticsEndpoints: AnalyticsEndpoint[],\r\n @Field(\"ar\") aspectRatioStr: string,\r\n @ArrayField(\"pa\", Part, true) public parts: Part[] = [],\r\n @Field(\"d\", true) public videoDate: number,\r\n @Field(\"pc\", true) public playerControls: PlayerControls = new PlayerControls(),\r\n @Field(\"cm\") public campaign?: string,\r\n @Field(\"gr\", true) public groupId?: number,\r\n @Field(\"sk\", true) public skin?: Skin,\r\n @Field(\"am\", true) public adminMode: boolean = false,\r\n @Field(\"ap\", true) public autoplay: boolean = false,\r\n @Field(\"ms\", true) public mutedStart: boolean = false,\r\n @Field(\"arbr\", true) public autoRefreshBeforeReady: boolean = false,\r\n @Field(\"sa\", true) public subtitlesActiveOnStart: boolean = true,\r\n @Field(\"st\", true) @Regexp(/^(READY|PREPARING|DELETED)$/) public status: \"READY\" | \"PREPARING\" | \"DELETED\" = \"READY\",\r\n @Field(\"ju\", true) public jsAssetsUrl?: string,\r\n @Field(\"piop\", true) public playIconOnPoster: boolean = true,\r\n\r\n ) {\r\n this.parseAspectRatio(aspectRatioStr);\r\n this.validate();\r\n }\r\n\r\n private parseAspectRatio(aspectRatioStr: string) {\r\n const aspectRatioParts = aspectRatioStr.split(\"/\");\r\n if (aspectRatioParts.length === 2) {\r\n this.aspectRatio = Number(aspectRatioParts[0]) / Number(aspectRatioParts[1]);\r\n if (isNaN(this.aspectRatio)) {\r\n throw new JsonParseError(\"Aspect ratio must be in the format 'width/height' (ie. '16/9')\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n } else {\r\n throw new JsonParseError(\"Aspect ratio must be in the format 'width/height' (ie. '16/9')\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n\r\n private validate() {\r\n\r\n const initialScenarioElements = this.scenarioElements.filter((scenarioElement) => scenarioElement.initial);\r\n if (initialScenarioElements.length !== 1) {\r\n throw new JsonParseError(\"Configuration should have exactly one initial scenario element\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n const allScenarioElementIds = this.scenarioElements.map((scenarioElement) => scenarioElement.id);\r\n const uniqueScenarioElementIds = new Set();\r\n allScenarioElementIds.forEach((id) => uniqueScenarioElementIds.add(id));\r\n if (uniqueScenarioElementIds.size < allScenarioElementIds.length) {\r\n throw new JsonParseError(\"Configuration contains scenario elements with duplicated ids\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (this.scenarioElements.length > 1 && !this.parts.length) {\r\n throw new JsonParseError(\"Configuration with multiple scenario elements must have non empty parts array\",\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (this.scenarioElements.length > 1) {\r\n if (!this.parts.length) {\r\n throw new JsonParseError(\"Scenario with multiple elements must have 'parts' array\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n for (const el of this.scenarioElements) {\r\n if (el.partId === undefined) {\r\n throw new JsonParseError(\"Each element in scenario with multiple elements must have 'partId'\",\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n if (!this.parts.find((part) => part.id === el.partId)) {\r\n throw new JsonParseError(`Part id '${el.partId}' for element with id '${el.id}' is not present in 'parts' array`,\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n }\r\n\r\n const totalPartsSize = this.parts.reduce((acc, part) => acc + part.size, 0);\r\n if (this.parts.length && totalPartsSize !== 100) {\r\n throw new JsonParseError(\"Total size of parts must be 100\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (this.parts.length) {\r\n const ctaOnlyScenarioElements = this.scenarioElements.filter((el) => !el.video && !el.animations.length);\r\n for (const el of ctaOnlyScenarioElements) {\r\n if (this.parts.find((part) => part.id === el.partId).size !== 0) {\r\n throw new JsonParseError(\"Part size for elements without video and animations must be 0\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n }\r\n\r\n const allCTAIds = this.scenarioElements.reduce((acc, el) => acc.concat(el.ctas.map((cta) => cta.id)), []);\r\n const uniqueCTAIds = new Set();\r\n allCTAIds.forEach((id) => uniqueCTAIds.add(id));\r\n if (uniqueCTAIds.size < allCTAIds.length) {\r\n throw new JsonParseError(\"Configuration contains CTAs with duplicated ids\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n const hasVintomAnalyticsEndpoint = !!this.analyticsEndpoints.find((endpoint) => endpoint.provider === \"vintom\");\r\n if (hasVintomAnalyticsEndpoint && !this.videoDate) {\r\n throw new JsonParseError(\"Configuration with 'vintom' analytics endpoint must have 'videoDate'\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n}\r\n","import { Field } from \"sparkson\";\r\n\r\nexport class PlayerControls {\r\n constructor(\r\n @Field(\"l\", true) public logo?: string,\r\n @Field(\"lv\", true) public logoVisiblePermanently: boolean = false,\r\n @Field(\"se\", true) public seekbarEnabled: boolean = true,\r\n @Field(\"ce\", true) public controlbarEnabled: boolean = true,\r\n @Field(\"pe\", true) public playPauseEnabled: boolean = true,\r\n @Field(\"fe\", true) public fullscreenEnabled: boolean = true,\r\n @Field(\"soe\", true) public socialButtonEnabled: boolean = true,\r\n @Field(\"piop\", true) public playIconOnPoster: boolean = false,\r\n ) {}\r\n}\r\n","import { ArrayField, Field, JsonParseError, JsonParseErrorCode } from \"sparkson\";\r\nimport { Animation } from \"./Animation\";\r\nimport { CTA } from \"./CTA\";\r\nimport { Soundtrack } from \"./Soundtrack\";\r\nimport { Video } from \"./Video\";\r\n\r\nexport class ScenarioElement {\r\n constructor(\r\n @Field(\"id\") public id: number,\r\n @Field(\"p\", true) public poster?: string,\r\n @ArrayField(\"c\", CTA, true) public ctas: CTA[] = [],\r\n @Field(\"pa\", true) public partId: number = 1,\r\n @Field(\"mu\", true) public music?: Soundtrack,\r\n @Field(\"i\", true) public initial: boolean = false,\r\n @Field(\"v\", true) public video?: Video,\r\n @Field(\"ns\", true) public nextScenarioElementId?: number,\r\n @ArrayField(\"an\", Animation, true) public animations: Animation[] = []\r\n ) {\r\n this.validate();\r\n }\r\n\r\n get hasSubtitles(): boolean {\r\n return this.video && this.video.subtitles.length > 0;\r\n }\r\n\r\n get isCTAOnlyElement(): boolean {\r\n return !this.video && !this.animations.length && !!this.ctas.length;\r\n }\r\n\r\n get isCTAOnlyPlaybackStoppingElement(): boolean {\r\n return !this.video && !this.animations.length && !!this.ctas.find((cta) => cta.stopsPlayback);\r\n }\r\n\r\n private validate() {\r\n if (!this.video) {\r\n if (this.animations.length > 1) {\r\n throw new JsonParseError(\"Scenario elements without video must contain at most one animation\",\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n\r\n if (this.isCTAOnlyElement) {\r\n if (!this.ctas.length) {\r\n throw new JsonParseError(\"Scenario elements without video and animation must have at least one CTA\",\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n const hasCTAWithPoster = this.ctas.find((cta) => !!cta.poster);\r\n if (hasCTAWithPoster) {\r\n throw new JsonParseError(\"CTAs in scenario elements without video and animations must not have posters\",\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n const hasCTAsWithRangeTriggerType = this.ctas.find((cta) => cta.triggerType === \"RANGE\");\r\n if (hasCTAsWithRangeTriggerType) {\r\n throw new JsonParseError(\"CTAs in scenario elements without video and animations can only have 'END' trigger type\",\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n const hasCTAsStoppingPlayback = this.ctas.find((cta) => cta.stopsPlayback);\r\n if (!hasCTAsStoppingPlayback && !this.nextScenarioElementId) {\r\n throw new JsonParseError(\"Scenario elements without video and animation and no stopping playback CTAs must have 'nextScenarioElementId'\",\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n }\r\n\r\n const numberOfCTAPosters = this.ctas.filter((cta) => cta.poster).length;\r\n if (numberOfCTAPosters > 1) {\r\n throw new JsonParseError(\"Scenario element must have at most one CTA with poster\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n}\r\n","import { Field, JsonParseError, JsonParseErrorCode } from \"sparkson\";\r\n\r\nexport class Skin {\r\n constructor(@Field(\"c\", true) public color?: string) {\r\n if (color && !/^#[0-9a-f]{6}$/i.test(color)) {\r\n throw new JsonParseError(\"Color has to match CSS hex format\" , JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n}","import { Field, JsonParseError, JsonParseErrorCode } from \"sparkson\";\r\n\r\nexport class Soundtrack {\r\n musicStartTime?: number;\r\n musicEndTime?: number;\r\n\r\n constructor(\r\n @Field(\"u\", true) public musicUrl: string,\r\n @Field(\"s\", true) public musicStart: string = \"0\",\r\n @Field(\"e\", true) public musicEnd: string = \"0\"\r\n ) {\r\n this.changeMillisecondsToSeconds();\r\n this.validate();\r\n }\r\n\r\n private changeMillisecondsToSeconds() { \r\n this.musicStartTime = Number(this.musicStart) / 1000;\r\n this.musicEndTime = Number(this.musicEnd) / 1000;\r\n }\r\n\r\n private validate() {\r\n\r\n if (!this.musicUrl || this.musicUrl === \"\") {\r\n throw new JsonParseError(\"musicUrl must be defined)\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (isNaN(this.musicStartTime)) {\r\n throw new JsonParseError(\"musicStartTime must be a string that can be parsed as number\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (isNaN(this.musicEndTime)) {\r\n throw new JsonParseError(\"musicEndTime must be a string that can be parsed as number\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (this.musicStartTime < 0) {\r\n throw new JsonParseError(\"musicStartTime must be greater than or equal to 0\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (this.musicEndTime < 0) {\r\n throw new JsonParseError(\"musicStartTime must be greater than or equal to 0\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n\r\n}\r\n","import { Field } from \"sparkson\";\r\n\r\nexport class Source {\r\n constructor(\r\n @Field(\"s\") public src: string,\r\n @Field(\"t\") public type: string\r\n ) {}\r\n}\r\n","import { Field } from \"sparkson\";\r\n\r\nexport class Subtitle {\r\n constructor(\r\n @Field(\"s\") public source: string,\r\n @Field(\"l\", true) public label?: string\r\n ) {}\r\n}","import { ArrayField, JsonParseError, JsonParseErrorCode } from \"sparkson\";\r\nimport { Source } from \"./Source\";\r\nimport { Subtitle } from \"./Subtitle\";\r\n\r\nexport class Video {\r\n constructor(\r\n @ArrayField(\"so\", Source) public sources: Source[],\r\n @ArrayField(\"su\", Subtitle, true) public subtitles: Subtitle[] = []\r\n ) {\r\n if (!sources.length) {\r\n throw new JsonParseError(\"Video must have at least one source\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n}\r\n","import { timingSafeEqual } from \"crypto\";\r\nimport { Field, JsonParseError, JsonParseErrorCode } from \"sparkson\";\r\n\r\nexport class VisibilityRange {\r\n startTime: number;\r\n endTime: number | \"END\";\r\n\r\n constructor(\r\n @Field(\"s\") startOffset: string,\r\n @Field(\"e\") endOffset: string) {\r\n\r\n this.startTime = Number(startOffset) / 1000;\r\n\r\n if (isNaN(this.startTime)) {\r\n throw new JsonParseError(\"startOffset must be a string that can be parsed as number\", JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n\r\n if (endOffset === \"END\") {\r\n this.endTime = \"END\";\r\n } else {\r\n this.endTime = Number(endOffset) / 1000;\r\n if (isNaN(this.endTime)) {\r\n throw new JsonParseError(\"endOffset must be either string 'END' or a string that can be parsed as number\",\r\n JsonParseErrorCode.VALIDATION_FAILED);\r\n }\r\n }\r\n }\r\n}\r\n","import { Part } from \"../playerConfiguration/Part\";\r\nimport { ScenarioElement } from \"../playerConfiguration/ScenarioElement\";\r\nimport { Subtitle } from \"../playerConfiguration/Subtitle\";\r\nimport { ScenarioPath } from \"../scenarioPath/ScenarioPath\";\r\nimport { StoredPreferences } from \"../storedPreferences/StoredPreferences\";\r\n\r\nexport class ScenarioGlobalState {\r\n\r\n private static FULL_VOLUME = 1;\r\n\r\n private _scenarioPath: ScenarioPath;\r\n private _volume: number;\r\n private _isMuted: boolean;\r\n private _autoRefreshBeforeReady: boolean;\r\n private _selectedSubtitles: Subtitle;\r\n private _aspecRatio: number;\r\n // private _useDefaultSubtitles: boolean;\r\n // private _storedPreferences: StoredPreferences;\r\n // private _isSubtitlesResetByUser: boolean;\r\n\r\n private _preferredSubtitleLabel: string;\r\n private _isSubtitlesShownWhenAvailable: boolean;\r\n\r\n private constructor() { }\r\n\r\n static ininitialState(\r\n scenarioElements: ScenarioElement[],\r\n scenarioParts: Part[],\r\n aspectRatio: number,\r\n isMuted: boolean,\r\n autoRefreshBeforeReady: boolean,\r\n useDefaultSubtitles: boolean,\r\n storedPreferences: StoredPreferences): ScenarioGlobalState {\r\n\r\n const state = new ScenarioGlobalState();\r\n state._scenarioPath = ScenarioPath.initialize(scenarioElements, scenarioParts);\r\n state._volume = storedPreferences.volume !== undefined ? storedPreferences.volume : ScenarioGlobalState.FULL_VOLUME;\r\n state._isMuted = !state._volume || isMuted;\r\n state._autoRefreshBeforeReady = autoRefreshBeforeReady;\r\n state._selectedSubtitles = undefined;\r\n state._aspecRatio = aspectRatio;\r\n state._preferredSubtitleLabel = storedPreferences.subtitlesLanguage;\r\n state._isSubtitlesShownWhenAvailable = storedPreferences.isSubtitlesDisplayed !== undefined ?\r\n storedPreferences.isSubtitlesDisplayed : useDefaultSubtitles;\r\n\r\n return state;\r\n }\r\n\r\n get scenarioPath(): ScenarioPath {\r\n return this._scenarioPath;\r\n }\r\n\r\n get volume(): number {\r\n return this._volume;\r\n }\r\n\r\n get isMuted(): boolean {\r\n return this._isMuted;\r\n }\r\n\r\n get autoRefreshBeforeReady(): boolean {\r\n return this._autoRefreshBeforeReady;\r\n }\r\n\r\n get selectedSubtitles(): Subtitle {\r\n return this._selectedSubtitles;\r\n }\r\n\r\n get aspectRatio(): number {\r\n return this._aspecRatio;\r\n }\r\n\r\n withNowPlaying(scenarioElement: ScenarioElement): ScenarioGlobalState {\r\n const copy = this.copy();\r\n copy._scenarioPath = copy._scenarioPath.nowPlaying(scenarioElement);\r\n\r\n if (copy._isSubtitlesShownWhenAvailable) {\r\n copy._selectedSubtitles = copy._preferredSubtitleLabel ?\r\n copy.findSubtitlesMatchingLabel(scenarioElement, copy._preferredSubtitleLabel) : copy.findDefaultSubtitles(scenarioElement);\r\n }\r\n\r\n return copy;\r\n }\r\n\r\n withVolume(volume: number): ScenarioGlobalState {\r\n const copy = this.copy();\r\n copy._volume = volume;\r\n copy._isMuted = volume === 0;\r\n return copy;\r\n }\r\n\r\n withMuted(isMuted: boolean): ScenarioGlobalState {\r\n const copy = this.copy();\r\n copy._isMuted = isMuted;\r\n return copy;\r\n }\r\n\r\n withSelectedSubtitles(subtitles: Subtitle): ScenarioGlobalState {\r\n const copy = this.copy();\r\n copy._selectedSubtitles = subtitles;\r\n copy._isSubtitlesShownWhenAvailable = !!subtitles;\r\n copy._preferredSubtitleLabel = subtitles && subtitles.label;\r\n return copy;\r\n }\r\n\r\n private findSubtitlesMatchingLabel(scenarioElement: ScenarioElement, label: string): Subtitle {\r\n if (scenarioElement.hasSubtitles) {\r\n return scenarioElement.video.subtitles.find((subtitles) => subtitles.label === label);\r\n }\r\n }\r\n\r\n private findDefaultSubtitles(scenarioElement: ScenarioElement): Subtitle {\r\n return scenarioElement.hasSubtitles && scenarioElement.video.subtitles[0];\r\n }\r\n\r\n private copy(): ScenarioGlobalState {\r\n const copy = new ScenarioGlobalState();\r\n copy._scenarioPath = this._scenarioPath;\r\n copy._volume = this._volume;\r\n copy._isMuted = this._isMuted;\r\n copy._autoRefreshBeforeReady = this._autoRefreshBeforeReady;\r\n copy._selectedSubtitles = this._selectedSubtitles;\r\n copy._aspecRatio = this._aspecRatio;\r\n copy._isSubtitlesShownWhenAvailable = this._isSubtitlesShownWhenAvailable;\r\n copy._preferredSubtitleLabel = this._preferredSubtitleLabel;\r\n\r\n return copy;\r\n }\r\n}","import { Part } from \"../playerConfiguration/Part\";\r\nimport { ScenarioElement } from \"../playerConfiguration/ScenarioElement\";\r\n\r\nexport class PastOrCurrentPart extends Part {\r\n constructor(id: number, size: number, public scenarioElement: ScenarioElement) {\r\n super(id, size);\r\n }\r\n}","import { ScenarioElement } from \"../playerConfiguration/ScenarioElement\";\r\nimport { Part } from \"../playerConfiguration/Part\";\r\nimport { PastOrCurrentPart } from \"./PastOrCurrentPart\";\r\n\r\nexport class ScenarioPath {\r\n\r\n private static FULL_LENGTH = 100;\r\n\r\n private _currentPart: PastOrCurrentPart;\r\n private _allElements: ScenarioElement[];\r\n\r\n private _pastParts: PastOrCurrentPart[];\r\n private _futureParts: Part[];\r\n private _allParts: Part[];\r\n\r\n private constructor() {}\r\n\r\n static initialize(elements: ScenarioElement[], parts: Part[]): ScenarioPath {\r\n const scenarioPath = new ScenarioPath();\r\n scenarioPath._allElements = elements;\r\n scenarioPath._allParts = [...parts];\r\n scenarioPath._futureParts = [...parts];\r\n scenarioPath._pastParts = [];\r\n return scenarioPath;\r\n }\r\n\r\n get hasMultipleParts(): boolean {\r\n return this._allParts.length > 1;\r\n }\r\n\r\n get currentPartNumber(): number {\r\n return this._pastParts.length + 1;\r\n }\r\n\r\n get isLastPart(): boolean {\r\n return this._futureParts.length === 0;\r\n }\r\n\r\n get currentElementId(): number {\r\n return this._currentPart && this._currentPart.scenarioElement.id;\r\n }\r\n\r\n get currentElement(): ScenarioElement {\r\n return this._currentPart && this._currentPart.scenarioElement;\r\n }\r\n\r\n get allElements(): ScenarioElement[] {\r\n return this._allElements;\r\n }\r\n\r\n get displayedPastParts(): PastOrCurrentPart[] {\r\n return this._pastParts.filter((part) => part.size);\r\n }\r\n\r\n get displayedFutureParts(): Part[] {\r\n return this._futureParts.filter((part) => part.size);\r\n }\r\n\r\n get initialElement(): ScenarioElement {\r\n return this._allElements.find((el) => el.initial);\r\n }\r\n\r\n get currentPart(): PastOrCurrentPart {\r\n return this._currentPart;\r\n }\r\n\r\n nowPlaying(scenarioElement: ScenarioElement) {\r\n if (this._currentPart && this._currentPart.scenarioElement.id === scenarioElement.id) {\r\n return this;\r\n }\r\n\r\n const copy = this.copy();\r\n\r\n if (!copy._allParts.length) {\r\n copy._currentPart = new PastOrCurrentPart(undefined, ScenarioPath.FULL_LENGTH, scenarioElement);\r\n return copy;\r\n }\r\n\r\n const newPartIndex = copy._allParts.findIndex((part) => part.id === scenarioElement.partId);\r\n const currentPartIndex = copy._currentPart && copy._allParts.findIndex((part) => part.id === copy._currentPart.id);\r\n\r\n if (copy._currentPart) {\r\n copy._pastParts[currentPartIndex] = copy._currentPart;\r\n }\r\n\r\n copy._futureParts = [...copy._allParts].slice(newPartIndex + 1);\r\n copy._pastParts = copy._pastParts.slice(0, newPartIndex);\r\n\r\n for (let idx = 0; idx < newPartIndex; idx++) {\r\n // need to add empty past parts if we skip some parts while jumping to scenario element\r\n if (!copy._pastParts[idx]) {\r\n const part = copy._allParts[idx];\r\n copy._pastParts[idx] = new PastOrCurrentPart(part.id, part.size, undefined);\r\n }\r\n }\r\n\r\n const newPart = copy._allParts[newPartIndex];\r\n copy._currentPart = new PastOrCurrentPart(newPart.id, newPart.size, scenarioElement);\r\n\r\n return copy;\r\n }\r\n\r\n private copy() {\r\n const copy = new ScenarioPath();\r\n copy._currentPart = this._currentPart;\r\n copy._allElements = this._allElements;\r\n\r\n copy._allParts = this._allParts;\r\n copy._pastParts = this._pastParts;\r\n copy._futureParts = this._futureParts;\r\n\r\n return copy;\r\n }\r\n\r\n}","export class StoredPreferences {\r\n constructor(public volume: number, public isSubtitlesDisplayed: boolean, public subtitlesLanguage: string) {}\r\n}","const calculateDimensions = (aspectRatio: number, containerWidth: number, containerHeight: number) => {\r\n const containerAspectRatio = containerWidth / containerHeight;\r\n\r\n return aspectRatio < containerAspectRatio ?\r\n {\r\n width: aspectRatio * containerHeight,\r\n height: containerHeight\r\n } :\r\n {\r\n width: containerWidth,\r\n height: containerWidth / aspectRatio\r\n };\r\n};\r\n\r\nexport const AspectRatioHelper = {\r\n calculateDimensions\r\n};\r\n","import { UAParser } from \"ua-parser-js\";\r\n\r\nconst parser = new UAParser(navigator.userAgent);\r\n\r\nconst isAndroid = () => /Android/i.test(navigator.userAgent);\r\nconst isMobileDevice = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\nconst isFullscreenSupported = () => parser.getOS().name.toLowerCase() !== \"ios\";\r\nconst getBrowserName = () => parser.getBrowser().name.toLowerCase();\r\nconst isSafari = () => getBrowserName() === \"safari\" || getBrowserName() === \"ios\";\r\nconst isIE = () => getBrowserName() === \"ie\";\r\nconst isChrome = () => getBrowserName() === \"chrome\" || getBrowserName() === \"crios\";\r\nconst isDashSupported = () => !isSafari();\r\nconst getBrowserMajorVersion = () => Number(parser.getBrowser().version.split(\".\")[0]);\r\nconst getOS = () => parser.getOS().version;\r\n\r\nexport const BrowserFeatureDetector = {\r\n getBrowserName,\r\n getBrowserMajorVersion,\r\n getOS,\r\n isMobileDevice,\r\n isFullscreenSupported,\r\n isIE,\r\n isChrome,\r\n isSafari,\r\n isAndroid,\r\n isDashSupported\r\n};\r\n","const setCookie = (name: string, value: string) => {\r\n document.cookie = value !== undefined ? `${name}=${value}; Path=/` : `${name}=`;\r\n};\r\n\r\nconst readCookie = (name: string) => {\r\n const cookie: string = document.cookie\r\n .split(\";\")\r\n .map((cookieStr) => cookieStr.trim())\r\n .find((cookieStr) => cookieStr.startsWith(name));\r\n\r\n return cookie && cookie.replace(`${name}=`, \"\");\r\n};\r\n\r\nexport const CookieHelper = {\r\n setCookie,\r\n readCookie\r\n};\r\n","type TargetName = \"document\" | \"window\";\r\n\r\nconst documentListeners: { [event: string]: ((event?: Event) => void)[] } = {};\r\nconst windowListeners: { [event: string]: ((event?: Event) => void)[] } = {};\r\n\r\nconst getListenersAndTargetForName = (targetName: TargetName) => {\r\n switch (targetName) {\r\n case \"document\":\r\n return {\r\n listeners: documentListeners,\r\n target: document\r\n };\r\n case \"window\":\r\n return {\r\n listeners: windowListeners,\r\n target: window\r\n };\r\n default:\r\n throw new Error(`Unknown target name '${targetName}'`);\r\n }\r\n};\r\nconst addEventHandler = (targetName: TargetName, event: string, handler: (event?: Event) => void): void => {\r\n const { listeners, target } = getListenersAndTargetForName(targetName);\r\n\r\n const handlers = listeners[event] || [];\r\n handlers.push(handler);\r\n listeners[event] = handlers;\r\n\r\n target.addEventListener(event, handler);\r\n};\r\n\r\nconst removeEventHandler = (targetName: TargetName, event: string, handler: (event?: Event) => void): void => {\r\n const { listeners, target } = getListenersAndTargetForName(targetName);\r\n\r\n let handlers = listeners[event] || [];\r\n const handlerIndex = handlers.findIndex((listener) => listener === handler);\r\n if (handlerIndex > -1) {\r\n handlers = handlers.splice(handlerIndex, 1);\r\n listeners[event] = handlers;\r\n }\r\n target.removeEventListener(event, handler);\r\n};\r\n\r\nconst removeAllEventHandlers = (): void => {\r\n\r\n Object.keys(documentListeners)\r\n .forEach((event) => documentListeners[event].forEach((listener) => document.removeEventListener(event, listener)));\r\n\r\n Object.keys(windowListeners)\r\n .forEach((event) => windowListeners[event].forEach((listener) => window.removeEventListener(event, listener)));\r\n};\r\n\r\nexport const ListenerHelper = {\r\n addEventListener: addEventHandler,\r\n removeEventListener: removeEventHandler,\r\n removeAllEventListeners: removeAllEventHandlers\r\n};\r\n","import { SocialShareConfiguration } from \"../uiModel/socialShare/SocialShareConfiguration\";\r\n\r\nconst facebookShareUrl = (pageUrl: string) => `https://www.facebook.com/sharer/sharer.php?u=${pageUrl}`;\r\nconst twitterShareUrl = (pageUrl: string) => `https://twitter.com/intent/tweet?text=${pageUrl}`;\r\n\r\nconst getPageUrl = () => {\r\n try {\r\n return window.top.location.href;\r\n } catch {\r\n // different domain - we cannot access window url\r\n return undefined;\r\n }\r\n};\r\n\r\nconst getShareConfiguration: () => SocialShareConfiguration = () => {\r\n const pageUrl = getPageUrl();\r\n if (pageUrl) {\r\n return {\r\n canShare: true,\r\n facebookUrl: facebookShareUrl(pageUrl),\r\n twitterUrl: twitterShareUrl(pageUrl)\r\n };\r\n } else {\r\n return {\r\n canShare: false\r\n };\r\n }\r\n};\r\n\r\nexport const SocialShareHelper = {\r\n getShareConfiguration\r\n};","const hashCode = (str: string): number => {\r\n let hash = 0;\r\n if (str.length === 0) {\r\n return hash;\r\n }\r\n\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + char;\r\n hash = hash & hash; // Convert to 32bit integer\r\n }\r\n return hash;\r\n};\r\n\r\nexport const StringHashCodeGenerator = {\r\n hashCode\r\n};\r\n","import { BrowserFeatureDetector } from \"./BrowserFeatureDetector\";\r\n\r\ninterface BrowserSpec {\r\n name: string;\r\n minVersion: number;\r\n device?: string;\r\n os?: string;\r\n}\r\n\r\nconst supportedBrowsers: BrowserSpec[] = [\r\n { name: \"chrome\", minVersion: 50 },\r\n { name: \"chromium\", minVersion: 50 },\r\n { name: \"edge\", minVersion: 13 },\r\n { name: \"firefox\", minVersion: 50 },\r\n { name: \"firefox\", minVersion: 60, os: \"XP\" },\r\n { name: \"ie\", minVersion: 11 },\r\n { name: \"ios\", minVersion: 9 },\r\n { name: \"ios\", minVersion: 10, device: \"iPhone\" },\r\n { name: \"webkit\", minVersion: 601, device: \"iPhone\" },\r\n { name: \"opera\", minVersion: 30 },\r\n { name: \"safari\", minVersion: 9 },\r\n { name: \"mobile safari\", minVersion: 9 },\r\n { name: \"samsung\", minVersion: 7 },\r\n { name: \"samsung browser\", minVersion: 5 },\r\n { name: \"android browser\", minVersion: 4 },\r\n { name: \"chrome webview\", minVersion: 4 },\r\n { name: \"gsa\", minVersion: 60 },\r\n { name: \"facebook\", minVersion: 150 },\r\n { name: \"ucbrowser\", minVersion: 12 },\r\n { name: \"vivaldi\", minVersion: 2 },\r\n { name: \"miui browser\", minVersion: 10 }];\r\n\r\nconst isIOS9Supported = () => {\r\n if (BrowserFeatureDetector.getBrowserName() === \"mobile safari\" &&\r\n BrowserFeatureDetector.getBrowserMajorVersion() === 9) {\r\n const version = Number(BrowserFeatureDetector.getOS().split(\".\")[0] +\r\n (BrowserFeatureDetector.getOS().split(\".\")[1] ? \".\" + BrowserFeatureDetector.getOS().split(\".\")[1] : \"\"));\r\n return version >= 9.1;\r\n } else {\r\n return true;\r\n }\r\n};\r\n\r\nconst isBrowserSupported = () => {\r\n if (!isIOS9Supported()) {\r\n return false;\r\n }\r\n const specsForBrowser = supportedBrowsers.filter((spec) => spec.name === BrowserFeatureDetector.getBrowserName());\r\n if (specsForBrowser.length) {\r\n const deviceSpecificSpec = specsForBrowser.find((spec) => spec.device && new RegExp(spec.device, \"i\").test(window.navigator.userAgent));\r\n const osSpecificSpec = specsForBrowser.find((spec) => spec.os && spec.os === BrowserFeatureDetector.getOS());\r\n if (osSpecificSpec) {\r\n return osSpecificSpec.minVersion <= BrowserFeatureDetector.getBrowserMajorVersion();\r\n } else {\r\n if (deviceSpecificSpec) {\r\n return deviceSpecificSpec.minVersion <= BrowserFeatureDetector.getBrowserMajorVersion();\r\n } else {\r\n const noDeviceSpec = specsForBrowser.find((spec) => !spec.device);\r\n if (noDeviceSpec) {\r\n return noDeviceSpec.minVersion <= BrowserFeatureDetector.getBrowserMajorVersion();\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const SupportedBrowserHelper = {\r\n isBrowserSupported\r\n};\r\n","const SECONDS_IN_MINUTE = 60;\r\nconst SECONDS_IN_HOUR = SECONDS_IN_MINUTE * 60;\r\n\r\nconst format = (time: number): string => {\r\n const hours = Math.floor(time / SECONDS_IN_HOUR);\r\n const minutes = Math.floor((time - hours * SECONDS_IN_HOUR) / SECONDS_IN_MINUTE);\r\n const seconds = Math.floor(time - hours * SECONDS_IN_HOUR - minutes * SECONDS_IN_MINUTE);\r\n\r\n const formattedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;\r\n const formattedMinutes = minutes < 10 ? `0${minutes}` : `${minutes}`;\r\n\r\n if (hours) {\r\n return `${hours}:${formattedMinutes}:${formattedSeconds}`;\r\n }\r\n if (minutes) {\r\n return `${minutes}:${formattedSeconds}`;\r\n }\r\n return `0:${formattedSeconds}`;\r\n};\r\n\r\nexport const TimeFormatter = {\r\n format\r\n};\r\n","import { BrowserFeatureDetector } from \"./BrowserFeatureDetector\";\r\n\r\nconst SAFARI_RESIZE_DELAY = 150;\r\n\r\nconst doOnResize = (action: () => void): void => {\r\n if (BrowserFeatureDetector.isSafari()) {\r\n // resize event on Safari is delivered before document layout - when resizing animations\r\n // lottie will get old container dimensions. As a hacky workaround we trigger lottie resize with a small delay\r\n // https://openradar.appspot.com/radar?id=5040881597939712\r\n setTimeout(action, SAFARI_RESIZE_DELAY);\r\n } else {\r\n action();\r\n }\r\n};\r\n\r\nexport const WindowResizeHelper = {\r\n doOnResize\r\n};","import { i18n, I18n } from \"../i18n/i18n\";\r\n\r\nconst getPreferredLocaleI18n = (locale: string): I18n => i18n[locale];\r\n\r\nconst getBrowserLocaleI18n = (): I18n => {\r\n const language = window.navigator.language;\r\n if (language) {\r\n const locale = language.split(\"-\")[0];\r\n return i18n[locale];\r\n }\r\n};\r\n\r\nconst getFallbackLocaleI18n = (): I18n => i18n.en;\r\n\r\nexport const getI18n = (preferredLocale?: string): I18n => {\r\n return getPreferredLocaleI18n(preferredLocale) ||\r\n getBrowserLocaleI18n() ||\r\n getFallbackLocaleI18n();\r\n};","/* global Blob */\n// This file is generated. Do not edit this file directly.\n// Command: 'npm run generate' should be used to update the content.\n\n/**\n * @type {Blob}\n */\nvar AUDIO = new Blob([new Uint8Array([255, 227, 24, 196, 0, 0, 0, 3, 72, 1, 64, 0, 0, 4, 132, 16, 31, 227, 192, 225, 76, 255, 67, 12, 255, 221, 27, 255, 228, 97, 73, 63, 255, 195, 131, 69, 192, 232, 223, 255, 255, 207, 102, 239, 255, 255, 255, 101, 158, 206, 70, 20, 59, 255, 254, 95, 70, 149, 66, 4, 16, 128, 0, 2, 2, 32, 240, 138, 255, 36, 106, 183, 255, 227, 24, 196, 59, 11, 34, 62, 80, 49, 135, 40, 0, 253, 29, 191, 209, 200, 141, 71, 7, 255, 252, 152, 74, 15, 130, 33, 185, 6, 63, 255, 252, 195, 70, 203, 86, 53, 15, 255, 255, 247, 103, 76, 121, 64, 32, 47, 255, 34, 227, 194, 209, 138, 76, 65, 77, 69, 51, 46, 57, 55, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 255, 227, 24, 196, 73, 13, 153, 210, 100, 81, 135, 56, 0, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170])], { type: 'audio/mpeg' });\n\n/**\n * @type {Blob}\n */\nvar VIDEO = new Blob([new Uint8Array([0, 0, 0, 28, 102, 116, 121, 112, 105, 115, 111, 109, 0, 0, 2, 0, 105, 115, 111, 109, 105, 115, 111, 50, 109, 112, 52, 49, 0, 0, 0, 8, 102, 114, 101, 101, 0, 0, 2, 239, 109, 100, 97, 116, 33, 16, 5, 32, 164, 27, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 33, 16, 5, 32, 164, 27, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 167, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 2, 194, 109, 111, 111, 118, 0, 0, 0, 108, 109, 118, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 232, 0, 0, 0, 47, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 236, 116, 114, 97, 107, 0, 0, 0, 92, 116, 107, 104, 100, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 101, 100, 116, 115, 0, 0, 0, 28, 101, 108, 115, 116, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 47, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 100, 109, 100, 105, 97, 0, 0, 0, 32, 109, 100, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 68, 0, 0, 8, 0, 85, 196, 0, 0, 0, 0, 0, 45, 104, 100, 108, 114, 0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 1, 15, 109, 105, 110, 102, 0, 0, 0, 16, 115, 109, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 100, 105, 110, 102, 0, 0, 0, 28, 100, 114, 101, 102, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1, 0, 0, 0, 211, 115, 116, 98, 108, 0, 0, 0, 103, 115, 116, 115, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 87, 109, 112, 52, 97, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 0, 172, 68, 0, 0, 0, 0, 0, 51, 101, 115, 100, 115, 0, 0, 0, 0, 3, 128, 128, 128, 34, 0, 2, 0, 4, 128, 128, 128, 20, 64, 21, 0, 0, 0, 0, 1, 244, 0, 0, 1, 243, 249, 5, 128, 128, 128, 2, 18, 16, 6, 128, 128, 128, 1, 2, 0, 0, 0, 24, 115, 116, 116, 115, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 4, 0, 0, 0, 0, 28, 115, 116, 115, 99, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 28, 115, 116, 115, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 115, 0, 0, 1, 116, 0, 0, 0, 20, 115, 116, 99, 111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 44, 0, 0, 0, 98, 117, 100, 116, 97, 0, 0, 0, 90, 109, 101, 116, 97, 0, 0, 0, 0, 0, 0, 0, 33, 104, 100, 108, 114, 0, 0, 0, 0, 0, 0, 0, 0, 109, 100, 105, 114, 97, 112, 112, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 105, 108, 115, 116, 0, 0, 0, 37, 169, 116, 111, 111, 0, 0, 0, 29, 100, 97, 116, 97, 0, 0, 0, 1, 0, 0, 0, 0, 76, 97, 118, 102, 53, 54, 46, 52, 48, 46, 49, 48, 49])], { type: 'video/mp4' });\n\n/* global URL */\nfunction setupDefaultValues(options) {\n return Object.assign({\n muted: false,\n timeout: 250,\n inline: false\n }, options);\n}\n\nfunction startPlayback(_ref, elementCallback) {\n var muted = _ref.muted,\n timeout = _ref.timeout,\n inline = _ref.inline;\n\n var _elementCallback = elementCallback(),\n element = _elementCallback.element,\n source = _elementCallback.source;\n\n var playResult = void 0;\n var timeoutId = void 0;\n var sendOutput = void 0;\n\n element.muted = muted;\n if (muted === true) {\n element.setAttribute('muted', 'muted');\n }\n // indicates that the video is to be played \"inline\",\n // that is within the element's playback area.\n if (inline === true) {\n element.setAttribute('playsinline', 'playsinline');\n }\n\n element.src = source;\n\n return new Promise(function (resolve) {\n playResult = element.play();\n timeoutId = setTimeout(function () {\n sendOutput(false, new Error('Timeout ' + timeout + ' ms has been reached'));\n }, timeout);\n sendOutput = function sendOutput(result) {\n var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n clearTimeout(timeoutId);\n resolve({ result: result, error: error });\n };\n\n if (playResult !== undefined) {\n playResult.then(function () {\n return sendOutput(true);\n }).catch(function (playError) {\n return sendOutput(false, playError);\n });\n } else {\n sendOutput(true);\n }\n });\n}\n\n//\n// API\n//\n\nfunction video(options) {\n options = setupDefaultValues(options);\n return startPlayback(options, function () {\n return {\n element: document.createElement('video'),\n source: URL.createObjectURL(VIDEO)\n };\n });\n}\n\nfunction audio(options) {\n options = setupDefaultValues(options);\n return startPlayback(options, function () {\n return {\n element: document.createElement('audio'),\n source: URL.createObjectURL(AUDIO)\n };\n });\n}\n\nvar index = { audio: audio, video: video };\n\nexport default index;\n","/*!\n * https://github.com/paulmillr/es6-shim\n * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com)\n * and contributors, MIT License\n * es6-shim: v0.35.4\n * see https://github.com/paulmillr/es6-shim/blob/0.35.3/LICENSE\n * Details and documentation:\n * https://github.com/paulmillr/es6-shim/\n */\n\n// UMD (Universal Module Definition)\n// see https://github.com/umdjs/umd/blob/master/returnExports.js\n(function (root, factory) {\n /*global define, module, exports */\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.returnExports = factory();\n }\n}(this, function () {\n 'use strict';\n\n var _apply = Function.call.bind(Function.apply);\n var _call = Function.call.bind(Function.call);\n var isArray = Array.isArray;\n var keys = Object.keys;\n\n var not = function notThunker(func) {\n return function notThunk() {\n return !_apply(func, this, arguments);\n };\n };\n var throwsError = function (func) {\n try {\n func();\n return false;\n } catch (e) {\n return true;\n }\n };\n var valueOrFalseIfThrows = function valueOrFalseIfThrows(func) {\n try {\n return func();\n } catch (e) {\n return false;\n }\n };\n\n var isCallableWithoutNew = not(throwsError);\n var arePropertyDescriptorsSupported = function () {\n // if Object.defineProperty exists but throws, it's IE 8\n return !throwsError(function () {\n return Object.defineProperty({}, 'x', { get: function () { } }); // eslint-disable-line getter-return\n });\n };\n var supportsDescriptors = !!Object.defineProperty && arePropertyDescriptorsSupported();\n var functionsHaveNames = (function foo() {}).name === 'foo'; // eslint-disable-line no-extra-parens\n\n var _forEach = Function.call.bind(Array.prototype.forEach);\n var _reduce = Function.call.bind(Array.prototype.reduce);\n var _filter = Function.call.bind(Array.prototype.filter);\n var _some = Function.call.bind(Array.prototype.some);\n\n var defineProperty = function (object, name, value, force) {\n if (!force && name in object) { return; }\n if (supportsDescriptors) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: value\n });\n } else {\n object[name] = value;\n }\n };\n\n // Define configurable, writable and non-enumerable props\n // if they don’t exist.\n var defineProperties = function (object, map, forceOverride) {\n _forEach(keys(map), function (name) {\n var method = map[name];\n defineProperty(object, name, method, !!forceOverride);\n });\n };\n\n var _toString = Function.call.bind(Object.prototype.toString);\n var isCallable = typeof /abc/ === 'function' ? function IsCallableSlow(x) {\n // Some old browsers (IE, FF) say that typeof /abc/ === 'function'\n return typeof x === 'function' && _toString(x) === '[object Function]';\n } : function IsCallableFast(x) { return typeof x === 'function'; };\n\n var Value = {\n getter: function (object, name, getter) {\n if (!supportsDescriptors) {\n throw new TypeError('getters require true ES5 support');\n }\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: false,\n get: getter\n });\n },\n proxy: function (originalObject, key, targetObject) {\n if (!supportsDescriptors) {\n throw new TypeError('getters require true ES5 support');\n }\n var originalDescriptor = Object.getOwnPropertyDescriptor(originalObject, key);\n Object.defineProperty(targetObject, key, {\n configurable: originalDescriptor.configurable,\n enumerable: originalDescriptor.enumerable,\n get: function getKey() { return originalObject[key]; },\n set: function setKey(value) { originalObject[key] = value; }\n });\n },\n redefine: function (object, property, newValue) {\n if (supportsDescriptors) {\n var descriptor = Object.getOwnPropertyDescriptor(object, property);\n descriptor.value = newValue;\n Object.defineProperty(object, property, descriptor);\n } else {\n object[property] = newValue;\n }\n },\n defineByDescriptor: function (object, property, descriptor) {\n if (supportsDescriptors) {\n Object.defineProperty(object, property, descriptor);\n } else if ('value' in descriptor) {\n object[property] = descriptor.value;\n }\n },\n preserveToString: function (target, source) {\n if (source && isCallable(source.toString)) {\n defineProperty(target, 'toString', source.toString.bind(source), true);\n }\n }\n };\n\n // Simple shim for Object.create on ES3 browsers\n // (unlike real shim, no attempt to support `prototype === null`)\n var create = Object.create || function (prototype, properties) {\n var Prototype = function Prototype() {};\n Prototype.prototype = prototype;\n var object = new Prototype();\n if (typeof properties !== 'undefined') {\n keys(properties).forEach(function (key) {\n Value.defineByDescriptor(object, key, properties[key]);\n });\n }\n return object;\n };\n\n var supportsSubclassing = function (C, f) {\n if (!Object.setPrototypeOf) { return false; /* skip test on IE < 11 */ }\n return valueOrFalseIfThrows(function () {\n var Sub = function Subclass(arg) {\n var o = new C(arg);\n Object.setPrototypeOf(o, Subclass.prototype);\n return o;\n };\n Object.setPrototypeOf(Sub, C);\n Sub.prototype = create(C.prototype, {\n constructor: { value: Sub }\n });\n return f(Sub);\n });\n };\n\n var getGlobal = function () {\n /* global self, window, global */\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') { return self; }\n if (typeof window !== 'undefined') { return window; }\n if (typeof global !== 'undefined') { return global; }\n throw new Error('unable to locate global object');\n };\n\n var globals = getGlobal();\n var globalIsFinite = globals.isFinite;\n var _indexOf = Function.call.bind(String.prototype.indexOf);\n var _arrayIndexOfApply = Function.apply.bind(Array.prototype.indexOf);\n var _concat = Function.call.bind(Array.prototype.concat);\n // var _sort = Function.call.bind(Array.prototype.sort);\n var _strSlice = Function.call.bind(String.prototype.slice);\n var _push = Function.call.bind(Array.prototype.push);\n var _pushApply = Function.apply.bind(Array.prototype.push);\n var _shift = Function.call.bind(Array.prototype.shift);\n var _max = Math.max;\n var _min = Math.min;\n var _floor = Math.floor;\n var _abs = Math.abs;\n var _exp = Math.exp;\n var _log = Math.log;\n var _sqrt = Math.sqrt;\n var _hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty);\n var ArrayIterator; // make our implementation private\n var noop = function () {};\n\n var OrigMap = globals.Map;\n var origMapDelete = OrigMap && OrigMap.prototype['delete'];\n var origMapGet = OrigMap && OrigMap.prototype.get;\n var origMapHas = OrigMap && OrigMap.prototype.has;\n var origMapSet = OrigMap && OrigMap.prototype.set;\n\n var Symbol = globals.Symbol || {};\n var symbolSpecies = Symbol.species || '@@species';\n\n var numberIsNaN = Number.isNaN || function isNaN(value) {\n // NaN !== NaN, but they are identical.\n // NaNs are the only non-reflexive value, i.e., if x !== x,\n // then x is NaN.\n // isNaN is broken: it converts its argument to number, so\n // isNaN('foo') => true\n return value !== value;\n };\n var numberIsFinite = Number.isFinite || function isFinite(value) {\n return typeof value === 'number' && globalIsFinite(value);\n };\n var _sign = isCallable(Math.sign) ? Math.sign : function sign(value) {\n var number = Number(value);\n if (number === 0) { return number; }\n if (numberIsNaN(number)) { return number; }\n return number < 0 ? -1 : 1;\n };\n var _log1p = function log1p(value) {\n var x = Number(value);\n if (x < -1 || numberIsNaN(x)) { return NaN; }\n if (x === 0 || x === Infinity) { return x; }\n if (x === -1) { return -Infinity; }\n\n return (1 + x) - 1 === 0 ? x : x * (_log(1 + x) / ((1 + x) - 1));\n };\n\n // taken directly from https://github.com/ljharb/is-arguments/blob/master/index.js\n // can be replaced with require('is-arguments') if we ever use a build process instead\n var isStandardArguments = function isArguments(value) {\n return _toString(value) === '[object Arguments]';\n };\n var isLegacyArguments = function isArguments(value) {\n return value !== null &&\n typeof value === 'object' &&\n typeof value.length === 'number' &&\n value.length >= 0 &&\n _toString(value) !== '[object Array]' &&\n _toString(value.callee) === '[object Function]';\n };\n var isArguments = isStandardArguments(arguments) ? isStandardArguments : isLegacyArguments;\n\n var Type = {\n primitive: function (x) { return x === null || (typeof x !== 'function' && typeof x !== 'object'); },\n string: function (x) { return _toString(x) === '[object String]'; },\n regex: function (x) { return _toString(x) === '[object RegExp]'; },\n symbol: function (x) {\n return typeof globals.Symbol === 'function' && typeof x === 'symbol';\n }\n };\n\n var overrideNative = function overrideNative(object, property, replacement) {\n var original = object[property];\n defineProperty(object, property, replacement, true);\n Value.preserveToString(object[property], original);\n };\n\n // eslint-disable-next-line no-restricted-properties\n var hasSymbols = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' && Type.symbol(Symbol());\n\n // This is a private name in the es6 spec, equal to '[Symbol.iterator]'\n // we're going to use an arbitrary _-prefixed name to make our shims\n // work properly with each other, even though we don't have full Iterator\n // support. That is, `Array.from(map.keys())` will work, but we don't\n // pretend to export a \"real\" Iterator interface.\n var $iterator$ = Type.symbol(Symbol.iterator) ? Symbol.iterator : '_es6-shim iterator_';\n // Firefox ships a partial implementation using the name @@iterator.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=907077#c14\n // So use that name if we detect it.\n if (globals.Set && typeof new globals.Set()['@@iterator'] === 'function') {\n $iterator$ = '@@iterator';\n }\n\n // Reflect\n if (!globals.Reflect) {\n defineProperty(globals, 'Reflect', {}, true);\n }\n var Reflect = globals.Reflect;\n\n var $String = String;\n\n /* global document */\n var domAll = (typeof document === 'undefined' || !document) ? null : document.all;\n /* jshint eqnull:true */\n var isNullOrUndefined = domAll == null ? function isNullOrUndefined(x) {\n /* jshint eqnull:true */\n return x == null;\n } : function isNullOrUndefinedAndNotDocumentAll(x) {\n /* jshint eqnull:true */\n return x == null && x !== domAll;\n };\n\n var ES = {\n // http://www.ecma-international.org/ecma-262/6.0/#sec-call\n Call: function Call(F, V) {\n var args = arguments.length > 2 ? arguments[2] : [];\n if (!ES.IsCallable(F)) {\n throw new TypeError(F + ' is not a function');\n }\n return _apply(F, V, args);\n },\n\n RequireObjectCoercible: function (x, optMessage) {\n if (isNullOrUndefined(x)) {\n throw new TypeError(optMessage || 'Cannot call method on ' + x);\n }\n return x;\n },\n\n // This might miss the \"(non-standard exotic and does not implement\n // [[Call]])\" case from\n // http://www.ecma-international.org/ecma-262/6.0/#sec-typeof-operator-runtime-semantics-evaluation\n // but we can't find any evidence these objects exist in practice.\n // If we find some in the future, you could test `Object(x) === x`,\n // which is reliable according to\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toobject\n // but is not well optimized by runtimes and creates an object\n // whenever it returns false, and thus is very slow.\n TypeIsObject: function (x) {\n if (x === void 0 || x === null || x === true || x === false) {\n return false;\n }\n return typeof x === 'function' || typeof x === 'object' || x === domAll;\n },\n\n ToObject: function (o, optMessage) {\n return Object(ES.RequireObjectCoercible(o, optMessage));\n },\n\n IsCallable: isCallable,\n\n IsConstructor: function (x) {\n // We can't tell callables from constructors in ES5\n return ES.IsCallable(x);\n },\n\n ToInt32: function (x) {\n return ES.ToNumber(x) >> 0;\n },\n\n ToUint32: function (x) {\n return ES.ToNumber(x) >>> 0;\n },\n\n ToNumber: function (value) {\n if (_toString(value) === '[object Symbol]') {\n throw new TypeError('Cannot convert a Symbol value to a number');\n }\n return +value;\n },\n\n ToInteger: function (value) {\n var number = ES.ToNumber(value);\n if (numberIsNaN(number)) { return 0; }\n if (number === 0 || !numberIsFinite(number)) { return number; }\n return (number > 0 ? 1 : -1) * _floor(_abs(number));\n },\n\n ToLength: function (value) {\n var len = ES.ToInteger(value);\n if (len <= 0) { return 0; } // includes converting -0 to +0\n if (len > Number.MAX_SAFE_INTEGER) { return Number.MAX_SAFE_INTEGER; }\n return len;\n },\n\n SameValue: function (a, b) {\n if (a === b) {\n // 0 === -0, but they are not identical.\n if (a === 0) { return 1 / a === 1 / b; }\n return true;\n }\n return numberIsNaN(a) && numberIsNaN(b);\n },\n\n SameValueZero: function (a, b) {\n // same as SameValue except for SameValueZero(+0, -0) == true\n return (a === b) || (numberIsNaN(a) && numberIsNaN(b));\n },\n\n IsIterable: function (o) {\n return ES.TypeIsObject(o) && (typeof o[$iterator$] !== 'undefined' || isArguments(o));\n },\n\n GetIterator: function (o) {\n if (isArguments(o)) {\n // special case support for `arguments`\n return new ArrayIterator(o, 'value');\n }\n var itFn = ES.GetMethod(o, $iterator$);\n if (!ES.IsCallable(itFn)) {\n // Better diagnostics if itFn is null or undefined\n throw new TypeError('value is not an iterable');\n }\n var it = ES.Call(itFn, o);\n if (!ES.TypeIsObject(it)) {\n throw new TypeError('bad iterator');\n }\n return it;\n },\n\n GetMethod: function (o, p) {\n var func = ES.ToObject(o)[p];\n if (isNullOrUndefined(func)) {\n return void 0;\n }\n if (!ES.IsCallable(func)) {\n throw new TypeError('Method not callable: ' + p);\n }\n return func;\n },\n\n IteratorComplete: function (iterResult) {\n return !!iterResult.done;\n },\n\n IteratorClose: function (iterator, completionIsThrow) {\n var returnMethod = ES.GetMethod(iterator, 'return');\n if (returnMethod === void 0) {\n return;\n }\n var innerResult, innerException;\n try {\n innerResult = ES.Call(returnMethod, iterator);\n } catch (e) {\n innerException = e;\n }\n if (completionIsThrow) {\n return;\n }\n if (innerException) {\n throw innerException;\n }\n if (!ES.TypeIsObject(innerResult)) {\n throw new TypeError(\"Iterator's return method returned a non-object.\");\n }\n },\n\n IteratorNext: function (it) {\n var result = arguments.length > 1 ? it.next(arguments[1]) : it.next();\n if (!ES.TypeIsObject(result)) {\n throw new TypeError('bad iterator');\n }\n return result;\n },\n\n IteratorStep: function (it) {\n var result = ES.IteratorNext(it);\n var done = ES.IteratorComplete(result);\n return done ? false : result;\n },\n\n Construct: function (C, args, newTarget, isES6internal) {\n var target = typeof newTarget === 'undefined' ? C : newTarget;\n\n if (!isES6internal && Reflect.construct) {\n // Try to use Reflect.construct if available\n return Reflect.construct(C, args, target);\n }\n // OK, we have to fake it. This will only work if the\n // C.[[ConstructorKind]] == \"base\" -- but that's the only\n // kind we can make in ES5 code anyway.\n\n // OrdinaryCreateFromConstructor(target, \"%ObjectPrototype%\")\n var proto = target.prototype;\n if (!ES.TypeIsObject(proto)) {\n proto = Object.prototype;\n }\n var obj = create(proto);\n // Call the constructor.\n var result = ES.Call(C, obj, args);\n return ES.TypeIsObject(result) ? result : obj;\n },\n\n SpeciesConstructor: function (O, defaultConstructor) {\n var C = O.constructor;\n if (C === void 0) {\n return defaultConstructor;\n }\n if (!ES.TypeIsObject(C)) {\n throw new TypeError('Bad constructor');\n }\n var S = C[symbolSpecies];\n if (isNullOrUndefined(S)) {\n return defaultConstructor;\n }\n if (!ES.IsConstructor(S)) {\n throw new TypeError('Bad @@species');\n }\n return S;\n },\n\n CreateHTML: function (string, tag, attribute, value) {\n var S = ES.ToString(string);\n var p1 = '<' + tag;\n if (attribute !== '') {\n var V = ES.ToString(value);\n var escapedV = V.replace(/\"/g, '"');\n p1 += ' ' + attribute + '=\"' + escapedV + '\"';\n }\n var p2 = p1 + '>';\n var p3 = p2 + S;\n return p3 + '';\n },\n\n IsRegExp: function IsRegExp(argument) {\n if (!ES.TypeIsObject(argument)) {\n return false;\n }\n var isRegExp = argument[Symbol.match];\n if (typeof isRegExp !== 'undefined') {\n return !!isRegExp;\n }\n return Type.regex(argument);\n },\n\n ToString: function ToString(string) {\n return $String(string);\n }\n };\n\n // Well-known Symbol shims\n if (supportsDescriptors && hasSymbols) {\n var defineWellKnownSymbol = function defineWellKnownSymbol(name) {\n if (Type.symbol(Symbol[name])) {\n return Symbol[name];\n }\n // eslint-disable-next-line no-restricted-properties\n var sym = Symbol['for']('Symbol.' + name);\n Object.defineProperty(Symbol, name, {\n configurable: false,\n enumerable: false,\n writable: false,\n value: sym\n });\n return sym;\n };\n if (!Type.symbol(Symbol.search)) {\n var symbolSearch = defineWellKnownSymbol('search');\n var originalSearch = String.prototype.search;\n defineProperty(RegExp.prototype, symbolSearch, function search(string) {\n return ES.Call(originalSearch, string, [this]);\n });\n var searchShim = function search(regexp) {\n var O = ES.RequireObjectCoercible(this);\n if (!isNullOrUndefined(regexp)) {\n var searcher = ES.GetMethod(regexp, symbolSearch);\n if (typeof searcher !== 'undefined') {\n return ES.Call(searcher, regexp, [O]);\n }\n }\n return ES.Call(originalSearch, O, [ES.ToString(regexp)]);\n };\n overrideNative(String.prototype, 'search', searchShim);\n }\n if (!Type.symbol(Symbol.replace)) {\n var symbolReplace = defineWellKnownSymbol('replace');\n var originalReplace = String.prototype.replace;\n defineProperty(RegExp.prototype, symbolReplace, function replace(string, replaceValue) {\n return ES.Call(originalReplace, string, [this, replaceValue]);\n });\n var replaceShim = function replace(searchValue, replaceValue) {\n var O = ES.RequireObjectCoercible(this);\n if (!isNullOrUndefined(searchValue)) {\n var replacer = ES.GetMethod(searchValue, symbolReplace);\n if (typeof replacer !== 'undefined') {\n return ES.Call(replacer, searchValue, [O, replaceValue]);\n }\n }\n return ES.Call(originalReplace, O, [ES.ToString(searchValue), replaceValue]);\n };\n overrideNative(String.prototype, 'replace', replaceShim);\n }\n if (!Type.symbol(Symbol.split)) {\n var symbolSplit = defineWellKnownSymbol('split');\n var originalSplit = String.prototype.split;\n defineProperty(RegExp.prototype, symbolSplit, function split(string, limit) {\n return ES.Call(originalSplit, string, [this, limit]);\n });\n var splitShim = function split(separator, limit) {\n var O = ES.RequireObjectCoercible(this);\n if (!isNullOrUndefined(separator)) {\n var splitter = ES.GetMethod(separator, symbolSplit);\n if (typeof splitter !== 'undefined') {\n return ES.Call(splitter, separator, [O, limit]);\n }\n }\n return ES.Call(originalSplit, O, [ES.ToString(separator), limit]);\n };\n overrideNative(String.prototype, 'split', splitShim);\n }\n var symbolMatchExists = Type.symbol(Symbol.match);\n var stringMatchIgnoresSymbolMatch = symbolMatchExists && (function () {\n // Firefox 41, through Nightly 45 has Symbol.match, but String#match ignores it.\n // Firefox 40 and below have Symbol.match but String#match works fine.\n var o = {};\n o[Symbol.match] = function () { return 42; };\n return 'a'.match(o) !== 42;\n }());\n if (!symbolMatchExists || stringMatchIgnoresSymbolMatch) {\n var symbolMatch = defineWellKnownSymbol('match');\n\n var originalMatch = String.prototype.match;\n defineProperty(RegExp.prototype, symbolMatch, function match(string) {\n return ES.Call(originalMatch, string, [this]);\n });\n\n var matchShim = function match(regexp) {\n var O = ES.RequireObjectCoercible(this);\n if (!isNullOrUndefined(regexp)) {\n var matcher = ES.GetMethod(regexp, symbolMatch);\n if (typeof matcher !== 'undefined') {\n return ES.Call(matcher, regexp, [O]);\n }\n }\n return ES.Call(originalMatch, O, [ES.ToString(regexp)]);\n };\n overrideNative(String.prototype, 'match', matchShim);\n }\n }\n\n var wrapConstructor = function wrapConstructor(original, replacement, keysToSkip) {\n Value.preserveToString(replacement, original);\n if (Object.setPrototypeOf) {\n // sets up proper prototype chain where possible\n Object.setPrototypeOf(original, replacement);\n }\n if (supportsDescriptors) {\n _forEach(Object.getOwnPropertyNames(original), function (key) {\n if (key in noop || keysToSkip[key]) { return; }\n Value.proxy(original, key, replacement);\n });\n } else {\n _forEach(Object.keys(original), function (key) {\n if (key in noop || keysToSkip[key]) { return; }\n replacement[key] = original[key];\n });\n }\n replacement.prototype = original.prototype;\n Value.redefine(original.prototype, 'constructor', replacement);\n };\n\n var defaultSpeciesGetter = function () { return this; };\n var addDefaultSpecies = function (C) {\n if (supportsDescriptors && !_hasOwnProperty(C, symbolSpecies)) {\n Value.getter(C, symbolSpecies, defaultSpeciesGetter);\n }\n };\n\n var addIterator = function (prototype, impl) {\n var implementation = impl || function iterator() { return this; };\n defineProperty(prototype, $iterator$, implementation);\n if (!prototype[$iterator$] && Type.symbol($iterator$)) {\n // implementations are buggy when $iterator$ is a Symbol\n prototype[$iterator$] = implementation;\n }\n };\n\n var createDataProperty = function createDataProperty(object, name, value) {\n if (supportsDescriptors) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n });\n } else {\n object[name] = value;\n }\n };\n var createDataPropertyOrThrow = function createDataPropertyOrThrow(object, name, value) {\n createDataProperty(object, name, value);\n if (!ES.SameValue(object[name], value)) {\n throw new TypeError('property is nonconfigurable');\n }\n };\n\n var emulateES6construct = function (o, defaultNewTarget, defaultProto, slots) {\n // This is an es5 approximation to es6 construct semantics. in es6,\n // 'new Foo' invokes Foo.[[Construct]] which (for almost all objects)\n // just sets the internal variable NewTarget (in es6 syntax `new.target`)\n // to Foo and then returns Foo().\n\n // Many ES6 object then have constructors of the form:\n // 1. If NewTarget is undefined, throw a TypeError exception\n // 2. Let xxx by OrdinaryCreateFromConstructor(NewTarget, yyy, zzz)\n\n // So we're going to emulate those first two steps.\n if (!ES.TypeIsObject(o)) {\n throw new TypeError('Constructor requires `new`: ' + defaultNewTarget.name);\n }\n var proto = defaultNewTarget.prototype;\n if (!ES.TypeIsObject(proto)) {\n proto = defaultProto;\n }\n var obj = create(proto);\n for (var name in slots) {\n if (_hasOwnProperty(slots, name)) {\n var value = slots[name];\n defineProperty(obj, name, value, true);\n }\n }\n return obj;\n };\n\n // Firefox 31 reports this function's length as 0\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1062484\n if (String.fromCodePoint && String.fromCodePoint.length !== 1) {\n var originalFromCodePoint = String.fromCodePoint;\n overrideNative(String, 'fromCodePoint', function fromCodePoint(codePoints) {\n return ES.Call(originalFromCodePoint, this, arguments);\n });\n }\n\n var StringShims = {\n fromCodePoint: function fromCodePoint(codePoints) {\n var result = [];\n var next;\n for (var i = 0, length = arguments.length; i < length; i++) {\n next = Number(arguments[i]);\n if (!ES.SameValue(next, ES.ToInteger(next)) || next < 0 || next > 0x10FFFF) {\n throw new RangeError('Invalid code point ' + next);\n }\n\n if (next < 0x10000) {\n _push(result, String.fromCharCode(next));\n } else {\n next -= 0x10000;\n _push(result, String.fromCharCode((next >> 10) + 0xD800));\n _push(result, String.fromCharCode((next % 0x400) + 0xDC00));\n }\n }\n return result.join('');\n },\n\n raw: function raw(callSite) {\n var cooked = ES.ToObject(callSite, 'bad callSite');\n var rawString = ES.ToObject(cooked.raw, 'bad raw value');\n var len = rawString.length;\n var literalsegments = ES.ToLength(len);\n if (literalsegments <= 0) {\n return '';\n }\n\n var stringElements = [];\n var nextIndex = 0;\n var nextKey, next, nextSeg, nextSub;\n while (nextIndex < literalsegments) {\n nextKey = ES.ToString(nextIndex);\n nextSeg = ES.ToString(rawString[nextKey]);\n _push(stringElements, nextSeg);\n if (nextIndex + 1 >= literalsegments) {\n break;\n }\n next = nextIndex + 1 < arguments.length ? arguments[nextIndex + 1] : '';\n nextSub = ES.ToString(next);\n _push(stringElements, nextSub);\n nextIndex += 1;\n }\n return stringElements.join('');\n }\n };\n if (String.raw && String.raw({ raw: { 0: 'x', 1: 'y', length: 2 } }) !== 'xy') {\n // IE 11 TP has a broken String.raw implementation\n overrideNative(String, 'raw', StringShims.raw);\n }\n defineProperties(String, StringShims);\n\n // Fast repeat, uses the `Exponentiation by squaring` algorithm.\n // Perf: http://jsperf.com/string-repeat2/2\n var stringRepeat = function repeat(s, times) {\n if (times < 1) { return ''; }\n if (times % 2) { return repeat(s, times - 1) + s; }\n var half = repeat(s, times / 2);\n return half + half;\n };\n var stringMaxLength = Infinity;\n\n var StringPrototypeShims = {\n repeat: function repeat(times) {\n var thisStr = ES.ToString(ES.RequireObjectCoercible(this));\n var numTimes = ES.ToInteger(times);\n if (numTimes < 0 || numTimes >= stringMaxLength) {\n throw new RangeError('repeat count must be less than infinity and not overflow maximum string size');\n }\n return stringRepeat(thisStr, numTimes);\n },\n\n startsWith: function startsWith(searchString) {\n var S = ES.ToString(ES.RequireObjectCoercible(this));\n if (ES.IsRegExp(searchString)) {\n throw new TypeError('Cannot call method \"startsWith\" with a regex');\n }\n var searchStr = ES.ToString(searchString);\n var position;\n if (arguments.length > 1) {\n position = arguments[1];\n }\n var start = _max(ES.ToInteger(position), 0);\n return _strSlice(S, start, start + searchStr.length) === searchStr;\n },\n\n endsWith: function endsWith(searchString) {\n var S = ES.ToString(ES.RequireObjectCoercible(this));\n if (ES.IsRegExp(searchString)) {\n throw new TypeError('Cannot call method \"endsWith\" with a regex');\n }\n var searchStr = ES.ToString(searchString);\n var len = S.length;\n var endPosition;\n if (arguments.length > 1) {\n endPosition = arguments[1];\n }\n var pos = typeof endPosition === 'undefined' ? len : ES.ToInteger(endPosition);\n var end = _min(_max(pos, 0), len);\n return _strSlice(S, end - searchStr.length, end) === searchStr;\n },\n\n includes: function includes(searchString) {\n if (ES.IsRegExp(searchString)) {\n throw new TypeError('\"includes\" does not accept a RegExp');\n }\n var searchStr = ES.ToString(searchString);\n var position;\n if (arguments.length > 1) {\n position = arguments[1];\n }\n // Somehow this trick makes method 100% compat with the spec.\n return _indexOf(this, searchStr, position) !== -1;\n },\n\n codePointAt: function codePointAt(pos) {\n var thisStr = ES.ToString(ES.RequireObjectCoercible(this));\n var position = ES.ToInteger(pos);\n var length = thisStr.length;\n if (position >= 0 && position < length) {\n var first = thisStr.charCodeAt(position);\n var isEnd = position + 1 === length;\n if (first < 0xD800 || first > 0xDBFF || isEnd) { return first; }\n var second = thisStr.charCodeAt(position + 1);\n if (second < 0xDC00 || second > 0xDFFF) { return first; }\n return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;\n }\n }\n };\n if (String.prototype.includes && 'a'.includes('a', Infinity) !== false) {\n overrideNative(String.prototype, 'includes', StringPrototypeShims.includes);\n }\n\n if (String.prototype.startsWith && String.prototype.endsWith) {\n var startsWithRejectsRegex = throwsError(function () {\n /* throws if spec-compliant */\n return '/a/'.startsWith(/a/);\n });\n var startsWithHandlesInfinity = valueOrFalseIfThrows(function () {\n return 'abc'.startsWith('a', Infinity) === false;\n });\n if (!startsWithRejectsRegex || !startsWithHandlesInfinity) {\n // Firefox (< 37?) and IE 11 TP have a noncompliant startsWith implementation\n overrideNative(String.prototype, 'startsWith', StringPrototypeShims.startsWith);\n overrideNative(String.prototype, 'endsWith', StringPrototypeShims.endsWith);\n }\n }\n if (hasSymbols) {\n var startsWithSupportsSymbolMatch = valueOrFalseIfThrows(function () {\n var re = /a/;\n re[Symbol.match] = false;\n return '/a/'.startsWith(re);\n });\n if (!startsWithSupportsSymbolMatch) {\n overrideNative(String.prototype, 'startsWith', StringPrototypeShims.startsWith);\n }\n var endsWithSupportsSymbolMatch = valueOrFalseIfThrows(function () {\n var re = /a/;\n re[Symbol.match] = false;\n return '/a/'.endsWith(re);\n });\n if (!endsWithSupportsSymbolMatch) {\n overrideNative(String.prototype, 'endsWith', StringPrototypeShims.endsWith);\n }\n var includesSupportsSymbolMatch = valueOrFalseIfThrows(function () {\n var re = /a/;\n re[Symbol.match] = false;\n return '/a/'.includes(re);\n });\n if (!includesSupportsSymbolMatch) {\n overrideNative(String.prototype, 'includes', StringPrototypeShims.includes);\n }\n }\n\n defineProperties(String.prototype, StringPrototypeShims);\n\n // whitespace from: http://es5.github.io/#x15.5.4.20\n // implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324\n var ws = [\n '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003',\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028',\n '\\u2029\\uFEFF'\n ].join('');\n var trimRegexp = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');\n var trimShim = function trim() {\n return ES.ToString(ES.RequireObjectCoercible(this)).replace(trimRegexp, '');\n };\n var nonWS = ['\\u0085', '\\u200b', '\\ufffe'].join('');\n var nonWSregex = new RegExp('[' + nonWS + ']', 'g');\n var isBadHexRegex = /^[-+]0x[0-9a-f]+$/i;\n var hasStringTrimBug = nonWS.trim().length !== nonWS.length;\n defineProperty(String.prototype, 'trim', trimShim, hasStringTrimBug);\n\n // Given an argument x, it will return an IteratorResult object,\n // with value set to x and done to false.\n // Given no arguments, it will return an iterator completion object.\n var iteratorResult = function (x) {\n return { value: x, done: arguments.length === 0 };\n };\n\n // see http://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype-@@iterator\n var StringIterator = function (s) {\n ES.RequireObjectCoercible(s);\n this._s = ES.ToString(s);\n this._i = 0;\n };\n StringIterator.prototype.next = function () {\n var s = this._s;\n var i = this._i;\n if (typeof s === 'undefined' || i >= s.length) {\n this._s = void 0;\n return iteratorResult();\n }\n var first = s.charCodeAt(i);\n var second, len;\n if (first < 0xD800 || first > 0xDBFF || (i + 1) === s.length) {\n len = 1;\n } else {\n second = s.charCodeAt(i + 1);\n len = (second < 0xDC00 || second > 0xDFFF) ? 1 : 2;\n }\n this._i = i + len;\n return iteratorResult(s.substr(i, len));\n };\n addIterator(StringIterator.prototype);\n addIterator(String.prototype, function () {\n return new StringIterator(this);\n });\n\n var ArrayShims = {\n from: function from(items) {\n var C = this;\n var mapFn;\n if (arguments.length > 1) {\n mapFn = arguments[1];\n }\n var mapping, T;\n if (typeof mapFn === 'undefined') {\n mapping = false;\n } else {\n if (!ES.IsCallable(mapFn)) {\n throw new TypeError('Array.from: when provided, the second argument must be a function');\n }\n if (arguments.length > 2) {\n T = arguments[2];\n }\n mapping = true;\n }\n\n // Note that that Arrays will use ArrayIterator:\n // https://bugs.ecmascript.org/show_bug.cgi?id=2416\n var usingIterator = typeof (isArguments(items) || ES.GetMethod(items, $iterator$)) !== 'undefined';\n\n var length, result, i;\n if (usingIterator) {\n result = ES.IsConstructor(C) ? Object(new C()) : [];\n var iterator = ES.GetIterator(items);\n var next, nextValue;\n\n i = 0;\n while (true) {\n next = ES.IteratorStep(iterator);\n if (next === false) {\n break;\n }\n nextValue = next.value;\n try {\n if (mapping) {\n nextValue = typeof T === 'undefined' ? mapFn(nextValue, i) : _call(mapFn, T, nextValue, i);\n }\n result[i] = nextValue;\n } catch (e) {\n ES.IteratorClose(iterator, true);\n throw e;\n }\n i += 1;\n }\n length = i;\n } else {\n var arrayLike = ES.ToObject(items);\n length = ES.ToLength(arrayLike.length);\n result = ES.IsConstructor(C) ? Object(new C(length)) : new Array(length);\n var value;\n for (i = 0; i < length; ++i) {\n value = arrayLike[i];\n if (mapping) {\n value = typeof T === 'undefined' ? mapFn(value, i) : _call(mapFn, T, value, i);\n }\n createDataPropertyOrThrow(result, i, value);\n }\n }\n\n result.length = length;\n return result;\n },\n\n of: function of() {\n var len = arguments.length;\n var C = this;\n var A = isArray(C) || !ES.IsCallable(C) ? new Array(len) : ES.Construct(C, [len]);\n for (var k = 0; k < len; ++k) {\n createDataPropertyOrThrow(A, k, arguments[k]);\n }\n A.length = len;\n return A;\n }\n };\n defineProperties(Array, ArrayShims);\n addDefaultSpecies(Array);\n\n // Our ArrayIterator is private; see\n // https://github.com/paulmillr/es6-shim/issues/252\n ArrayIterator = function (array, kind) {\n this.i = 0;\n this.array = array;\n this.kind = kind;\n };\n\n defineProperties(ArrayIterator.prototype, {\n next: function () {\n var i = this.i;\n var array = this.array;\n if (!(this instanceof ArrayIterator)) {\n throw new TypeError('Not an ArrayIterator');\n }\n if (typeof array !== 'undefined') {\n var len = ES.ToLength(array.length);\n for (; i < len; i++) {\n var kind = this.kind;\n var retval;\n if (kind === 'key') {\n retval = i;\n } else if (kind === 'value') {\n retval = array[i];\n } else if (kind === 'entry') {\n retval = [i, array[i]];\n }\n this.i = i + 1;\n return iteratorResult(retval);\n }\n }\n this.array = void 0;\n return iteratorResult();\n }\n });\n addIterator(ArrayIterator.prototype);\n\n /*\n var orderKeys = function orderKeys(a, b) {\n var aNumeric = String(ES.ToInteger(a)) === a;\n var bNumeric = String(ES.ToInteger(b)) === b;\n if (aNumeric && bNumeric) {\n return b - a;\n } else if (aNumeric && !bNumeric) {\n return -1;\n } else if (!aNumeric && bNumeric) {\n return 1;\n } else {\n return a.localeCompare(b);\n }\n };\n\n var getAllKeys = function getAllKeys(object) {\n var ownKeys = [];\n var keys = [];\n\n for (var key in object) {\n _push(_hasOwnProperty(object, key) ? ownKeys : keys, key);\n }\n _sort(ownKeys, orderKeys);\n _sort(keys, orderKeys);\n\n return _concat(ownKeys, keys);\n };\n */\n\n // note: this is positioned here because it depends on ArrayIterator\n var arrayOfSupportsSubclassing = Array.of === ArrayShims.of || (function () {\n // Detects a bug in Webkit nightly r181886\n var Foo = function Foo(len) { this.length = len; };\n Foo.prototype = [];\n var fooArr = Array.of.apply(Foo, [1, 2]);\n return fooArr instanceof Foo && fooArr.length === 2;\n }());\n if (!arrayOfSupportsSubclassing) {\n overrideNative(Array, 'of', ArrayShims.of);\n }\n\n var ArrayPrototypeShims = {\n copyWithin: function copyWithin(target, start) {\n var o = ES.ToObject(this);\n var len = ES.ToLength(o.length);\n var relativeTarget = ES.ToInteger(target);\n var relativeStart = ES.ToInteger(start);\n var to = relativeTarget < 0 ? _max(len + relativeTarget, 0) : _min(relativeTarget, len);\n var from = relativeStart < 0 ? _max(len + relativeStart, 0) : _min(relativeStart, len);\n var end;\n if (arguments.length > 2) {\n end = arguments[2];\n }\n var relativeEnd = typeof end === 'undefined' ? len : ES.ToInteger(end);\n var finalItem = relativeEnd < 0 ? _max(len + relativeEnd, 0) : _min(relativeEnd, len);\n var count = _min(finalItem - from, len - to);\n var direction = 1;\n if (from < to && to < (from + count)) {\n direction = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count > 0) {\n if (from in o) {\n o[to] = o[from];\n } else {\n delete o[to];\n }\n from += direction;\n to += direction;\n count -= 1;\n }\n return o;\n },\n\n fill: function fill(value) {\n var start;\n if (arguments.length > 1) {\n start = arguments[1];\n }\n var end;\n if (arguments.length > 2) {\n end = arguments[2];\n }\n var O = ES.ToObject(this);\n var len = ES.ToLength(O.length);\n start = ES.ToInteger(typeof start === 'undefined' ? 0 : start);\n end = ES.ToInteger(typeof end === 'undefined' ? len : end);\n\n var relativeStart = start < 0 ? _max(len + start, 0) : _min(start, len);\n var relativeEnd = end < 0 ? len + end : end;\n\n for (var i = relativeStart; i < len && i < relativeEnd; ++i) {\n O[i] = value;\n }\n return O;\n },\n\n find: function find(predicate) {\n var list = ES.ToObject(this);\n var length = ES.ToLength(list.length);\n if (!ES.IsCallable(predicate)) {\n throw new TypeError('Array#find: predicate must be a function');\n }\n var thisArg = arguments.length > 1 ? arguments[1] : null;\n for (var i = 0, value; i < length; i++) {\n value = list[i];\n if (thisArg) {\n if (_call(predicate, thisArg, value, i, list)) {\n return value;\n }\n } else if (predicate(value, i, list)) {\n return value;\n }\n }\n },\n\n findIndex: function findIndex(predicate) {\n var list = ES.ToObject(this);\n var length = ES.ToLength(list.length);\n if (!ES.IsCallable(predicate)) {\n throw new TypeError('Array#findIndex: predicate must be a function');\n }\n var thisArg = arguments.length > 1 ? arguments[1] : null;\n for (var i = 0; i < length; i++) {\n if (thisArg) {\n if (_call(predicate, thisArg, list[i], i, list)) {\n return i;\n }\n } else if (predicate(list[i], i, list)) {\n return i;\n }\n }\n return -1;\n },\n\n keys: function keys() {\n return new ArrayIterator(this, 'key');\n },\n\n values: function values() {\n return new ArrayIterator(this, 'value');\n },\n\n entries: function entries() {\n return new ArrayIterator(this, 'entry');\n }\n };\n // Safari 7.1 defines Array#keys and Array#entries natively,\n // but the resulting ArrayIterator objects don't have a \"next\" method.\n if (Array.prototype.keys && !ES.IsCallable([1].keys().next)) {\n delete Array.prototype.keys;\n }\n if (Array.prototype.entries && !ES.IsCallable([1].entries().next)) {\n delete Array.prototype.entries;\n }\n\n // Chrome 38 defines Array#keys and Array#entries, and Array#@@iterator, but not Array#values\n if (Array.prototype.keys && Array.prototype.entries && !Array.prototype.values && Array.prototype[$iterator$]) {\n defineProperties(Array.prototype, {\n values: Array.prototype[$iterator$]\n });\n if (Type.symbol(Symbol.unscopables)) {\n Array.prototype[Symbol.unscopables].values = true;\n }\n }\n // Chrome 40 defines Array#values with the incorrect name, although Array#{keys,entries} have the correct name\n if (functionsHaveNames && Array.prototype.values && Array.prototype.values.name !== 'values') {\n var originalArrayPrototypeValues = Array.prototype.values;\n overrideNative(Array.prototype, 'values', function values() { return ES.Call(originalArrayPrototypeValues, this, arguments); });\n defineProperty(Array.prototype, $iterator$, Array.prototype.values, true);\n }\n defineProperties(Array.prototype, ArrayPrototypeShims);\n\n if (1 / [true].indexOf(true, -0) < 0) {\n // indexOf when given a position arg of -0 should return +0.\n // https://github.com/tc39/ecma262/pull/316\n defineProperty(Array.prototype, 'indexOf', function indexOf(searchElement) {\n var value = _arrayIndexOfApply(this, arguments);\n if (value === 0 && (1 / value) < 0) {\n return 0;\n }\n return value;\n }, true);\n }\n\n addIterator(Array.prototype, function () { return this.values(); });\n // Chrome defines keys/values/entries on Array, but doesn't give us\n // any way to identify its iterator. So add our own shimmed field.\n if (Object.getPrototypeOf) {\n addIterator(Object.getPrototypeOf([].values()));\n }\n\n // note: this is positioned here because it relies on Array#entries\n var arrayFromSwallowsNegativeLengths = (function () {\n // Detects a Firefox bug in v32\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1063993\n return valueOrFalseIfThrows(function () {\n return Array.from({ length: -1 }).length === 0;\n });\n }());\n var arrayFromHandlesIterables = (function () {\n // Detects a bug in Webkit nightly r181886\n var arr = Array.from([0].entries());\n return arr.length === 1 && isArray(arr[0]) && arr[0][0] === 0 && arr[0][1] === 0;\n }());\n if (!arrayFromSwallowsNegativeLengths || !arrayFromHandlesIterables) {\n overrideNative(Array, 'from', ArrayShims.from);\n }\n var arrayFromHandlesUndefinedMapFunction = (function () {\n // Microsoft Edge v0.11 throws if the mapFn argument is *provided* but undefined,\n // but the spec doesn't care if it's provided or not - undefined doesn't throw.\n return valueOrFalseIfThrows(function () {\n return Array.from([0], void 0);\n });\n }());\n if (!arrayFromHandlesUndefinedMapFunction) {\n var origArrayFrom = Array.from;\n overrideNative(Array, 'from', function from(items) {\n if (arguments.length > 1 && typeof arguments[1] !== 'undefined') {\n return ES.Call(origArrayFrom, this, arguments);\n } else {\n return _call(origArrayFrom, this, items);\n }\n });\n }\n\n var int32sAsOne = -(Math.pow(2, 32) - 1);\n var toLengthsCorrectly = function (method, reversed) {\n var obj = { length: int32sAsOne };\n obj[reversed ? (obj.length >>> 0) - 1 : 0] = true;\n return valueOrFalseIfThrows(function () {\n _call(method, obj, function () {\n // note: in nonconforming browsers, this will be called\n // -1 >>> 0 times, which is 4294967295, so the throw matters.\n throw new RangeError('should not reach here');\n }, []);\n return true;\n });\n };\n if (!toLengthsCorrectly(Array.prototype.forEach)) {\n var originalForEach = Array.prototype.forEach;\n overrideNative(Array.prototype, 'forEach', function forEach(callbackFn) {\n return ES.Call(originalForEach, this.length >= 0 ? this : [], arguments);\n }, true);\n }\n if (!toLengthsCorrectly(Array.prototype.map)) {\n var originalMap = Array.prototype.map;\n overrideNative(Array.prototype, 'map', function map(callbackFn) {\n return ES.Call(originalMap, this.length >= 0 ? this : [], arguments);\n }, true);\n }\n if (!toLengthsCorrectly(Array.prototype.filter)) {\n var originalFilter = Array.prototype.filter;\n overrideNative(Array.prototype, 'filter', function filter(callbackFn) {\n return ES.Call(originalFilter, this.length >= 0 ? this : [], arguments);\n }, true);\n }\n if (!toLengthsCorrectly(Array.prototype.some)) {\n var originalSome = Array.prototype.some;\n overrideNative(Array.prototype, 'some', function some(callbackFn) {\n return ES.Call(originalSome, this.length >= 0 ? this : [], arguments);\n }, true);\n }\n if (!toLengthsCorrectly(Array.prototype.every)) {\n var originalEvery = Array.prototype.every;\n overrideNative(Array.prototype, 'every', function every(callbackFn) {\n return ES.Call(originalEvery, this.length >= 0 ? this : [], arguments);\n }, true);\n }\n if (!toLengthsCorrectly(Array.prototype.reduce)) {\n var originalReduce = Array.prototype.reduce;\n overrideNative(Array.prototype, 'reduce', function reduce(callbackFn) {\n return ES.Call(originalReduce, this.length >= 0 ? this : [], arguments);\n }, true);\n }\n if (!toLengthsCorrectly(Array.prototype.reduceRight, true)) {\n var originalReduceRight = Array.prototype.reduceRight;\n overrideNative(Array.prototype, 'reduceRight', function reduceRight(callbackFn) {\n return ES.Call(originalReduceRight, this.length >= 0 ? this : [], arguments);\n }, true);\n }\n\n var lacksOctalSupport = Number('0o10') !== 8;\n var lacksBinarySupport = Number('0b10') !== 2;\n var trimsNonWhitespace = _some(nonWS, function (c) {\n return Number(c + 0 + c) === 0;\n });\n if (lacksOctalSupport || lacksBinarySupport || trimsNonWhitespace) {\n var OrigNumber = Number;\n var binaryRegex = /^0b[01]+$/i;\n var octalRegex = /^0o[0-7]+$/i;\n // Note that in IE 8, RegExp.prototype.test doesn't seem to exist: ie, \"test\" is an own property of regexes. wtf.\n var isBinary = binaryRegex.test.bind(binaryRegex);\n var isOctal = octalRegex.test.bind(octalRegex);\n var toPrimitive = function (O) { // need to replace this with `es-to-primitive/es6`\n var result;\n if (typeof O.valueOf === 'function') {\n result = O.valueOf();\n if (Type.primitive(result)) {\n return result;\n }\n }\n if (typeof O.toString === 'function') {\n result = O.toString();\n if (Type.primitive(result)) {\n return result;\n }\n }\n throw new TypeError('No default value');\n };\n var hasNonWS = nonWSregex.test.bind(nonWSregex);\n var isBadHex = isBadHexRegex.test.bind(isBadHexRegex);\n var NumberShim = (function () {\n // this is wrapped in an IIFE because of IE 6-8's wacky scoping issues with named function expressions.\n var NumberShim = function Number(value) {\n var primValue;\n if (arguments.length > 0) {\n primValue = Type.primitive(value) ? value : toPrimitive(value, 'number');\n } else {\n primValue = 0;\n }\n if (typeof primValue === 'string') {\n primValue = ES.Call(trimShim, primValue);\n if (isBinary(primValue)) {\n primValue = parseInt(_strSlice(primValue, 2), 2);\n } else if (isOctal(primValue)) {\n primValue = parseInt(_strSlice(primValue, 2), 8);\n } else if (hasNonWS(primValue) || isBadHex(primValue)) {\n primValue = NaN;\n }\n }\n var receiver = this;\n var valueOfSucceeds = valueOrFalseIfThrows(function () {\n OrigNumber.prototype.valueOf.call(receiver);\n return true;\n });\n if (receiver instanceof NumberShim && !valueOfSucceeds) {\n return new OrigNumber(primValue);\n }\n /* jshint newcap: false */\n return OrigNumber(primValue);\n /* jshint newcap: true */\n };\n return NumberShim;\n }());\n wrapConstructor(OrigNumber, NumberShim, {});\n // this is necessary for ES3 browsers, where these properties are non-enumerable.\n defineProperties(NumberShim, {\n NaN: OrigNumber.NaN,\n MAX_VALUE: OrigNumber.MAX_VALUE,\n MIN_VALUE: OrigNumber.MIN_VALUE,\n NEGATIVE_INFINITY: OrigNumber.NEGATIVE_INFINITY,\n POSITIVE_INFINITY: OrigNumber.POSITIVE_INFINITY\n });\n /* globals Number: true */\n /* eslint-disable no-undef, no-global-assign */\n /* jshint -W020 */\n Number = NumberShim;\n Value.redefine(globals, 'Number', NumberShim);\n /* jshint +W020 */\n /* eslint-enable no-undef, no-global-assign */\n /* globals Number: false */\n }\n\n var maxSafeInteger = Math.pow(2, 53) - 1;\n defineProperties(Number, {\n MAX_SAFE_INTEGER: maxSafeInteger,\n MIN_SAFE_INTEGER: -maxSafeInteger,\n EPSILON: 2.220446049250313e-16,\n\n parseInt: globals.parseInt,\n parseFloat: globals.parseFloat,\n\n isFinite: numberIsFinite,\n\n isInteger: function isInteger(value) {\n return numberIsFinite(value) && ES.ToInteger(value) === value;\n },\n\n isSafeInteger: function isSafeInteger(value) {\n return Number.isInteger(value) && _abs(value) <= Number.MAX_SAFE_INTEGER;\n },\n\n isNaN: numberIsNaN\n });\n // Firefox 37 has a conforming Number.parseInt, but it's not === to the global parseInt (fixed in v40)\n defineProperty(Number, 'parseInt', globals.parseInt, Number.parseInt !== globals.parseInt);\n\n // Work around bugs in Array#find and Array#findIndex -- early\n // implementations skipped holes in sparse arrays. (Note that the\n // implementations of find/findIndex indirectly use shimmed\n // methods of Number, so this test has to happen down here.)\n /*jshint elision: true */\n /* eslint-disable no-sparse-arrays */\n if ([, 1].find(function () { return true; }) === 1) {\n overrideNative(Array.prototype, 'find', ArrayPrototypeShims.find);\n }\n if ([, 1].findIndex(function () { return true; }) !== 0) {\n overrideNative(Array.prototype, 'findIndex', ArrayPrototypeShims.findIndex);\n }\n /* eslint-enable no-sparse-arrays */\n /*jshint elision: false */\n\n var isEnumerableOn = Function.bind.call(Function.bind, Object.prototype.propertyIsEnumerable);\n var ensureEnumerable = function ensureEnumerable(obj, prop) {\n if (supportsDescriptors && isEnumerableOn(obj, prop)) {\n Object.defineProperty(obj, prop, { enumerable: false });\n }\n };\n var sliceArgs = function sliceArgs() {\n // per https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n // and https://gist.github.com/WebReflection/4327762cb87a8c634a29\n var initial = Number(this);\n var len = arguments.length;\n var desiredArgCount = len - initial;\n var args = new Array(desiredArgCount < 0 ? 0 : desiredArgCount);\n for (var i = initial; i < len; ++i) {\n args[i - initial] = arguments[i];\n }\n return args;\n };\n var assignTo = function assignTo(source) {\n return function assignToSource(target, key) {\n target[key] = source[key];\n return target;\n };\n };\n var assignReducer = function (target, source) {\n var sourceKeys = keys(Object(source));\n var symbols;\n if (ES.IsCallable(Object.getOwnPropertySymbols)) {\n symbols = _filter(Object.getOwnPropertySymbols(Object(source)), isEnumerableOn(source));\n }\n return _reduce(_concat(sourceKeys, symbols || []), assignTo(source), target);\n };\n\n var ObjectShims = {\n // 19.1.3.1\n assign: function (target, source) {\n var to = ES.ToObject(target, 'Cannot convert undefined or null to object');\n return _reduce(ES.Call(sliceArgs, 1, arguments), assignReducer, to);\n },\n\n // Added in WebKit in https://bugs.webkit.org/show_bug.cgi?id=143865\n is: function is(a, b) {\n return ES.SameValue(a, b);\n }\n };\n var assignHasPendingExceptions = Object.assign && Object.preventExtensions && (function () {\n // Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n // which is 72% slower than our shim, and Firefox 40's native implementation.\n var thrower = Object.preventExtensions({ 1: 2 });\n try {\n Object.assign(thrower, 'xy');\n } catch (e) {\n return thrower[1] === 'y';\n }\n }());\n if (assignHasPendingExceptions) {\n overrideNative(Object, 'assign', ObjectShims.assign);\n }\n defineProperties(Object, ObjectShims);\n\n if (supportsDescriptors) {\n var ES5ObjectShims = {\n // 19.1.3.9\n // shim from https://gist.github.com/WebReflection/5593554\n setPrototypeOf: (function (Object, magic) {\n var set;\n\n var checkArgs = function (O, proto) {\n if (!ES.TypeIsObject(O)) {\n throw new TypeError('cannot set prototype on a non-object');\n }\n if (!(proto === null || ES.TypeIsObject(proto))) {\n throw new TypeError('can only set prototype to an object or null' + proto);\n }\n };\n\n var setPrototypeOf = function (O, proto) {\n checkArgs(O, proto);\n _call(set, O, proto);\n return O;\n };\n\n try {\n // this works already in Firefox and Safari\n set = Object.getOwnPropertyDescriptor(Object.prototype, magic).set;\n _call(set, {}, null);\n } catch (e) {\n if (Object.prototype !== {}[magic]) {\n // IE < 11 cannot be shimmed\n return;\n }\n // probably Chrome or some old Mobile stock browser\n set = function (proto) {\n this[magic] = proto;\n };\n // please note that this will **not** work\n // in those browsers that do not inherit\n // __proto__ by mistake from Object.prototype\n // in these cases we should probably throw an error\n // or at least be informed about the issue\n setPrototypeOf.polyfill = setPrototypeOf(\n setPrototypeOf({}, null),\n Object.prototype\n ) instanceof Object;\n // setPrototypeOf.polyfill === true means it works as meant\n // setPrototypeOf.polyfill === false means it's not 100% reliable\n // setPrototypeOf.polyfill === undefined\n // or\n // setPrototypeOf.polyfill == null means it's not a polyfill\n // which means it works as expected\n // we can even delete Object.prototype.__proto__;\n }\n return setPrototypeOf;\n }(Object, '__proto__'))\n };\n\n defineProperties(Object, ES5ObjectShims);\n }\n\n // Workaround bug in Opera 12 where setPrototypeOf(x, null) doesn't work,\n // but Object.create(null) does.\n if (Object.setPrototypeOf && Object.getPrototypeOf &&\n Object.getPrototypeOf(Object.setPrototypeOf({}, null)) !== null &&\n Object.getPrototypeOf(Object.create(null)) === null) {\n (function () {\n var FAKENULL = Object.create(null);\n var gpo = Object.getPrototypeOf;\n var spo = Object.setPrototypeOf;\n Object.getPrototypeOf = function (o) {\n var result = gpo(o);\n return result === FAKENULL ? null : result;\n };\n Object.setPrototypeOf = function (o, p) {\n var proto = p === null ? FAKENULL : p;\n return spo(o, proto);\n };\n Object.setPrototypeOf.polyfill = false;\n }());\n }\n\n var objectKeysAcceptsPrimitives = !throwsError(function () { return Object.keys('foo'); });\n if (!objectKeysAcceptsPrimitives) {\n var originalObjectKeys = Object.keys;\n overrideNative(Object, 'keys', function keys(value) {\n return originalObjectKeys(ES.ToObject(value));\n });\n keys = Object.keys;\n }\n var objectKeysRejectsRegex = throwsError(function () { return Object.keys(/a/g); });\n if (objectKeysRejectsRegex) {\n var regexRejectingObjectKeys = Object.keys;\n overrideNative(Object, 'keys', function keys(value) {\n if (Type.regex(value)) {\n var regexKeys = [];\n for (var k in value) {\n if (_hasOwnProperty(value, k)) {\n _push(regexKeys, k);\n }\n }\n return regexKeys;\n }\n return regexRejectingObjectKeys(value);\n });\n keys = Object.keys;\n }\n\n if (Object.getOwnPropertyNames) {\n var objectGOPNAcceptsPrimitives = !throwsError(function () { return Object.getOwnPropertyNames('foo'); });\n if (!objectGOPNAcceptsPrimitives) {\n var cachedWindowNames = typeof window === 'object' ? Object.getOwnPropertyNames(window) : [];\n var originalObjectGetOwnPropertyNames = Object.getOwnPropertyNames;\n overrideNative(Object, 'getOwnPropertyNames', function getOwnPropertyNames(value) {\n var val = ES.ToObject(value);\n if (_toString(val) === '[object Window]') {\n try {\n return originalObjectGetOwnPropertyNames(val);\n } catch (e) {\n // IE bug where layout engine calls userland gOPN for cross-domain `window` objects\n return _concat([], cachedWindowNames);\n }\n }\n return originalObjectGetOwnPropertyNames(val);\n });\n }\n }\n if (Object.getOwnPropertyDescriptor) {\n var objectGOPDAcceptsPrimitives = !throwsError(function () { return Object.getOwnPropertyDescriptor('foo', 'bar'); });\n if (!objectGOPDAcceptsPrimitives) {\n var originalObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n overrideNative(Object, 'getOwnPropertyDescriptor', function getOwnPropertyDescriptor(value, property) {\n return originalObjectGetOwnPropertyDescriptor(ES.ToObject(value), property);\n });\n }\n }\n if (Object.seal) {\n var objectSealAcceptsPrimitives = !throwsError(function () { return Object.seal('foo'); });\n if (!objectSealAcceptsPrimitives) {\n var originalObjectSeal = Object.seal;\n overrideNative(Object, 'seal', function seal(value) {\n if (!ES.TypeIsObject(value)) { return value; }\n return originalObjectSeal(value);\n });\n }\n }\n if (Object.isSealed) {\n var objectIsSealedAcceptsPrimitives = !throwsError(function () { return Object.isSealed('foo'); });\n if (!objectIsSealedAcceptsPrimitives) {\n var originalObjectIsSealed = Object.isSealed;\n overrideNative(Object, 'isSealed', function isSealed(value) {\n if (!ES.TypeIsObject(value)) { return true; }\n return originalObjectIsSealed(value);\n });\n }\n }\n if (Object.freeze) {\n var objectFreezeAcceptsPrimitives = !throwsError(function () { return Object.freeze('foo'); });\n if (!objectFreezeAcceptsPrimitives) {\n var originalObjectFreeze = Object.freeze;\n overrideNative(Object, 'freeze', function freeze(value) {\n if (!ES.TypeIsObject(value)) { return value; }\n return originalObjectFreeze(value);\n });\n }\n }\n if (Object.isFrozen) {\n var objectIsFrozenAcceptsPrimitives = !throwsError(function () { return Object.isFrozen('foo'); });\n if (!objectIsFrozenAcceptsPrimitives) {\n var originalObjectIsFrozen = Object.isFrozen;\n overrideNative(Object, 'isFrozen', function isFrozen(value) {\n if (!ES.TypeIsObject(value)) { return true; }\n return originalObjectIsFrozen(value);\n });\n }\n }\n if (Object.preventExtensions) {\n var objectPreventExtensionsAcceptsPrimitives = !throwsError(function () { return Object.preventExtensions('foo'); });\n if (!objectPreventExtensionsAcceptsPrimitives) {\n var originalObjectPreventExtensions = Object.preventExtensions;\n overrideNative(Object, 'preventExtensions', function preventExtensions(value) {\n if (!ES.TypeIsObject(value)) { return value; }\n return originalObjectPreventExtensions(value);\n });\n }\n }\n if (Object.isExtensible) {\n var objectIsExtensibleAcceptsPrimitives = !throwsError(function () { return Object.isExtensible('foo'); });\n if (!objectIsExtensibleAcceptsPrimitives) {\n var originalObjectIsExtensible = Object.isExtensible;\n overrideNative(Object, 'isExtensible', function isExtensible(value) {\n if (!ES.TypeIsObject(value)) { return false; }\n return originalObjectIsExtensible(value);\n });\n }\n }\n if (Object.getPrototypeOf) {\n var objectGetProtoAcceptsPrimitives = !throwsError(function () { return Object.getPrototypeOf('foo'); });\n if (!objectGetProtoAcceptsPrimitives) {\n var originalGetProto = Object.getPrototypeOf;\n overrideNative(Object, 'getPrototypeOf', function getPrototypeOf(value) {\n return originalGetProto(ES.ToObject(value));\n });\n }\n }\n\n var hasFlags = supportsDescriptors && (function () {\n var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags');\n return desc && ES.IsCallable(desc.get);\n }());\n if (supportsDescriptors && !hasFlags) {\n var regExpFlagsGetter = function flags() {\n if (!ES.TypeIsObject(this)) {\n throw new TypeError('Method called on incompatible type: must be an object.');\n }\n var result = '';\n if (this.global) {\n result += 'g';\n }\n if (this.ignoreCase) {\n result += 'i';\n }\n if (this.multiline) {\n result += 'm';\n }\n if (this.unicode) {\n result += 'u';\n }\n if (this.sticky) {\n result += 'y';\n }\n return result;\n };\n\n Value.getter(RegExp.prototype, 'flags', regExpFlagsGetter);\n }\n\n var regExpSupportsFlagsWithRegex = supportsDescriptors && valueOrFalseIfThrows(function () {\n return String(new RegExp(/a/g, 'i')) === '/a/i';\n });\n var regExpNeedsToSupportSymbolMatch = hasSymbols && supportsDescriptors && (function () {\n // Edge 0.12 supports flags fully, but does not support Symbol.match\n var regex = /./;\n regex[Symbol.match] = false;\n return RegExp(regex) === regex;\n }());\n\n var regexToStringIsGeneric = valueOrFalseIfThrows(function () {\n return RegExp.prototype.toString.call({ source: 'abc' }) === '/abc/';\n });\n var regexToStringSupportsGenericFlags = regexToStringIsGeneric && valueOrFalseIfThrows(function () {\n return RegExp.prototype.toString.call({ source: 'a', flags: 'b' }) === '/a/b';\n });\n if (!regexToStringIsGeneric || !regexToStringSupportsGenericFlags) {\n var origRegExpToString = RegExp.prototype.toString;\n defineProperty(RegExp.prototype, 'toString', function toString() {\n var R = ES.RequireObjectCoercible(this);\n if (Type.regex(R)) {\n return _call(origRegExpToString, R);\n }\n var pattern = $String(R.source);\n var flags = $String(R.flags);\n return '/' + pattern + '/' + flags;\n }, true);\n Value.preserveToString(RegExp.prototype.toString, origRegExpToString);\n }\n\n if (supportsDescriptors && (!regExpSupportsFlagsWithRegex || regExpNeedsToSupportSymbolMatch)) {\n var flagsGetter = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get;\n var sourceDesc = Object.getOwnPropertyDescriptor(RegExp.prototype, 'source') || {};\n var legacySourceGetter = function () {\n // prior to it being a getter, it's own + nonconfigurable\n return this.source;\n };\n var sourceGetter = ES.IsCallable(sourceDesc.get) ? sourceDesc.get : legacySourceGetter;\n\n var OrigRegExp = RegExp;\n var RegExpShim = (function () {\n return function RegExp(pattern, flags) {\n var patternIsRegExp = ES.IsRegExp(pattern);\n var calledWithNew = this instanceof RegExp;\n if (!calledWithNew && patternIsRegExp && typeof flags === 'undefined' && pattern.constructor === RegExp) {\n return pattern;\n }\n\n var P = pattern;\n var F = flags;\n if (Type.regex(pattern)) {\n P = ES.Call(sourceGetter, pattern);\n F = typeof flags === 'undefined' ? ES.Call(flagsGetter, pattern) : flags;\n return new RegExp(P, F);\n } else if (patternIsRegExp) {\n P = pattern.source;\n F = typeof flags === 'undefined' ? pattern.flags : flags;\n }\n return new OrigRegExp(pattern, flags);\n };\n }());\n wrapConstructor(OrigRegExp, RegExpShim, {\n $input: true // Chrome < v39 & Opera < 26 have a nonstandard \"$input\" property\n });\n /* globals RegExp: true */\n /* eslint-disable no-undef, no-global-assign */\n /* jshint -W020 */\n RegExp = RegExpShim;\n Value.redefine(globals, 'RegExp', RegExpShim);\n /* jshint +W020 */\n /* eslint-enable no-undef, no-global-assign */\n /* globals RegExp: false */\n }\n\n if (supportsDescriptors) {\n var regexGlobals = {\n input: '$_',\n lastMatch: '$&',\n lastParen: '$+',\n leftContext: '$`',\n rightContext: '$\\''\n };\n _forEach(keys(regexGlobals), function (prop) {\n if (prop in RegExp && !(regexGlobals[prop] in RegExp)) {\n Value.getter(RegExp, regexGlobals[prop], function get() {\n return RegExp[prop];\n });\n }\n });\n }\n addDefaultSpecies(RegExp);\n\n var inverseEpsilon = 1 / Number.EPSILON;\n var roundTiesToEven = function roundTiesToEven(n) {\n // Even though this reduces down to `return n`, it takes advantage of built-in rounding.\n return (n + inverseEpsilon) - inverseEpsilon;\n };\n var BINARY_32_EPSILON = Math.pow(2, -23);\n var BINARY_32_MAX_VALUE = Math.pow(2, 127) * (2 - BINARY_32_EPSILON);\n var BINARY_32_MIN_VALUE = Math.pow(2, -126);\n var E = Math.E;\n var LOG2E = Math.LOG2E;\n var LOG10E = Math.LOG10E;\n var numberCLZ = Number.prototype.clz;\n delete Number.prototype.clz; // Safari 8 has Number#clz\n\n var MathShims = {\n acosh: function acosh(value) {\n var x = Number(value);\n if (numberIsNaN(x) || value < 1) { return NaN; }\n if (x === 1) { return 0; }\n if (x === Infinity) { return x; }\n\n var xInvSquared = 1 / (x * x);\n if (x < 2) {\n return _log1p(x - 1 + (_sqrt(1 - xInvSquared) * x));\n }\n var halfX = x / 2;\n return _log1p(halfX + (_sqrt(1 - xInvSquared) * halfX) - 1) + (1 / LOG2E);\n },\n\n asinh: function asinh(value) {\n var x = Number(value);\n if (x === 0 || !globalIsFinite(x)) {\n return x;\n }\n\n var a = _abs(x);\n var aSquared = a * a;\n var s = _sign(x);\n if (a < 1) {\n return s * _log1p(a + (aSquared / (_sqrt(aSquared + 1) + 1)));\n }\n return s * (_log1p((a / 2) + (_sqrt(1 + (1 / aSquared)) * a / 2) - 1) + (1 / LOG2E));\n },\n\n atanh: function atanh(value) {\n var x = Number(value);\n\n if (x === 0) { return x; }\n if (x === -1) { return -Infinity; }\n if (x === 1) { return Infinity; }\n if (numberIsNaN(x) || x < -1 || x > 1) {\n return NaN;\n }\n\n var a = _abs(x);\n return _sign(x) * _log1p(2 * a / (1 - a)) / 2;\n },\n\n cbrt: function cbrt(value) {\n var x = Number(value);\n if (x === 0) { return x; }\n var negate = x < 0;\n var result;\n if (negate) { x = -x; }\n if (x === Infinity) {\n result = Infinity;\n } else {\n result = _exp(_log(x) / 3);\n // from http://en.wikipedia.org/wiki/Cube_root#Numerical_methods\n result = ((x / (result * result)) + (2 * result)) / 3;\n }\n return negate ? -result : result;\n },\n\n clz32: function clz32(value) {\n // See https://bugs.ecmascript.org/show_bug.cgi?id=2465\n var x = Number(value);\n var number = ES.ToUint32(x);\n if (number === 0) {\n return 32;\n }\n return numberCLZ ? ES.Call(numberCLZ, number) : 31 - _floor(_log(number + 0.5) * LOG2E);\n },\n\n cosh: function cosh(value) {\n var x = Number(value);\n if (x === 0) { return 1; } // +0 or -0\n if (numberIsNaN(x)) { return NaN; }\n if (!globalIsFinite(x)) { return Infinity; }\n\n var t = _exp(_abs(x) - 1);\n return (t + (1 / (t * E * E))) * (E / 2);\n },\n\n expm1: function expm1(value) {\n var x = Number(value);\n if (x === -Infinity) { return -1; }\n if (!globalIsFinite(x) || x === 0) { return x; }\n if (_abs(x) > 0.5) {\n return _exp(x) - 1;\n }\n // A more precise approximation using Taylor series expansion\n // from https://github.com/paulmillr/es6-shim/issues/314#issuecomment-70293986\n var t = x;\n var sum = 0;\n var n = 1;\n while (sum + t !== sum) {\n sum += t;\n n += 1;\n t *= x / n;\n }\n return sum;\n },\n\n hypot: function hypot(x, y) {\n var result = 0;\n var largest = 0;\n for (var i = 0; i < arguments.length; ++i) {\n var value = _abs(Number(arguments[i]));\n if (largest < value) {\n result *= (largest / value) * (largest / value);\n result += 1;\n largest = value;\n } else {\n result += value > 0 ? (value / largest) * (value / largest) : value;\n }\n }\n return largest === Infinity ? Infinity : largest * _sqrt(result);\n },\n\n log2: function log2(value) {\n return _log(value) * LOG2E;\n },\n\n log10: function log10(value) {\n return _log(value) * LOG10E;\n },\n\n log1p: _log1p,\n\n sign: _sign,\n\n sinh: function sinh(value) {\n var x = Number(value);\n if (!globalIsFinite(x) || x === 0) { return x; }\n\n var a = _abs(x);\n if (a < 1) {\n var u = Math.expm1(a);\n return _sign(x) * u * (1 + (1 / (u + 1))) / 2;\n }\n var t = _exp(a - 1);\n return _sign(x) * (t - (1 / (t * E * E))) * (E / 2);\n },\n\n tanh: function tanh(value) {\n var x = Number(value);\n if (numberIsNaN(x) || x === 0) { return x; }\n // can exit early at +-20 as JS loses precision for true value at this integer\n if (x >= 20) { return 1; }\n if (x <= -20) { return -1; }\n\n return (Math.expm1(x) - Math.expm1(-x)) / (_exp(x) + _exp(-x));\n },\n\n trunc: function trunc(value) {\n var x = Number(value);\n return x < 0 ? -_floor(-x) : _floor(x);\n },\n\n imul: function imul(x, y) {\n // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul\n var a = ES.ToUint32(x);\n var b = ES.ToUint32(y);\n var ah = (a >>> 16) & 0xffff;\n var al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff;\n var bl = b & 0xffff;\n // the shift by 0 fixes the sign on the high part\n // the final |0 converts the unsigned value into a signed value\n return (al * bl) + ((((ah * bl) + (al * bh)) << 16) >>> 0) | 0;\n },\n\n fround: function fround(x) {\n var v = Number(x);\n if (v === 0 || v === Infinity || v === -Infinity || numberIsNaN(v)) {\n return v;\n }\n var sign = _sign(v);\n var abs = _abs(v);\n if (abs < BINARY_32_MIN_VALUE) {\n return sign * roundTiesToEven(abs / BINARY_32_MIN_VALUE / BINARY_32_EPSILON) * BINARY_32_MIN_VALUE * BINARY_32_EPSILON;\n }\n // Veltkamp's splitting (?)\n var a = (1 + (BINARY_32_EPSILON / Number.EPSILON)) * abs;\n var result = a - (a - abs);\n if (result > BINARY_32_MAX_VALUE || numberIsNaN(result)) {\n return sign * Infinity;\n }\n return sign * result;\n }\n };\n\n var withinULPDistance = function withinULPDistance(result, expected, distance) {\n return _abs(1 - (result / expected)) / Number.EPSILON < (distance || 8);\n };\n\n defineProperties(Math, MathShims);\n // Chrome < 40 sinh returns ∞ for large numbers\n defineProperty(Math, 'sinh', MathShims.sinh, Math.sinh(710) === Infinity);\n // Chrome < 40 cosh returns ∞ for large numbers\n defineProperty(Math, 'cosh', MathShims.cosh, Math.cosh(710) === Infinity);\n // IE 11 TP has an imprecise log1p: reports Math.log1p(-1e-17) as 0\n defineProperty(Math, 'log1p', MathShims.log1p, Math.log1p(-1e-17) !== -1e-17);\n // IE 11 TP has an imprecise asinh: reports Math.asinh(-1e7) as not exactly equal to -Math.asinh(1e7)\n defineProperty(Math, 'asinh', MathShims.asinh, Math.asinh(-1e7) !== -Math.asinh(1e7));\n // Chrome < 54 asinh returns ∞ for large numbers and should not\n defineProperty(Math, 'asinh', MathShims.asinh, Math.asinh(1e+300) === Infinity);\n // Chrome < 54 atanh incorrectly returns 0 for large numbers\n defineProperty(Math, 'atanh', MathShims.atanh, Math.atanh(1e-300) === 0);\n // Chrome 40 has an imprecise Math.tanh with very small numbers\n defineProperty(Math, 'tanh', MathShims.tanh, Math.tanh(-2e-17) !== -2e-17);\n // Chrome 40 loses Math.acosh precision with high numbers\n defineProperty(Math, 'acosh', MathShims.acosh, Math.acosh(Number.MAX_VALUE) === Infinity);\n // Chrome < 54 has an inaccurate acosh for EPSILON deltas\n defineProperty(Math, 'acosh', MathShims.acosh, !withinULPDistance(Math.acosh(1 + Number.EPSILON), Math.sqrt(2 * Number.EPSILON)));\n // Firefox 38 on Windows\n defineProperty(Math, 'cbrt', MathShims.cbrt, !withinULPDistance(Math.cbrt(1e-300), 1e-100));\n // node 0.11 has an imprecise Math.sinh with very small numbers\n defineProperty(Math, 'sinh', MathShims.sinh, Math.sinh(-2e-17) !== -2e-17);\n // FF 35 on Linux reports 22025.465794806725 for Math.expm1(10)\n var expm1OfTen = Math.expm1(10);\n defineProperty(Math, 'expm1', MathShims.expm1, expm1OfTen > 22025.465794806719 || expm1OfTen < 22025.4657948067165168);\n\n var origMathRound = Math.round;\n // breaks in e.g. Safari 8, Internet Explorer 11, Opera 12\n var roundHandlesBoundaryConditions = Math.round(0.5 - (Number.EPSILON / 4)) === 0 &&\n Math.round(-0.5 + (Number.EPSILON / 3.99)) === 1;\n\n // When engines use Math.floor(x + 0.5) internally, Math.round can be buggy for large integers.\n // This behavior should be governed by \"round to nearest, ties to even mode\"\n // see http://www.ecma-international.org/ecma-262/6.0/#sec-terms-and-definitions-number-type\n // These are the boundary cases where it breaks.\n var smallestPositiveNumberWhereRoundBreaks = inverseEpsilon + 1;\n var largestPositiveNumberWhereRoundBreaks = (2 * inverseEpsilon) - 1;\n var roundDoesNotIncreaseIntegers = [\n smallestPositiveNumberWhereRoundBreaks,\n largestPositiveNumberWhereRoundBreaks\n ].every(function (num) {\n return Math.round(num) === num;\n });\n defineProperty(Math, 'round', function round(x) {\n var floor = _floor(x);\n var ceil = floor === -1 ? -0 : floor + 1;\n return x - floor < 0.5 ? floor : ceil;\n }, !roundHandlesBoundaryConditions || !roundDoesNotIncreaseIntegers);\n Value.preserveToString(Math.round, origMathRound);\n\n var origImul = Math.imul;\n if (Math.imul(0xffffffff, 5) !== -5) {\n // Safari 6.1, at least, reports \"0\" for this value\n Math.imul = MathShims.imul;\n Value.preserveToString(Math.imul, origImul);\n }\n if (Math.imul.length !== 2) {\n // Safari 8.0.4 has a length of 1\n // fixed in https://bugs.webkit.org/show_bug.cgi?id=143658\n overrideNative(Math, 'imul', function imul(x, y) {\n return ES.Call(origImul, Math, arguments);\n });\n }\n\n // Promises\n // Simplest possible implementation; use a 3rd-party library if you\n // want the best possible speed and/or long stack traces.\n var PromiseShim = (function () {\n var setTimeout = globals.setTimeout;\n // some environments don't have setTimeout - no way to shim here.\n if (typeof setTimeout !== 'function' && typeof setTimeout !== 'object') { return; }\n\n ES.IsPromise = function (promise) {\n if (!ES.TypeIsObject(promise)) {\n return false;\n }\n if (typeof promise._promise === 'undefined') {\n return false; // uninitialized, or missing our hidden field.\n }\n return true;\n };\n\n // \"PromiseCapability\" in the spec is what most promise implementations\n // call a \"deferred\".\n var PromiseCapability = function (C) {\n if (!ES.IsConstructor(C)) {\n throw new TypeError('Bad promise constructor');\n }\n var capability = this;\n var resolver = function (resolve, reject) {\n if (capability.resolve !== void 0 || capability.reject !== void 0) {\n throw new TypeError('Bad Promise implementation!');\n }\n capability.resolve = resolve;\n capability.reject = reject;\n };\n // Initialize fields to inform optimizers about the object shape.\n capability.resolve = void 0;\n capability.reject = void 0;\n capability.promise = new C(resolver);\n if (!(ES.IsCallable(capability.resolve) && ES.IsCallable(capability.reject))) {\n throw new TypeError('Bad promise constructor');\n }\n };\n\n // find an appropriate setImmediate-alike\n var makeZeroTimeout;\n /*global window */\n if (typeof window !== 'undefined' && ES.IsCallable(window.postMessage)) {\n makeZeroTimeout = function () {\n // from http://dbaron.org/log/20100309-faster-timeouts\n var timeouts = [];\n var messageName = 'zero-timeout-message';\n var setZeroTimeout = function (fn) {\n _push(timeouts, fn);\n window.postMessage(messageName, '*');\n };\n var handleMessage = function (event) {\n if (event.source === window && event.data === messageName) {\n event.stopPropagation();\n if (timeouts.length === 0) { return; }\n var fn = _shift(timeouts);\n fn();\n }\n };\n window.addEventListener('message', handleMessage, true);\n return setZeroTimeout;\n };\n }\n var makePromiseAsap = function () {\n // An efficient task-scheduler based on a pre-existing Promise\n // implementation, which we can use even if we override the\n // global Promise below (in order to workaround bugs)\n // https://github.com/Raynos/observ-hash/issues/2#issuecomment-35857671\n var P = globals.Promise;\n var pr = P && P.resolve && P.resolve();\n return pr && function (task) {\n return pr.then(task);\n };\n };\n /*global process */\n /* jscs:disable disallowMultiLineTernary */\n var enqueue = ES.IsCallable(globals.setImmediate) ?\n globals.setImmediate :\n typeof process === 'object' && process.nextTick ? process.nextTick : makePromiseAsap() ||\n (ES.IsCallable(makeZeroTimeout) ? makeZeroTimeout() : function (task) { setTimeout(task, 0); }); // fallback\n /* jscs:enable disallowMultiLineTernary */\n\n // Constants for Promise implementation\n var PROMISE_IDENTITY = function (x) { return x; };\n var PROMISE_THROWER = function (e) { throw e; };\n var PROMISE_PENDING = 0;\n var PROMISE_FULFILLED = 1;\n var PROMISE_REJECTED = 2;\n // We store fulfill/reject handlers and capabilities in a single array.\n var PROMISE_FULFILL_OFFSET = 0;\n var PROMISE_REJECT_OFFSET = 1;\n var PROMISE_CAPABILITY_OFFSET = 2;\n // This is used in an optimization for chaining promises via then.\n var PROMISE_FAKE_CAPABILITY = {};\n\n var enqueuePromiseReactionJob = function (handler, capability, argument) {\n enqueue(function () {\n promiseReactionJob(handler, capability, argument);\n });\n };\n\n var promiseReactionJob = function (handler, promiseCapability, argument) {\n var handlerResult, f;\n if (promiseCapability === PROMISE_FAKE_CAPABILITY) {\n // Fast case, when we don't actually need to chain through to a\n // (real) promiseCapability.\n return handler(argument);\n }\n try {\n handlerResult = handler(argument);\n f = promiseCapability.resolve;\n } catch (e) {\n handlerResult = e;\n f = promiseCapability.reject;\n }\n f(handlerResult);\n };\n\n var fulfillPromise = function (promise, value) {\n var _promise = promise._promise;\n var length = _promise.reactionLength;\n if (length > 0) {\n enqueuePromiseReactionJob(\n _promise.fulfillReactionHandler0,\n _promise.reactionCapability0,\n value\n );\n _promise.fulfillReactionHandler0 = void 0;\n _promise.rejectReactions0 = void 0;\n _promise.reactionCapability0 = void 0;\n if (length > 1) {\n for (var i = 1, idx = 0; i < length; i++, idx += 3) {\n enqueuePromiseReactionJob(\n _promise[idx + PROMISE_FULFILL_OFFSET],\n _promise[idx + PROMISE_CAPABILITY_OFFSET],\n value\n );\n promise[idx + PROMISE_FULFILL_OFFSET] = void 0;\n promise[idx + PROMISE_REJECT_OFFSET] = void 0;\n promise[idx + PROMISE_CAPABILITY_OFFSET] = void 0;\n }\n }\n }\n _promise.result = value;\n _promise.state = PROMISE_FULFILLED;\n _promise.reactionLength = 0;\n };\n\n var rejectPromise = function (promise, reason) {\n var _promise = promise._promise;\n var length = _promise.reactionLength;\n if (length > 0) {\n enqueuePromiseReactionJob(\n _promise.rejectReactionHandler0,\n _promise.reactionCapability0,\n reason\n );\n _promise.fulfillReactionHandler0 = void 0;\n _promise.rejectReactions0 = void 0;\n _promise.reactionCapability0 = void 0;\n if (length > 1) {\n for (var i = 1, idx = 0; i < length; i++, idx += 3) {\n enqueuePromiseReactionJob(\n _promise[idx + PROMISE_REJECT_OFFSET],\n _promise[idx + PROMISE_CAPABILITY_OFFSET],\n reason\n );\n promise[idx + PROMISE_FULFILL_OFFSET] = void 0;\n promise[idx + PROMISE_REJECT_OFFSET] = void 0;\n promise[idx + PROMISE_CAPABILITY_OFFSET] = void 0;\n }\n }\n }\n _promise.result = reason;\n _promise.state = PROMISE_REJECTED;\n _promise.reactionLength = 0;\n };\n\n var createResolvingFunctions = function (promise) {\n var alreadyResolved = false;\n var resolve = function (resolution) {\n var then;\n if (alreadyResolved) { return; }\n alreadyResolved = true;\n if (resolution === promise) {\n return rejectPromise(promise, new TypeError('Self resolution'));\n }\n if (!ES.TypeIsObject(resolution)) {\n return fulfillPromise(promise, resolution);\n }\n try {\n then = resolution.then;\n } catch (e) {\n return rejectPromise(promise, e);\n }\n if (!ES.IsCallable(then)) {\n return fulfillPromise(promise, resolution);\n }\n enqueue(function () {\n promiseResolveThenableJob(promise, resolution, then);\n });\n };\n var reject = function (reason) {\n if (alreadyResolved) { return; }\n alreadyResolved = true;\n return rejectPromise(promise, reason);\n };\n return { resolve: resolve, reject: reject };\n };\n\n var optimizedThen = function (then, thenable, resolve, reject) {\n // Optimization: since we discard the result, we can pass our\n // own then implementation a special hint to let it know it\n // doesn't have to create it. (The PROMISE_FAKE_CAPABILITY\n // object is local to this implementation and unforgeable outside.)\n if (then === Promise$prototype$then) {\n _call(then, thenable, resolve, reject, PROMISE_FAKE_CAPABILITY);\n } else {\n _call(then, thenable, resolve, reject);\n }\n };\n var promiseResolveThenableJob = function (promise, thenable, then) {\n var resolvingFunctions = createResolvingFunctions(promise);\n var resolve = resolvingFunctions.resolve;\n var reject = resolvingFunctions.reject;\n try {\n optimizedThen(then, thenable, resolve, reject);\n } catch (e) {\n reject(e);\n }\n };\n\n var Promise$prototype, Promise$prototype$then;\n var Promise = (function () {\n var PromiseShim = function Promise(resolver) {\n if (!(this instanceof PromiseShim)) {\n throw new TypeError('Constructor Promise requires \"new\"');\n }\n if (this && this._promise) {\n throw new TypeError('Bad construction');\n }\n // see https://bugs.ecmascript.org/show_bug.cgi?id=2482\n if (!ES.IsCallable(resolver)) {\n throw new TypeError('not a valid resolver');\n }\n var promise = emulateES6construct(this, PromiseShim, Promise$prototype, {\n _promise: {\n result: void 0,\n state: PROMISE_PENDING,\n // The first member of the \"reactions\" array is inlined here,\n // since most promises only have one reaction.\n // We've also exploded the 'reaction' object to inline the\n // \"handler\" and \"capability\" fields, since both fulfill and\n // reject reactions share the same capability.\n reactionLength: 0,\n fulfillReactionHandler0: void 0,\n rejectReactionHandler0: void 0,\n reactionCapability0: void 0\n }\n });\n var resolvingFunctions = createResolvingFunctions(promise);\n var reject = resolvingFunctions.reject;\n try {\n resolver(resolvingFunctions.resolve, reject);\n } catch (e) {\n reject(e);\n }\n return promise;\n };\n return PromiseShim;\n }());\n Promise$prototype = Promise.prototype;\n\n var _promiseAllResolver = function (index, values, capability, remaining) {\n var alreadyCalled = false;\n return function (x) {\n if (alreadyCalled) { return; }\n alreadyCalled = true;\n values[index] = x;\n if ((--remaining.count) === 0) {\n var resolve = capability.resolve;\n resolve(values); // call w/ this===undefined\n }\n };\n };\n\n var performPromiseAll = function (iteratorRecord, C, resultCapability) {\n var it = iteratorRecord.iterator;\n var values = [];\n var remaining = { count: 1 };\n var next, nextValue;\n var index = 0;\n while (true) {\n try {\n next = ES.IteratorStep(it);\n if (next === false) {\n iteratorRecord.done = true;\n break;\n }\n nextValue = next.value;\n } catch (e) {\n iteratorRecord.done = true;\n throw e;\n }\n values[index] = void 0;\n var nextPromise = C.resolve(nextValue);\n var resolveElement = _promiseAllResolver(\n index,\n values,\n resultCapability,\n remaining\n );\n remaining.count += 1;\n optimizedThen(nextPromise.then, nextPromise, resolveElement, resultCapability.reject);\n index += 1;\n }\n if ((--remaining.count) === 0) {\n var resolve = resultCapability.resolve;\n resolve(values); // call w/ this===undefined\n }\n return resultCapability.promise;\n };\n\n var performPromiseRace = function (iteratorRecord, C, resultCapability) {\n var it = iteratorRecord.iterator;\n var next, nextValue, nextPromise;\n while (true) {\n try {\n next = ES.IteratorStep(it);\n if (next === false) {\n // NOTE: If iterable has no items, resulting promise will never\n // resolve; see:\n // https://github.com/domenic/promises-unwrapping/issues/75\n // https://bugs.ecmascript.org/show_bug.cgi?id=2515\n iteratorRecord.done = true;\n break;\n }\n nextValue = next.value;\n } catch (e) {\n iteratorRecord.done = true;\n throw e;\n }\n nextPromise = C.resolve(nextValue);\n optimizedThen(nextPromise.then, nextPromise, resultCapability.resolve, resultCapability.reject);\n }\n return resultCapability.promise;\n };\n\n defineProperties(Promise, {\n all: function all(iterable) {\n var C = this;\n if (!ES.TypeIsObject(C)) {\n throw new TypeError('Promise is not object');\n }\n var capability = new PromiseCapability(C);\n var iterator, iteratorRecord;\n try {\n iterator = ES.GetIterator(iterable);\n iteratorRecord = { iterator: iterator, done: false };\n return performPromiseAll(iteratorRecord, C, capability);\n } catch (e) {\n var exception = e;\n if (iteratorRecord && !iteratorRecord.done) {\n try {\n ES.IteratorClose(iterator, true);\n } catch (ee) {\n exception = ee;\n }\n }\n var reject = capability.reject;\n reject(exception);\n return capability.promise;\n }\n },\n\n race: function race(iterable) {\n var C = this;\n if (!ES.TypeIsObject(C)) {\n throw new TypeError('Promise is not object');\n }\n var capability = new PromiseCapability(C);\n var iterator, iteratorRecord;\n try {\n iterator = ES.GetIterator(iterable);\n iteratorRecord = { iterator: iterator, done: false };\n return performPromiseRace(iteratorRecord, C, capability);\n } catch (e) {\n var exception = e;\n if (iteratorRecord && !iteratorRecord.done) {\n try {\n ES.IteratorClose(iterator, true);\n } catch (ee) {\n exception = ee;\n }\n }\n var reject = capability.reject;\n reject(exception);\n return capability.promise;\n }\n },\n\n reject: function reject(reason) {\n var C = this;\n if (!ES.TypeIsObject(C)) {\n throw new TypeError('Bad promise constructor');\n }\n var capability = new PromiseCapability(C);\n var rejectFunc = capability.reject;\n rejectFunc(reason); // call with this===undefined\n return capability.promise;\n },\n\n resolve: function resolve(v) {\n // See https://esdiscuss.org/topic/fixing-promise-resolve for spec\n var C = this;\n if (!ES.TypeIsObject(C)) {\n throw new TypeError('Bad promise constructor');\n }\n if (ES.IsPromise(v)) {\n var constructor = v.constructor;\n if (constructor === C) {\n return v;\n }\n }\n var capability = new PromiseCapability(C);\n var resolveFunc = capability.resolve;\n resolveFunc(v); // call with this===undefined\n return capability.promise;\n }\n });\n\n defineProperties(Promise$prototype, {\n 'catch': function (onRejected) {\n return this.then(null, onRejected);\n },\n\n then: function then(onFulfilled, onRejected) {\n var promise = this;\n if (!ES.IsPromise(promise)) { throw new TypeError('not a promise'); }\n var C = ES.SpeciesConstructor(promise, Promise);\n var resultCapability;\n var returnValueIsIgnored = arguments.length > 2 && arguments[2] === PROMISE_FAKE_CAPABILITY;\n if (returnValueIsIgnored && C === Promise) {\n resultCapability = PROMISE_FAKE_CAPABILITY;\n } else {\n resultCapability = new PromiseCapability(C);\n }\n // PerformPromiseThen(promise, onFulfilled, onRejected, resultCapability)\n // Note that we've split the 'reaction' object into its two\n // components, \"capabilities\" and \"handler\"\n // \"capabilities\" is always equal to `resultCapability`\n var fulfillReactionHandler = ES.IsCallable(onFulfilled) ? onFulfilled : PROMISE_IDENTITY;\n var rejectReactionHandler = ES.IsCallable(onRejected) ? onRejected : PROMISE_THROWER;\n var _promise = promise._promise;\n var value;\n if (_promise.state === PROMISE_PENDING) {\n if (_promise.reactionLength === 0) {\n _promise.fulfillReactionHandler0 = fulfillReactionHandler;\n _promise.rejectReactionHandler0 = rejectReactionHandler;\n _promise.reactionCapability0 = resultCapability;\n } else {\n var idx = 3 * (_promise.reactionLength - 1);\n _promise[idx + PROMISE_FULFILL_OFFSET] = fulfillReactionHandler;\n _promise[idx + PROMISE_REJECT_OFFSET] = rejectReactionHandler;\n _promise[idx + PROMISE_CAPABILITY_OFFSET] = resultCapability;\n }\n _promise.reactionLength += 1;\n } else if (_promise.state === PROMISE_FULFILLED) {\n value = _promise.result;\n enqueuePromiseReactionJob(\n fulfillReactionHandler,\n resultCapability,\n value\n );\n } else if (_promise.state === PROMISE_REJECTED) {\n value = _promise.result;\n enqueuePromiseReactionJob(\n rejectReactionHandler,\n resultCapability,\n value\n );\n } else {\n throw new TypeError('unexpected Promise state');\n }\n return resultCapability.promise;\n }\n });\n // This helps the optimizer by ensuring that methods which take\n // capabilities aren't polymorphic.\n PROMISE_FAKE_CAPABILITY = new PromiseCapability(Promise);\n Promise$prototype$then = Promise$prototype.then;\n\n return Promise;\n }());\n\n // Chrome's native Promise has extra methods that it shouldn't have. Let's remove them.\n if (globals.Promise) {\n delete globals.Promise.accept;\n delete globals.Promise.defer;\n delete globals.Promise.prototype.chain;\n }\n\n if (typeof PromiseShim === 'function') {\n // export the Promise constructor.\n defineProperties(globals, { Promise: PromiseShim });\n // In Chrome 33 (and thereabouts) Promise is defined, but the\n // implementation is buggy in a number of ways. Let's check subclassing\n // support to see if we have a buggy implementation.\n var promiseSupportsSubclassing = supportsSubclassing(globals.Promise, function (S) {\n return S.resolve(42).then(function () {}) instanceof S;\n });\n var promiseIgnoresNonFunctionThenCallbacks = !throwsError(function () {\n return globals.Promise.reject(42).then(null, 5).then(null, noop);\n });\n var promiseRequiresObjectContext = throwsError(function () { return globals.Promise.call(3, noop); });\n // Promise.resolve() was errata'ed late in the ES6 process.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1170742\n // https://code.google.com/p/v8/issues/detail?id=4161\n // It serves as a proxy for a number of other bugs in early Promise\n // implementations.\n var promiseResolveBroken = (function (Promise) {\n var p = Promise.resolve(5);\n p.constructor = {};\n var p2 = Promise.resolve(p);\n try {\n p2.then(null, noop).then(null, noop); // avoid \"uncaught rejection\" warnings in console\n } catch (e) {\n return true; // v8 native Promises break here https://code.google.com/p/chromium/issues/detail?id=575314\n }\n return p === p2; // This *should* be false!\n }(globals.Promise));\n\n // Chrome 46 (probably older too) does not retrieve a thenable's .then synchronously\n var getsThenSynchronously = supportsDescriptors && (function () {\n var count = 0;\n // eslint-disable-next-line getter-return\n var thenable = Object.defineProperty({}, 'then', { get: function () { count += 1; } });\n Promise.resolve(thenable);\n return count === 1;\n }());\n\n var BadResolverPromise = function BadResolverPromise(executor) {\n var p = new Promise(executor);\n executor(3, function () {});\n this.then = p.then;\n this.constructor = BadResolverPromise;\n };\n BadResolverPromise.prototype = Promise.prototype;\n BadResolverPromise.all = Promise.all;\n // Chrome Canary 49 (probably older too) has some implementation bugs\n var hasBadResolverPromise = valueOrFalseIfThrows(function () {\n return !!BadResolverPromise.all([1, 2]);\n });\n\n if (!promiseSupportsSubclassing || !promiseIgnoresNonFunctionThenCallbacks ||\n !promiseRequiresObjectContext || promiseResolveBroken ||\n !getsThenSynchronously || hasBadResolverPromise) {\n /* globals Promise: true */\n /* eslint-disable no-undef, no-global-assign */\n /* jshint -W020 */\n Promise = PromiseShim;\n /* jshint +W020 */\n /* eslint-enable no-undef, no-global-assign */\n /* globals Promise: false */\n overrideNative(globals, 'Promise', PromiseShim);\n }\n if (Promise.all.length !== 1) {\n var origAll = Promise.all;\n overrideNative(Promise, 'all', function all(iterable) {\n return ES.Call(origAll, this, arguments);\n });\n }\n if (Promise.race.length !== 1) {\n var origRace = Promise.race;\n overrideNative(Promise, 'race', function race(iterable) {\n return ES.Call(origRace, this, arguments);\n });\n }\n if (Promise.resolve.length !== 1) {\n var origResolve = Promise.resolve;\n overrideNative(Promise, 'resolve', function resolve(x) {\n return ES.Call(origResolve, this, arguments);\n });\n }\n if (Promise.reject.length !== 1) {\n var origReject = Promise.reject;\n overrideNative(Promise, 'reject', function reject(r) {\n return ES.Call(origReject, this, arguments);\n });\n }\n ensureEnumerable(Promise, 'all');\n ensureEnumerable(Promise, 'race');\n ensureEnumerable(Promise, 'resolve');\n ensureEnumerable(Promise, 'reject');\n addDefaultSpecies(Promise);\n }\n\n // Map and Set require a true ES5 environment\n // Their fast path also requires that the environment preserve\n // property insertion order, which is not guaranteed by the spec.\n var testOrder = function (a) {\n var b = keys(_reduce(a, function (o, k) {\n o[k] = true;\n return o;\n }, {}));\n return a.join(':') === b.join(':');\n };\n var preservesInsertionOrder = testOrder(['z', 'a', 'bb']);\n // some engines (eg, Chrome) only preserve insertion order for string keys\n var preservesNumericInsertionOrder = testOrder(['z', 1, 'a', '3', 2]);\n\n if (supportsDescriptors) {\n\n var fastkey = function fastkey(key, skipInsertionOrderCheck) {\n if (!skipInsertionOrderCheck && !preservesInsertionOrder) {\n return null;\n }\n if (isNullOrUndefined(key)) {\n return '^' + ES.ToString(key);\n } else if (typeof key === 'string') {\n return '$' + key;\n } else if (typeof key === 'number') {\n // note that -0 will get coerced to \"0\" when used as a property key\n if (!preservesNumericInsertionOrder) {\n return 'n' + key;\n }\n return key;\n } else if (typeof key === 'boolean') {\n return 'b' + key;\n }\n return null;\n };\n\n var emptyObject = function emptyObject() {\n // accomodate some older not-quite-ES5 browsers\n return Object.create ? Object.create(null) : {};\n };\n\n var addIterableToMap = function addIterableToMap(MapConstructor, map, iterable) {\n if (isArray(iterable) || Type.string(iterable)) {\n _forEach(iterable, function (entry) {\n if (!ES.TypeIsObject(entry)) {\n throw new TypeError('Iterator value ' + entry + ' is not an entry object');\n }\n map.set(entry[0], entry[1]);\n });\n } else if (iterable instanceof MapConstructor) {\n _call(MapConstructor.prototype.forEach, iterable, function (value, key) {\n map.set(key, value);\n });\n } else {\n var iter, adder;\n if (!isNullOrUndefined(iterable)) {\n adder = map.set;\n if (!ES.IsCallable(adder)) { throw new TypeError('bad map'); }\n iter = ES.GetIterator(iterable);\n }\n if (typeof iter !== 'undefined') {\n while (true) {\n var next = ES.IteratorStep(iter);\n if (next === false) { break; }\n var nextItem = next.value;\n try {\n if (!ES.TypeIsObject(nextItem)) {\n throw new TypeError('Iterator value ' + nextItem + ' is not an entry object');\n }\n _call(adder, map, nextItem[0], nextItem[1]);\n } catch (e) {\n ES.IteratorClose(iter, true);\n throw e;\n }\n }\n }\n }\n };\n var addIterableToSet = function addIterableToSet(SetConstructor, set, iterable) {\n if (isArray(iterable) || Type.string(iterable)) {\n _forEach(iterable, function (value) {\n set.add(value);\n });\n } else if (iterable instanceof SetConstructor) {\n _call(SetConstructor.prototype.forEach, iterable, function (value) {\n set.add(value);\n });\n } else {\n var iter, adder;\n if (!isNullOrUndefined(iterable)) {\n adder = set.add;\n if (!ES.IsCallable(adder)) { throw new TypeError('bad set'); }\n iter = ES.GetIterator(iterable);\n }\n if (typeof iter !== 'undefined') {\n while (true) {\n var next = ES.IteratorStep(iter);\n if (next === false) { break; }\n var nextValue = next.value;\n try {\n _call(adder, set, nextValue);\n } catch (e) {\n ES.IteratorClose(iter, true);\n throw e;\n }\n }\n }\n }\n };\n\n var collectionShims = {\n Map: (function () {\n\n var empty = {};\n\n var MapEntry = function MapEntry(key, value) {\n this.key = key;\n this.value = value;\n this.next = null;\n this.prev = null;\n };\n\n MapEntry.prototype.isRemoved = function isRemoved() {\n return this.key === empty;\n };\n\n var isMap = function isMap(map) {\n return !!map._es6map;\n };\n\n var requireMapSlot = function requireMapSlot(map, method) {\n if (!ES.TypeIsObject(map) || !isMap(map)) {\n throw new TypeError('Method Map.prototype.' + method + ' called on incompatible receiver ' + ES.ToString(map));\n }\n };\n\n var MapIterator = function MapIterator(map, kind) {\n requireMapSlot(map, '[[MapIterator]]');\n this.head = map._head;\n this.i = this.head;\n this.kind = kind;\n };\n\n MapIterator.prototype = {\n isMapIterator: true,\n next: function next() {\n if (!this.isMapIterator) {\n throw new TypeError('Not a MapIterator');\n }\n var i = this.i;\n var kind = this.kind;\n var head = this.head;\n if (typeof this.i === 'undefined') {\n return iteratorResult();\n }\n while (i.isRemoved() && i !== head) {\n // back up off of removed entries\n i = i.prev;\n }\n // advance to next unreturned element.\n var result;\n while (i.next !== head) {\n i = i.next;\n if (!i.isRemoved()) {\n if (kind === 'key') {\n result = i.key;\n } else if (kind === 'value') {\n result = i.value;\n } else {\n result = [i.key, i.value];\n }\n this.i = i;\n return iteratorResult(result);\n }\n }\n // once the iterator is done, it is done forever.\n this.i = void 0;\n return iteratorResult();\n }\n };\n addIterator(MapIterator.prototype);\n\n var Map$prototype;\n var MapShim = function Map() {\n if (!(this instanceof Map)) {\n throw new TypeError('Constructor Map requires \"new\"');\n }\n if (this && this._es6map) {\n throw new TypeError('Bad construction');\n }\n var map = emulateES6construct(this, Map, Map$prototype, {\n _es6map: true,\n _head: null,\n _map: OrigMap ? new OrigMap() : null,\n _size: 0,\n _storage: emptyObject()\n });\n\n var head = new MapEntry(null, null);\n // circular doubly-linked list.\n /* eslint no-multi-assign: 1 */\n head.next = head.prev = head;\n map._head = head;\n\n // Optionally initialize map from iterable\n if (arguments.length > 0) {\n addIterableToMap(Map, map, arguments[0]);\n }\n return map;\n };\n Map$prototype = MapShim.prototype;\n\n Value.getter(Map$prototype, 'size', function () {\n if (typeof this._size === 'undefined') {\n throw new TypeError('size method called on incompatible Map');\n }\n return this._size;\n });\n\n defineProperties(Map$prototype, {\n get: function get(key) {\n requireMapSlot(this, 'get');\n var entry;\n var fkey = fastkey(key, true);\n if (fkey !== null) {\n // fast O(1) path\n entry = this._storage[fkey];\n if (entry) {\n return entry.value;\n } else {\n return;\n }\n }\n if (this._map) {\n // fast object key path\n entry = origMapGet.call(this._map, key);\n if (entry) {\n return entry.value;\n } else {\n return;\n }\n }\n var head = this._head;\n var i = head;\n while ((i = i.next) !== head) {\n if (ES.SameValueZero(i.key, key)) {\n return i.value;\n }\n }\n },\n\n has: function has(key) {\n requireMapSlot(this, 'has');\n var fkey = fastkey(key, true);\n if (fkey !== null) {\n // fast O(1) path\n return typeof this._storage[fkey] !== 'undefined';\n }\n if (this._map) {\n // fast object key path\n return origMapHas.call(this._map, key);\n }\n var head = this._head;\n var i = head;\n while ((i = i.next) !== head) {\n if (ES.SameValueZero(i.key, key)) {\n return true;\n }\n }\n return false;\n },\n\n set: function set(key, value) {\n requireMapSlot(this, 'set');\n var head = this._head;\n var i = head;\n var entry;\n var fkey = fastkey(key, true);\n if (fkey !== null) {\n // fast O(1) path\n if (typeof this._storage[fkey] !== 'undefined') {\n this._storage[fkey].value = value;\n return this;\n } else {\n entry = this._storage[fkey] = new MapEntry(key, value); /* eslint no-multi-assign: 1 */\n i = head.prev;\n // fall through\n }\n } else if (this._map) {\n // fast object key path\n if (origMapHas.call(this._map, key)) {\n origMapGet.call(this._map, key).value = value;\n } else {\n entry = new MapEntry(key, value);\n origMapSet.call(this._map, key, entry);\n i = head.prev;\n // fall through\n }\n }\n while ((i = i.next) !== head) {\n if (ES.SameValueZero(i.key, key)) {\n i.value = value;\n return this;\n }\n }\n entry = entry || new MapEntry(key, value);\n if (ES.SameValue(-0, key)) {\n entry.key = +0; // coerce -0 to +0 in entry\n }\n entry.next = this._head;\n entry.prev = this._head.prev;\n entry.prev.next = entry;\n entry.next.prev = entry;\n this._size += 1;\n return this;\n },\n\n 'delete': function (key) {\n requireMapSlot(this, 'delete');\n var head = this._head;\n var i = head;\n var fkey = fastkey(key, true);\n if (fkey !== null) {\n // fast O(1) path\n if (typeof this._storage[fkey] === 'undefined') {\n return false;\n }\n i = this._storage[fkey].prev;\n delete this._storage[fkey];\n // fall through\n } else if (this._map) {\n // fast object key path\n if (!origMapHas.call(this._map, key)) {\n return false;\n }\n i = origMapGet.call(this._map, key).prev;\n origMapDelete.call(this._map, key);\n // fall through\n }\n while ((i = i.next) !== head) {\n if (ES.SameValueZero(i.key, key)) {\n i.key = empty;\n i.value = empty;\n i.prev.next = i.next;\n i.next.prev = i.prev;\n this._size -= 1;\n return true;\n }\n }\n return false;\n },\n\n clear: function clear() {\n /* eslint no-multi-assign: 1 */\n requireMapSlot(this, 'clear');\n this._map = OrigMap ? new OrigMap() : null;\n this._size = 0;\n this._storage = emptyObject();\n var head = this._head;\n var i = head;\n var p = i.next;\n while ((i = p) !== head) {\n i.key = empty;\n i.value = empty;\n p = i.next;\n i.next = i.prev = head;\n }\n head.next = head.prev = head;\n },\n\n keys: function keys() {\n requireMapSlot(this, 'keys');\n return new MapIterator(this, 'key');\n },\n\n values: function values() {\n requireMapSlot(this, 'values');\n return new MapIterator(this, 'value');\n },\n\n entries: function entries() {\n requireMapSlot(this, 'entries');\n return new MapIterator(this, 'key+value');\n },\n\n forEach: function forEach(callback) {\n requireMapSlot(this, 'forEach');\n var context = arguments.length > 1 ? arguments[1] : null;\n var it = this.entries();\n for (var entry = it.next(); !entry.done; entry = it.next()) {\n if (context) {\n _call(callback, context, entry.value[1], entry.value[0], this);\n } else {\n callback(entry.value[1], entry.value[0], this);\n }\n }\n }\n });\n addIterator(Map$prototype, Map$prototype.entries);\n\n return MapShim;\n }()),\n\n Set: (function () {\n var isSet = function isSet(set) {\n return set._es6set && typeof set._storage !== 'undefined';\n };\n var requireSetSlot = function requireSetSlot(set, method) {\n if (!ES.TypeIsObject(set) || !isSet(set)) {\n // https://github.com/paulmillr/es6-shim/issues/176\n throw new TypeError('Set.prototype.' + method + ' called on incompatible receiver ' + ES.ToString(set));\n }\n };\n\n // Creating a Map is expensive. To speed up the common case of\n // Sets containing only string or numeric keys, we use an object\n // as backing storage and lazily create a full Map only when\n // required.\n var Set$prototype;\n var SetShim = function Set() {\n if (!(this instanceof Set)) {\n throw new TypeError('Constructor Set requires \"new\"');\n }\n if (this && this._es6set) {\n throw new TypeError('Bad construction');\n }\n var set = emulateES6construct(this, Set, Set$prototype, {\n _es6set: true,\n '[[SetData]]': null,\n _storage: emptyObject()\n });\n if (!set._es6set) {\n throw new TypeError('bad set');\n }\n\n // Optionally initialize Set from iterable\n if (arguments.length > 0) {\n addIterableToSet(Set, set, arguments[0]);\n }\n return set;\n };\n Set$prototype = SetShim.prototype;\n\n var decodeKey = function (key) {\n var k = key;\n if (k === '^null') {\n return null;\n } else if (k === '^undefined') {\n return void 0;\n } else {\n var first = k.charAt(0);\n if (first === '$') {\n return _strSlice(k, 1);\n } else if (first === 'n') {\n return +_strSlice(k, 1);\n } else if (first === 'b') {\n return k === 'btrue';\n }\n }\n return +k;\n };\n // Switch from the object backing storage to a full Map.\n var ensureMap = function ensureMap(set) {\n if (!set['[[SetData]]']) {\n var m = new collectionShims.Map();\n set['[[SetData]]'] = m;\n _forEach(keys(set._storage), function (key) {\n var k = decodeKey(key);\n m.set(k, k);\n });\n set['[[SetData]]'] = m;\n }\n set._storage = null; // free old backing storage\n };\n\n Value.getter(SetShim.prototype, 'size', function () {\n requireSetSlot(this, 'size');\n if (this._storage) {\n return keys(this._storage).length;\n }\n ensureMap(this);\n return this['[[SetData]]'].size;\n });\n\n defineProperties(SetShim.prototype, {\n has: function has(key) {\n requireSetSlot(this, 'has');\n var fkey;\n if (this._storage && (fkey = fastkey(key)) !== null) {\n return !!this._storage[fkey];\n }\n ensureMap(this);\n return this['[[SetData]]'].has(key);\n },\n\n add: function add(key) {\n requireSetSlot(this, 'add');\n var fkey;\n if (this._storage && (fkey = fastkey(key)) !== null) {\n this._storage[fkey] = true;\n return this;\n }\n ensureMap(this);\n this['[[SetData]]'].set(key, key);\n return this;\n },\n\n 'delete': function (key) {\n requireSetSlot(this, 'delete');\n var fkey;\n if (this._storage && (fkey = fastkey(key)) !== null) {\n var hasFKey = _hasOwnProperty(this._storage, fkey);\n return (delete this._storage[fkey]) && hasFKey;\n }\n ensureMap(this);\n return this['[[SetData]]']['delete'](key);\n },\n\n clear: function clear() {\n requireSetSlot(this, 'clear');\n if (this._storage) {\n this._storage = emptyObject();\n }\n if (this['[[SetData]]']) {\n this['[[SetData]]'].clear();\n }\n },\n\n values: function values() {\n requireSetSlot(this, 'values');\n ensureMap(this);\n return new SetIterator(this['[[SetData]]'].values());\n },\n\n entries: function entries() {\n requireSetSlot(this, 'entries');\n ensureMap(this);\n return new SetIterator(this['[[SetData]]'].entries());\n },\n\n forEach: function forEach(callback) {\n requireSetSlot(this, 'forEach');\n var context = arguments.length > 1 ? arguments[1] : null;\n var entireSet = this;\n ensureMap(entireSet);\n this['[[SetData]]'].forEach(function (value, key) {\n if (context) {\n _call(callback, context, key, key, entireSet);\n } else {\n callback(key, key, entireSet);\n }\n });\n }\n });\n defineProperty(SetShim.prototype, 'keys', SetShim.prototype.values, true);\n addIterator(SetShim.prototype, SetShim.prototype.values);\n\n var SetIterator = function SetIterator(it) {\n this.it = it;\n };\n SetIterator.prototype = {\n isSetIterator: true,\n next: function next() {\n if (!this.isSetIterator) {\n throw new TypeError('Not a SetIterator');\n }\n return this.it.next();\n }\n };\n addIterator(SetIterator.prototype);\n\n return SetShim;\n }())\n };\n\n var isGoogleTranslate = globals.Set && !Set.prototype['delete'] && Set.prototype.remove && Set.prototype.items && Set.prototype.map && Array.isArray(new Set().keys);\n if (isGoogleTranslate) {\n // special-case force removal of wildly invalid Set implementation in Google Translate iframes\n // see https://github.com/paulmillr/es6-shim/issues/438 / https://twitter.com/ljharb/status/849335573114363904\n globals.Set = collectionShims.Set;\n }\n if (globals.Map || globals.Set) {\n // Safari 8, for example, doesn't accept an iterable.\n var mapAcceptsArguments = valueOrFalseIfThrows(function () { return new Map([[1, 2]]).get(1) === 2; });\n if (!mapAcceptsArguments) {\n globals.Map = function Map() {\n if (!(this instanceof Map)) {\n throw new TypeError('Constructor Map requires \"new\"');\n }\n var m = new OrigMap();\n if (arguments.length > 0) {\n addIterableToMap(Map, m, arguments[0]);\n }\n delete m.constructor;\n Object.setPrototypeOf(m, globals.Map.prototype);\n return m;\n };\n globals.Map.prototype = create(OrigMap.prototype);\n defineProperty(globals.Map.prototype, 'constructor', globals.Map, true);\n Value.preserveToString(globals.Map, OrigMap);\n }\n var testMap = new Map();\n var mapUsesSameValueZero = (function () {\n // Chrome 38-42, node 0.11/0.12, iojs 1/2 also have a bug when the Map has a size > 4\n var m = new Map([[1, 0], [2, 0], [3, 0], [4, 0]]);\n m.set(-0, m);\n return m.get(0) === m && m.get(-0) === m && m.has(0) && m.has(-0);\n }());\n var mapSupportsChaining = testMap.set(1, 2) === testMap;\n if (!mapUsesSameValueZero || !mapSupportsChaining) {\n overrideNative(Map.prototype, 'set', function set(k, v) {\n _call(origMapSet, this, k === 0 ? 0 : k, v);\n return this;\n });\n }\n if (!mapUsesSameValueZero) {\n defineProperties(Map.prototype, {\n get: function get(k) {\n return _call(origMapGet, this, k === 0 ? 0 : k);\n },\n has: function has(k) {\n return _call(origMapHas, this, k === 0 ? 0 : k);\n }\n }, true);\n Value.preserveToString(Map.prototype.get, origMapGet);\n Value.preserveToString(Map.prototype.has, origMapHas);\n }\n var testSet = new Set();\n var setUsesSameValueZero = Set.prototype['delete'] && Set.prototype.add && Set.prototype.has && (function (s) {\n s['delete'](0);\n s.add(-0);\n return !s.has(0);\n }(testSet));\n var setSupportsChaining = testSet.add(1) === testSet;\n if (!setUsesSameValueZero || !setSupportsChaining) {\n var origSetAdd = Set.prototype.add;\n Set.prototype.add = function add(v) {\n _call(origSetAdd, this, v === 0 ? 0 : v);\n return this;\n };\n Value.preserveToString(Set.prototype.add, origSetAdd);\n }\n if (!setUsesSameValueZero) {\n var origSetHas = Set.prototype.has;\n Set.prototype.has = function has(v) {\n return _call(origSetHas, this, v === 0 ? 0 : v);\n };\n Value.preserveToString(Set.prototype.has, origSetHas);\n var origSetDel = Set.prototype['delete'];\n Set.prototype['delete'] = function SetDelete(v) {\n return _call(origSetDel, this, v === 0 ? 0 : v);\n };\n Value.preserveToString(Set.prototype['delete'], origSetDel);\n }\n var mapSupportsSubclassing = supportsSubclassing(globals.Map, function (M) {\n var m = new M([]);\n // Firefox 32 is ok with the instantiating the subclass but will\n // throw when the map is used.\n m.set(42, 42);\n return m instanceof M;\n });\n // without Object.setPrototypeOf, subclassing is not possible\n var mapFailsToSupportSubclassing = Object.setPrototypeOf && !mapSupportsSubclassing;\n var mapRequiresNew = (function () {\n try {\n return !(globals.Map() instanceof globals.Map);\n } catch (e) {\n return e instanceof TypeError;\n }\n }());\n if (globals.Map.length !== 0 || mapFailsToSupportSubclassing || !mapRequiresNew) {\n globals.Map = function Map() {\n if (!(this instanceof Map)) {\n throw new TypeError('Constructor Map requires \"new\"');\n }\n var m = new OrigMap();\n if (arguments.length > 0) {\n addIterableToMap(Map, m, arguments[0]);\n }\n delete m.constructor;\n Object.setPrototypeOf(m, Map.prototype);\n return m;\n };\n globals.Map.prototype = OrigMap.prototype;\n defineProperty(globals.Map.prototype, 'constructor', globals.Map, true);\n Value.preserveToString(globals.Map, OrigMap);\n }\n var setSupportsSubclassing = supportsSubclassing(globals.Set, function (S) {\n var s = new S([]);\n s.add(42, 42);\n return s instanceof S;\n });\n // without Object.setPrototypeOf, subclassing is not possible\n var setFailsToSupportSubclassing = Object.setPrototypeOf && !setSupportsSubclassing;\n var setRequiresNew = (function () {\n try {\n return !(globals.Set() instanceof globals.Set);\n } catch (e) {\n return e instanceof TypeError;\n }\n }());\n if (globals.Set.length !== 0 || setFailsToSupportSubclassing || !setRequiresNew) {\n var OrigSet = globals.Set;\n globals.Set = function Set() {\n if (!(this instanceof Set)) {\n throw new TypeError('Constructor Set requires \"new\"');\n }\n var s = new OrigSet();\n if (arguments.length > 0) {\n addIterableToSet(Set, s, arguments[0]);\n }\n delete s.constructor;\n Object.setPrototypeOf(s, Set.prototype);\n return s;\n };\n globals.Set.prototype = OrigSet.prototype;\n defineProperty(globals.Set.prototype, 'constructor', globals.Set, true);\n Value.preserveToString(globals.Set, OrigSet);\n }\n var newMap = new globals.Map();\n var mapIterationThrowsStopIterator = !valueOrFalseIfThrows(function () {\n return newMap.keys().next().done;\n });\n /*\n - In Firefox < 23, Map#size is a function.\n - In all current Firefox, Set#entries/keys/values & Map#clear do not exist\n - https://bugzilla.mozilla.org/show_bug.cgi?id=869996\n - In Firefox 24, Map and Set do not implement forEach\n - In Firefox 25 at least, Map and Set are callable without \"new\"\n */\n if (\n typeof globals.Map.prototype.clear !== 'function' ||\n new globals.Set().size !== 0 ||\n newMap.size !== 0 ||\n typeof globals.Map.prototype.keys !== 'function' ||\n typeof globals.Set.prototype.keys !== 'function' ||\n typeof globals.Map.prototype.forEach !== 'function' ||\n typeof globals.Set.prototype.forEach !== 'function' ||\n isCallableWithoutNew(globals.Map) ||\n isCallableWithoutNew(globals.Set) ||\n typeof newMap.keys().next !== 'function' || // Safari 8\n mapIterationThrowsStopIterator || // Firefox 25\n !mapSupportsSubclassing\n ) {\n defineProperties(globals, {\n Map: collectionShims.Map,\n Set: collectionShims.Set\n }, true);\n }\n\n if (globals.Set.prototype.keys !== globals.Set.prototype.values) {\n // Fixed in WebKit with https://bugs.webkit.org/show_bug.cgi?id=144190\n defineProperty(globals.Set.prototype, 'keys', globals.Set.prototype.values, true);\n }\n\n // Shim incomplete iterator implementations.\n addIterator(Object.getPrototypeOf((new globals.Map()).keys()));\n addIterator(Object.getPrototypeOf((new globals.Set()).keys()));\n\n if (functionsHaveNames && globals.Set.prototype.has.name !== 'has') {\n // Microsoft Edge v0.11.10074.0 is missing a name on Set#has\n var anonymousSetHas = globals.Set.prototype.has;\n overrideNative(globals.Set.prototype, 'has', function has(key) {\n return _call(anonymousSetHas, this, key);\n });\n }\n }\n defineProperties(globals, collectionShims);\n addDefaultSpecies(globals.Map);\n addDefaultSpecies(globals.Set);\n }\n\n var throwUnlessTargetIsObject = function throwUnlessTargetIsObject(target) {\n if (!ES.TypeIsObject(target)) {\n throw new TypeError('target must be an object');\n }\n };\n\n // Some Reflect methods are basically the same as\n // those on the Object global, except that a TypeError is thrown if\n // target isn't an object. As well as returning a boolean indicating\n // the success of the operation.\n var ReflectShims = {\n // Apply method in a functional form.\n apply: function apply() {\n return ES.Call(ES.Call, null, arguments);\n },\n\n // New operator in a functional form.\n construct: function construct(constructor, args) {\n if (!ES.IsConstructor(constructor)) {\n throw new TypeError('First argument must be a constructor.');\n }\n var newTarget = arguments.length > 2 ? arguments[2] : constructor;\n if (!ES.IsConstructor(newTarget)) {\n throw new TypeError('new.target must be a constructor.');\n }\n return ES.Construct(constructor, args, newTarget, 'internal');\n },\n\n // When deleting a non-existent or configurable property,\n // true is returned.\n // When attempting to delete a non-configurable property,\n // it will return false.\n deleteProperty: function deleteProperty(target, key) {\n throwUnlessTargetIsObject(target);\n if (supportsDescriptors) {\n var desc = Object.getOwnPropertyDescriptor(target, key);\n\n if (desc && !desc.configurable) {\n return false;\n }\n }\n\n // Will return true.\n return delete target[key];\n },\n\n has: function has(target, key) {\n throwUnlessTargetIsObject(target);\n return key in target;\n }\n };\n\n if (Object.getOwnPropertyNames) {\n Object.assign(ReflectShims, {\n // Basically the result of calling the internal [[OwnPropertyKeys]].\n // Concatenating propertyNames and propertySymbols should do the trick.\n // This should continue to work together with a Symbol shim\n // which overrides Object.getOwnPropertyNames and implements\n // Object.getOwnPropertySymbols.\n ownKeys: function ownKeys(target) {\n throwUnlessTargetIsObject(target);\n var keys = Object.getOwnPropertyNames(target);\n\n if (ES.IsCallable(Object.getOwnPropertySymbols)) {\n _pushApply(keys, Object.getOwnPropertySymbols(target));\n }\n\n return keys;\n }\n });\n }\n\n var callAndCatchException = function ConvertExceptionToBoolean(func) {\n return !throwsError(func);\n };\n\n if (Object.preventExtensions) {\n Object.assign(ReflectShims, {\n isExtensible: function isExtensible(target) {\n throwUnlessTargetIsObject(target);\n return Object.isExtensible(target);\n },\n preventExtensions: function preventExtensions(target) {\n throwUnlessTargetIsObject(target);\n return callAndCatchException(function () {\n return Object.preventExtensions(target);\n });\n }\n });\n }\n\n if (supportsDescriptors) {\n var internalGet = function get(target, key, receiver) {\n var desc = Object.getOwnPropertyDescriptor(target, key);\n\n if (!desc) {\n var parent = Object.getPrototypeOf(target);\n\n if (parent === null) {\n return void 0;\n }\n\n return internalGet(parent, key, receiver);\n }\n\n if ('value' in desc) {\n return desc.value;\n }\n\n if (desc.get) {\n return ES.Call(desc.get, receiver);\n }\n\n return void 0;\n };\n\n var internalSet = function set(target, key, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(target, key);\n\n if (!desc) {\n var parent = Object.getPrototypeOf(target);\n\n if (parent !== null) {\n return internalSet(parent, key, value, receiver);\n }\n\n desc = {\n value: void 0,\n writable: true,\n enumerable: true,\n configurable: true\n };\n }\n\n if ('value' in desc) {\n if (!desc.writable) {\n return false;\n }\n\n if (!ES.TypeIsObject(receiver)) {\n return false;\n }\n\n var existingDesc = Object.getOwnPropertyDescriptor(receiver, key);\n\n if (existingDesc) {\n return Reflect.defineProperty(receiver, key, {\n value: value\n });\n } else {\n return Reflect.defineProperty(receiver, key, {\n value: value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n\n if (desc.set) {\n _call(desc.set, receiver, value);\n return true;\n }\n\n return false;\n };\n\n Object.assign(ReflectShims, {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n throwUnlessTargetIsObject(target);\n return callAndCatchException(function () {\n return Object.defineProperty(target, propertyKey, attributes);\n });\n },\n\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n throwUnlessTargetIsObject(target);\n return Object.getOwnPropertyDescriptor(target, propertyKey);\n },\n\n // Syntax in a functional form.\n get: function get(target, key) {\n throwUnlessTargetIsObject(target);\n var receiver = arguments.length > 2 ? arguments[2] : target;\n\n return internalGet(target, key, receiver);\n },\n\n set: function set(target, key, value) {\n throwUnlessTargetIsObject(target);\n var receiver = arguments.length > 3 ? arguments[3] : target;\n\n return internalSet(target, key, value, receiver);\n }\n });\n }\n\n if (Object.getPrototypeOf) {\n var objectDotGetPrototypeOf = Object.getPrototypeOf;\n ReflectShims.getPrototypeOf = function getPrototypeOf(target) {\n throwUnlessTargetIsObject(target);\n return objectDotGetPrototypeOf(target);\n };\n }\n\n if (Object.setPrototypeOf && ReflectShims.getPrototypeOf) {\n var willCreateCircularPrototype = function (object, lastProto) {\n var proto = lastProto;\n while (proto) {\n if (object === proto) {\n return true;\n }\n proto = ReflectShims.getPrototypeOf(proto);\n }\n return false;\n };\n\n Object.assign(ReflectShims, {\n // Sets the prototype of the given object.\n // Returns true on success, otherwise false.\n setPrototypeOf: function setPrototypeOf(object, proto) {\n throwUnlessTargetIsObject(object);\n if (proto !== null && !ES.TypeIsObject(proto)) {\n throw new TypeError('proto must be an object or null');\n }\n\n // If they already are the same, we're done.\n if (proto === Reflect.getPrototypeOf(object)) {\n return true;\n }\n\n // Cannot alter prototype if object not extensible.\n if (Reflect.isExtensible && !Reflect.isExtensible(object)) {\n return false;\n }\n\n // Ensure that we do not create a circular prototype chain.\n if (willCreateCircularPrototype(object, proto)) {\n return false;\n }\n\n Object.setPrototypeOf(object, proto);\n\n return true;\n }\n });\n }\n var defineOrOverrideReflectProperty = function (key, shim) {\n if (!ES.IsCallable(globals.Reflect[key])) {\n defineProperty(globals.Reflect, key, shim);\n } else {\n var acceptsPrimitives = valueOrFalseIfThrows(function () {\n globals.Reflect[key](1);\n globals.Reflect[key](NaN);\n globals.Reflect[key](true);\n return true;\n });\n if (acceptsPrimitives) {\n overrideNative(globals.Reflect, key, shim);\n }\n }\n };\n Object.keys(ReflectShims).forEach(function (key) {\n defineOrOverrideReflectProperty(key, ReflectShims[key]);\n });\n var originalReflectGetProto = globals.Reflect.getPrototypeOf;\n if (functionsHaveNames && originalReflectGetProto && originalReflectGetProto.name !== 'getPrototypeOf') {\n overrideNative(globals.Reflect, 'getPrototypeOf', function getPrototypeOf(target) {\n return _call(originalReflectGetProto, globals.Reflect, target);\n });\n }\n if (globals.Reflect.setPrototypeOf) {\n if (valueOrFalseIfThrows(function () {\n globals.Reflect.setPrototypeOf(1, {});\n return true;\n })) {\n overrideNative(globals.Reflect, 'setPrototypeOf', ReflectShims.setPrototypeOf);\n }\n }\n if (globals.Reflect.defineProperty) {\n if (!valueOrFalseIfThrows(function () {\n var basic = !globals.Reflect.defineProperty(1, 'test', { value: 1 });\n // \"extensible\" fails on Edge 0.12\n var extensible = typeof Object.preventExtensions !== 'function' || !globals.Reflect.defineProperty(Object.preventExtensions({}), 'test', {});\n return basic && extensible;\n })) {\n overrideNative(globals.Reflect, 'defineProperty', ReflectShims.defineProperty);\n }\n }\n if (globals.Reflect.construct) {\n if (!valueOrFalseIfThrows(function () {\n var F = function F() {};\n return globals.Reflect.construct(function () {}, [], F) instanceof F;\n })) {\n overrideNative(globals.Reflect, 'construct', ReflectShims.construct);\n }\n }\n\n if (String(new Date(NaN)) !== 'Invalid Date') {\n var dateToString = Date.prototype.toString;\n var shimmedDateToString = function toString() {\n var valueOf = +this;\n if (valueOf !== valueOf) {\n return 'Invalid Date';\n }\n return ES.Call(dateToString, this);\n };\n overrideNative(Date.prototype, 'toString', shimmedDateToString);\n }\n\n // Annex B HTML methods\n // http://www.ecma-international.org/ecma-262/6.0/#sec-additional-properties-of-the-string.prototype-object\n var stringHTMLshims = {\n anchor: function anchor(name) { return ES.CreateHTML(this, 'a', 'name', name); },\n big: function big() { return ES.CreateHTML(this, 'big', '', ''); },\n blink: function blink() { return ES.CreateHTML(this, 'blink', '', ''); },\n bold: function bold() { return ES.CreateHTML(this, 'b', '', ''); },\n fixed: function fixed() { return ES.CreateHTML(this, 'tt', '', ''); },\n fontcolor: function fontcolor(color) { return ES.CreateHTML(this, 'font', 'color', color); },\n fontsize: function fontsize(size) { return ES.CreateHTML(this, 'font', 'size', size); },\n italics: function italics() { return ES.CreateHTML(this, 'i', '', ''); },\n link: function link(url) { return ES.CreateHTML(this, 'a', 'href', url); },\n small: function small() { return ES.CreateHTML(this, 'small', '', ''); },\n strike: function strike() { return ES.CreateHTML(this, 'strike', '', ''); },\n sub: function sub() { return ES.CreateHTML(this, 'sub', '', ''); },\n sup: function sub() { return ES.CreateHTML(this, 'sup', '', ''); }\n };\n _forEach(Object.keys(stringHTMLshims), function (key) {\n var method = String.prototype[key];\n var shouldOverwrite = false;\n if (ES.IsCallable(method)) {\n var output = _call(method, '', ' \" ');\n var quotesCount = _concat([], output.match(/\"/g)).length;\n shouldOverwrite = output !== output.toLowerCase() || quotesCount > 2;\n } else {\n shouldOverwrite = true;\n }\n if (shouldOverwrite) {\n overrideNative(String.prototype, key, stringHTMLshims[key]);\n }\n });\n\n var JSONstringifiesSymbols = (function () {\n // Microsoft Edge v0.12 stringifies Symbols incorrectly\n if (!hasSymbols) { return false; } // Symbols are not supported\n var stringify = typeof JSON === 'object' && typeof JSON.stringify === 'function' ? JSON.stringify : null;\n if (!stringify) { return false; } // JSON.stringify is not supported\n if (typeof stringify(Symbol()) !== 'undefined') { return true; } // Symbols should become `undefined`\n if (stringify([Symbol()]) !== '[null]') { return true; } // Symbols in arrays should become `null`\n var obj = { a: Symbol() };\n obj[Symbol()] = true;\n if (stringify(obj) !== '{}') { return true; } // Symbol-valued keys *and* Symbol-valued properties should be omitted\n return false;\n }());\n var JSONstringifyAcceptsObjectSymbol = valueOrFalseIfThrows(function () {\n // Chrome 45 throws on stringifying object symbols\n if (!hasSymbols) { return true; } // Symbols are not supported\n return JSON.stringify(Object(Symbol())) === '{}' && JSON.stringify([Object(Symbol())]) === '[{}]';\n });\n if (JSONstringifiesSymbols || !JSONstringifyAcceptsObjectSymbol) {\n var origStringify = JSON.stringify;\n overrideNative(JSON, 'stringify', function stringify(value) {\n if (typeof value === 'symbol') { return; }\n var replacer;\n if (arguments.length > 1) {\n replacer = arguments[1];\n }\n var args = [value];\n if (!isArray(replacer)) {\n var replaceFn = ES.IsCallable(replacer) ? replacer : null;\n var wrappedReplacer = function (key, val) {\n var parsedValue = replaceFn ? _call(replaceFn, this, key, val) : val;\n if (typeof parsedValue !== 'symbol') {\n if (Type.symbol(parsedValue)) {\n return assignTo({})(parsedValue);\n } else {\n return parsedValue;\n }\n }\n };\n args.push(wrappedReplacer);\n } else {\n // create wrapped replacer that handles an array replacer?\n args.push(replacer);\n }\n if (arguments.length > 2) {\n args.push(arguments[2]);\n }\n return origStringify.apply(this, args);\n });\n }\n\n return globals;\n}));\n","!function(a){\"use strict\";function b(b,c){var d=a.createEvent(\"Event\");d.initEvent(b,!0,!1),c.dispatchEvent(d)}function c(c){c.stopPropagation(),c.stopImmediatePropagation(),a[j.enabled]=a[f.enabled],a[j.element]=a[f.element],b(j.events.change,c.target)}function d(a){b(j.events.error,a.target)}function e(b){return function(c,d){function e(){c(),a.removeEventListener(f.events.change,e,!1)}function g(){d(new TypeError),a.removeEventListener(f.events.error,g,!1)}return b!==j.exit||a[f.element]?(a.addEventListener(f.events.change,e,!1),void a.addEventListener(f.events.error,g,!1)):void setTimeout(function(){d(new TypeError)},1)}}var f,g,h=!0,i={w3:{enabled:\"fullscreenEnabled\",element:\"fullscreenElement\",request:\"requestFullscreen\",exit:\"exitFullscreen\",events:{change:\"fullscreenchange\",error:\"fullscreenerror\"}},webkit:{enabled:\"webkitFullscreenEnabled\",element:\"webkitCurrentFullScreenElement\",request:\"webkitRequestFullscreen\",exit:\"webkitExitFullscreen\",events:{change:\"webkitfullscreenchange\",error:\"webkitfullscreenerror\"}},moz:{enabled:\"mozFullScreenEnabled\",element:\"mozFullScreenElement\",request:\"mozRequestFullScreen\",exit:\"mozCancelFullScreen\",events:{change:\"mozfullscreenchange\",error:\"mozfullscreenerror\"}},ms:{enabled:\"msFullscreenEnabled\",element:\"msFullscreenElement\",request:\"msRequestFullscreen\",exit:\"msExitFullscreen\",events:{change:\"MSFullscreenChange\",error:\"MSFullscreenError\"}}},j=i.w3;for(g in i)if(i[g].enabled in a){f=i[g];break}return!h||j.enabled in a||!f||(a.addEventListener(f.events.change,c,!1),a.addEventListener(f.events.error,d,!1),a[j.enabled]=a[f.enabled],a[j.element]=a[f.element],a[j.exit]=function(){var b=a[f.exit]();return!b&&Promise?new Promise(e(j.exit)):b},Element.prototype[j.request]=function(){var a=this[f.request].apply(this,arguments);return!a&&Promise?new Promise(e(j.request)):a}),f}(document);","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nfunction tagParameter(annotationTarget, propertyName, parameterIndex, metadata) {\n var metadataKey = METADATA_KEY.TAGGED;\n _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex);\n}\nexports.tagParameter = tagParameter;\nfunction tagProperty(annotationTarget, propertyName, metadata) {\n var metadataKey = METADATA_KEY.TAGGED_PROP;\n _tagParameterOrProperty(metadataKey, annotationTarget.constructor, propertyName, metadata);\n}\nexports.tagProperty = tagProperty;\nfunction _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex) {\n var paramsOrPropertiesMetadata = {};\n var isParameterDecorator = (typeof parameterIndex === \"number\");\n var key = (parameterIndex !== undefined && isParameterDecorator) ? parameterIndex.toString() : propertyName;\n if (isParameterDecorator && propertyName !== undefined) {\n throw new Error(ERROR_MSGS.INVALID_DECORATOR_OPERATION);\n }\n if (Reflect.hasOwnMetadata(metadataKey, annotationTarget)) {\n paramsOrPropertiesMetadata = Reflect.getMetadata(metadataKey, annotationTarget);\n }\n var paramOrPropertyMetadata = paramsOrPropertiesMetadata[key];\n if (!Array.isArray(paramOrPropertyMetadata)) {\n paramOrPropertyMetadata = [];\n }\n else {\n for (var _i = 0, paramOrPropertyMetadata_1 = paramOrPropertyMetadata; _i < paramOrPropertyMetadata_1.length; _i++) {\n var m = paramOrPropertyMetadata_1[_i];\n if (m.key === metadata.key) {\n throw new Error(ERROR_MSGS.DUPLICATED_METADATA + \" \" + m.key.toString());\n }\n }\n }\n paramOrPropertyMetadata.push(metadata);\n paramsOrPropertiesMetadata[key] = paramOrPropertyMetadata;\n Reflect.defineMetadata(metadataKey, paramsOrPropertiesMetadata, annotationTarget);\n}\nfunction _decorate(decorators, target) {\n Reflect.decorate(decorators, target);\n}\nfunction _param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); };\n}\nfunction decorate(decorator, target, parameterIndex) {\n if (typeof parameterIndex === \"number\") {\n _decorate([_param(parameterIndex, decorator)], target);\n }\n else if (typeof parameterIndex === \"string\") {\n Reflect.decorate([decorator], target, parameterIndex);\n }\n else {\n _decorate([decorator], target);\n }\n}\nexports.decorate = decorate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar error_msgs_1 = require(\"../constants/error_msgs\");\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_1 = require(\"../planning/metadata\");\nvar decorator_utils_1 = require(\"./decorator_utils\");\nvar LazyServiceIdentifer = (function () {\n function LazyServiceIdentifer(cb) {\n this._cb = cb;\n }\n LazyServiceIdentifer.prototype.unwrap = function () {\n return this._cb();\n };\n return LazyServiceIdentifer;\n}());\nexports.LazyServiceIdentifer = LazyServiceIdentifer;\nfunction inject(serviceIdentifier) {\n return function (target, targetKey, index) {\n if (serviceIdentifier === undefined) {\n throw new Error(error_msgs_1.UNDEFINED_INJECT_ANNOTATION(target.name));\n }\n var metadata = new metadata_1.Metadata(METADATA_KEY.INJECT_TAG, serviceIdentifier);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.inject = inject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ERRORS_MSGS = require(\"../constants/error_msgs\");\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nfunction injectable() {\n return function (target) {\n if (Reflect.hasOwnMetadata(METADATA_KEY.PARAM_TYPES, target)) {\n throw new Error(ERRORS_MSGS.DUPLICATED_INJECTABLE_DECORATOR);\n }\n var types = Reflect.getMetadata(METADATA_KEY.DESIGN_PARAM_TYPES, target) || [];\n Reflect.defineMetadata(METADATA_KEY.PARAM_TYPES, types, target);\n return target;\n };\n}\nexports.injectable = injectable;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_1 = require(\"../planning/metadata\");\nvar decorator_utils_1 = require(\"./decorator_utils\");\nfunction multiInject(serviceIdentifier) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.MULTI_INJECT_TAG, serviceIdentifier);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.multiInject = multiInject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_1 = require(\"../planning/metadata\");\nvar decorator_utils_1 = require(\"./decorator_utils\");\nfunction named(name) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, name);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.named = named;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_1 = require(\"../planning/metadata\");\nvar decorator_utils_1 = require(\"./decorator_utils\");\nfunction optional() {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.OPTIONAL_TAG, true);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.optional = optional;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ERRORS_MSGS = require(\"../constants/error_msgs\");\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_1 = require(\"../planning/metadata\");\nfunction postConstruct() {\n return function (target, propertyKey, descriptor) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.POST_CONSTRUCT, propertyKey);\n if (Reflect.hasOwnMetadata(METADATA_KEY.POST_CONSTRUCT, target.constructor)) {\n throw new Error(ERRORS_MSGS.MULTIPLE_POST_CONSTRUCT_METHODS);\n }\n Reflect.defineMetadata(METADATA_KEY.POST_CONSTRUCT, metadata, target.constructor);\n };\n}\nexports.postConstruct = postConstruct;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar metadata_1 = require(\"../planning/metadata\");\nvar decorator_utils_1 = require(\"./decorator_utils\");\nfunction tagged(metadataKey, metadataValue) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(metadataKey, metadataValue);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.tagged = tagged;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_1 = require(\"../planning/metadata\");\nvar decorator_utils_1 = require(\"./decorator_utils\");\nfunction targetName(name) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.NAME_TAG, name);\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n };\n}\nexports.targetName = targetName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_1 = require(\"../planning/metadata\");\nvar decorator_utils_1 = require(\"./decorator_utils\");\nfunction unmanaged() {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.UNMANAGED_TAG, true);\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n };\n}\nexports.unmanaged = unmanaged;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar literal_types_1 = require(\"../constants/literal_types\");\nvar id_1 = require(\"../utils/id\");\nvar Binding = (function () {\n function Binding(serviceIdentifier, scope) {\n this.id = id_1.id();\n this.activated = false;\n this.serviceIdentifier = serviceIdentifier;\n this.scope = scope;\n this.type = literal_types_1.BindingTypeEnum.Invalid;\n this.constraint = function (request) { return true; };\n this.implementationType = null;\n this.cache = null;\n this.factory = null;\n this.provider = null;\n this.onActivation = null;\n this.dynamicValue = null;\n }\n Binding.prototype.clone = function () {\n var clone = new Binding(this.serviceIdentifier, this.scope);\n clone.activated = false;\n clone.implementationType = this.implementationType;\n clone.dynamicValue = this.dynamicValue;\n clone.scope = this.scope;\n clone.type = this.type;\n clone.factory = this.factory;\n clone.provider = this.provider;\n clone.constraint = this.constraint;\n clone.onActivation = this.onActivation;\n clone.cache = this.cache;\n return clone;\n };\n return Binding;\n}());\nexports.Binding = Binding;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BindingCount = {\n MultipleBindingsAvailable: 2,\n NoBindingsAvailable: 0,\n OnlyOneBindingAvailable: 1\n};\nexports.BindingCount = BindingCount;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DUPLICATED_INJECTABLE_DECORATOR = \"Cannot apply @injectable decorator multiple times.\";\nexports.DUPLICATED_METADATA = \"Metadata key was used more than once in a parameter:\";\nexports.NULL_ARGUMENT = \"NULL argument\";\nexports.KEY_NOT_FOUND = \"Key Not Found\";\nexports.AMBIGUOUS_MATCH = \"Ambiguous match found for serviceIdentifier:\";\nexports.CANNOT_UNBIND = \"Could not unbind serviceIdentifier:\";\nexports.NOT_REGISTERED = \"No matching bindings found for serviceIdentifier:\";\nexports.MISSING_INJECTABLE_ANNOTATION = \"Missing required @injectable annotation in:\";\nexports.MISSING_INJECT_ANNOTATION = \"Missing required @inject or @multiInject annotation in:\";\nexports.UNDEFINED_INJECT_ANNOTATION = function (name) {\n return \"@inject called with undefined this could mean that the class \" + name + \" has \" +\n \"a circular dependency problem. You can use a LazyServiceIdentifer to \" +\n \"overcome this limitation.\";\n};\nexports.CIRCULAR_DEPENDENCY = \"Circular dependency found:\";\nexports.NOT_IMPLEMENTED = \"Sorry, this feature is not fully implemented yet.\";\nexports.INVALID_BINDING_TYPE = \"Invalid binding type:\";\nexports.NO_MORE_SNAPSHOTS_AVAILABLE = \"No snapshot available to restore.\";\nexports.INVALID_MIDDLEWARE_RETURN = \"Invalid return type in middleware. Middleware must return!\";\nexports.INVALID_FUNCTION_BINDING = \"Value provided to function binding must be a function!\";\nexports.INVALID_TO_SELF_VALUE = \"The toSelf function can only be applied when a constructor is \" +\n \"used as service identifier\";\nexports.INVALID_DECORATOR_OPERATION = \"The @inject @multiInject @tagged and @named decorators \" +\n \"must be applied to the parameters of a class constructor or a class property.\";\nexports.ARGUMENTS_LENGTH_MISMATCH = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"The number of constructor arguments in the derived class \" +\n (values[0] + \" must be >= than the number of constructor arguments of its base class.\");\n};\nexports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = \"Invalid Container constructor argument. Container options \" +\n \"must be an object.\";\nexports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = \"Invalid Container option. Default scope must \" +\n \"be a string ('singleton' or 'transient').\";\nexports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = \"Invalid Container option. Auto bind injectable must \" +\n \"be a boolean\";\nexports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = \"Invalid Container option. Skip base check must \" +\n \"be a boolean\";\nexports.MULTIPLE_POST_CONSTRUCT_METHODS = \"Cannot apply @postConstruct decorator multiple times in the same class\";\nexports.POST_CONSTRUCT_ERROR = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"@postConstruct error in class \" + values[0] + \": \" + values[1];\n};\nexports.CIRCULAR_DEPENDENCY_IN_FACTORY = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"It looks like there is a circular dependency \" +\n (\"in one of the '\" + values[0] + \"' bindings. Please investigate bindings with\") +\n (\"service identifier '\" + values[1] + \"'.\");\n};\nexports.STACK_OVERFLOW = \"Maximum call stack size exceeded\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BindingScopeEnum = {\n Request: \"Request\",\n Singleton: \"Singleton\",\n Transient: \"Transient\"\n};\nexports.BindingScopeEnum = BindingScopeEnum;\nvar BindingTypeEnum = {\n ConstantValue: \"ConstantValue\",\n Constructor: \"Constructor\",\n DynamicValue: \"DynamicValue\",\n Factory: \"Factory\",\n Function: \"Function\",\n Instance: \"Instance\",\n Invalid: \"Invalid\",\n Provider: \"Provider\"\n};\nexports.BindingTypeEnum = BindingTypeEnum;\nvar TargetTypeEnum = {\n ClassProperty: \"ClassProperty\",\n ConstructorArgument: \"ConstructorArgument\",\n Variable: \"Variable\"\n};\nexports.TargetTypeEnum = TargetTypeEnum;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NAMED_TAG = \"named\";\nexports.NAME_TAG = \"name\";\nexports.UNMANAGED_TAG = \"unmanaged\";\nexports.OPTIONAL_TAG = \"optional\";\nexports.INJECT_TAG = \"inject\";\nexports.MULTI_INJECT_TAG = \"multi_inject\";\nexports.TAGGED = \"inversify:tagged\";\nexports.TAGGED_PROP = \"inversify:tagged_props\";\nexports.PARAM_TYPES = \"inversify:paramtypes\";\nexports.DESIGN_PARAM_TYPES = \"design:paramtypes\";\nexports.POST_CONSTRUCT = \"post_construct\";\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binding_1 = require(\"../bindings/binding\");\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nvar literal_types_1 = require(\"../constants/literal_types\");\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_reader_1 = require(\"../planning/metadata_reader\");\nvar planner_1 = require(\"../planning/planner\");\nvar resolver_1 = require(\"../resolution/resolver\");\nvar binding_to_syntax_1 = require(\"../syntax/binding_to_syntax\");\nvar id_1 = require(\"../utils/id\");\nvar serialization_1 = require(\"../utils/serialization\");\nvar container_snapshot_1 = require(\"./container_snapshot\");\nvar lookup_1 = require(\"./lookup\");\nvar Container = (function () {\n function Container(containerOptions) {\n var options = containerOptions || {};\n if (typeof options !== \"object\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT);\n }\n if (options.defaultScope === undefined) {\n options.defaultScope = literal_types_1.BindingScopeEnum.Transient;\n }\n else if (options.defaultScope !== literal_types_1.BindingScopeEnum.Singleton &&\n options.defaultScope !== literal_types_1.BindingScopeEnum.Transient &&\n options.defaultScope !== literal_types_1.BindingScopeEnum.Request) {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE);\n }\n if (options.autoBindInjectable === undefined) {\n options.autoBindInjectable = false;\n }\n else if (typeof options.autoBindInjectable !== \"boolean\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE);\n }\n if (options.skipBaseClassChecks === undefined) {\n options.skipBaseClassChecks = false;\n }\n else if (typeof options.skipBaseClassChecks !== \"boolean\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK);\n }\n this.options = {\n autoBindInjectable: options.autoBindInjectable,\n defaultScope: options.defaultScope,\n skipBaseClassChecks: options.skipBaseClassChecks\n };\n this.id = id_1.id();\n this._bindingDictionary = new lookup_1.Lookup();\n this._snapshots = [];\n this._middleware = null;\n this.parent = null;\n this._metadataReader = new metadata_reader_1.MetadataReader();\n }\n Container.merge = function (container1, container2) {\n var container = new Container();\n var bindingDictionary = planner_1.getBindingDictionary(container);\n var bindingDictionary1 = planner_1.getBindingDictionary(container1);\n var bindingDictionary2 = planner_1.getBindingDictionary(container2);\n function copyDictionary(origin, destination) {\n origin.traverse(function (key, value) {\n value.forEach(function (binding) {\n destination.add(binding.serviceIdentifier, binding.clone());\n });\n });\n }\n copyDictionary(bindingDictionary1, bindingDictionary);\n copyDictionary(bindingDictionary2, bindingDictionary);\n return container;\n };\n Container.prototype.load = function () {\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n var getHelpers = this._getContainerModuleHelpersFactory();\n for (var _a = 0, modules_1 = modules; _a < modules_1.length; _a++) {\n var currentModule = modules_1[_a];\n var containerModuleHelpers = getHelpers(currentModule.id);\n currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction);\n }\n };\n Container.prototype.loadAsync = function () {\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n return __awaiter(this, void 0, void 0, function () {\n var getHelpers, _a, modules_2, currentModule, containerModuleHelpers;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n getHelpers = this._getContainerModuleHelpersFactory();\n _a = 0, modules_2 = modules;\n _b.label = 1;\n case 1:\n if (!(_a < modules_2.length)) return [3, 4];\n currentModule = modules_2[_a];\n containerModuleHelpers = getHelpers(currentModule.id);\n return [4, currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n _a++;\n return [3, 1];\n case 4: return [2];\n }\n });\n });\n };\n Container.prototype.unload = function () {\n var _this = this;\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n var conditionFactory = function (expected) { return function (item) {\n return item.moduleId === expected;\n }; };\n modules.forEach(function (module) {\n var condition = conditionFactory(module.id);\n _this._bindingDictionary.removeByCondition(condition);\n });\n };\n Container.prototype.bind = function (serviceIdentifier) {\n var scope = this.options.defaultScope || literal_types_1.BindingScopeEnum.Transient;\n var binding = new binding_1.Binding(serviceIdentifier, scope);\n this._bindingDictionary.add(serviceIdentifier, binding);\n return new binding_to_syntax_1.BindingToSyntax(binding);\n };\n Container.prototype.rebind = function (serviceIdentifier) {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n };\n Container.prototype.unbind = function (serviceIdentifier) {\n try {\n this._bindingDictionary.remove(serviceIdentifier);\n }\n catch (e) {\n throw new Error(ERROR_MSGS.CANNOT_UNBIND + \" \" + serialization_1.getServiceIdentifierAsString(serviceIdentifier));\n }\n };\n Container.prototype.unbindAll = function () {\n this._bindingDictionary = new lookup_1.Lookup();\n };\n Container.prototype.isBound = function (serviceIdentifier) {\n var bound = this._bindingDictionary.hasKey(serviceIdentifier);\n if (!bound && this.parent) {\n bound = this.parent.isBound(serviceIdentifier);\n }\n return bound;\n };\n Container.prototype.isBoundNamed = function (serviceIdentifier, named) {\n return this.isBoundTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.isBoundTagged = function (serviceIdentifier, key, value) {\n var bound = false;\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n var bindings = this._bindingDictionary.get(serviceIdentifier);\n var request_1 = planner_1.createMockRequest(this, serviceIdentifier, key, value);\n bound = bindings.some(function (b) { return b.constraint(request_1); });\n }\n if (!bound && this.parent) {\n bound = this.parent.isBoundTagged(serviceIdentifier, key, value);\n }\n return bound;\n };\n Container.prototype.snapshot = function () {\n this._snapshots.push(container_snapshot_1.ContainerSnapshot.of(this._bindingDictionary.clone(), this._middleware));\n };\n Container.prototype.restore = function () {\n var snapshot = this._snapshots.pop();\n if (snapshot === undefined) {\n throw new Error(ERROR_MSGS.NO_MORE_SNAPSHOTS_AVAILABLE);\n }\n this._bindingDictionary = snapshot.bindings;\n this._middleware = snapshot.middleware;\n };\n Container.prototype.createChild = function (containerOptions) {\n var child = new Container(containerOptions || this.options);\n child.parent = this;\n return child;\n };\n Container.prototype.applyMiddleware = function () {\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n var initial = (this._middleware) ? this._middleware : this._planAndResolve();\n this._middleware = middlewares.reduce(function (prev, curr) { return curr(prev); }, initial);\n };\n Container.prototype.applyCustomMetadataReader = function (metadataReader) {\n this._metadataReader = metadataReader;\n };\n Container.prototype.get = function (serviceIdentifier) {\n return this._get(false, false, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier);\n };\n Container.prototype.getTagged = function (serviceIdentifier, key, value) {\n return this._get(false, false, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier, key, value);\n };\n Container.prototype.getNamed = function (serviceIdentifier, named) {\n return this.getTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.getAll = function (serviceIdentifier) {\n return this._get(true, true, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier);\n };\n Container.prototype.getAllTagged = function (serviceIdentifier, key, value) {\n return this._get(false, true, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier, key, value);\n };\n Container.prototype.getAllNamed = function (serviceIdentifier, named) {\n return this.getAllTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.resolve = function (constructorFunction) {\n var tempContainer = this.createChild();\n tempContainer.bind(constructorFunction).toSelf();\n return tempContainer.get(constructorFunction);\n };\n Container.prototype._getContainerModuleHelpersFactory = function () {\n var _this = this;\n var setModuleId = function (bindingToSyntax, moduleId) {\n bindingToSyntax._binding.moduleId = moduleId;\n };\n var getBindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _bind = _this.bind.bind(_this);\n var bindingToSyntax = _bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax;\n };\n };\n var getUnbindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _unbind = _this.unbind.bind(_this);\n _unbind(serviceIdentifier);\n };\n };\n var getIsboundFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _isBound = _this.isBound.bind(_this);\n return _isBound(serviceIdentifier);\n };\n };\n var getRebindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _rebind = _this.rebind.bind(_this);\n var bindingToSyntax = _rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax;\n };\n };\n return function (mId) { return ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(mId),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(mId)\n }); };\n };\n Container.prototype._get = function (avoidConstraints, isMultiInject, targetType, serviceIdentifier, key, value) {\n var result = null;\n var defaultArgs = {\n avoidConstraints: avoidConstraints,\n contextInterceptor: function (context) { return context; },\n isMultiInject: isMultiInject,\n key: key,\n serviceIdentifier: serviceIdentifier,\n targetType: targetType,\n value: value\n };\n if (this._middleware) {\n result = this._middleware(defaultArgs);\n if (result === undefined || result === null) {\n throw new Error(ERROR_MSGS.INVALID_MIDDLEWARE_RETURN);\n }\n }\n else {\n result = this._planAndResolve()(defaultArgs);\n }\n return result;\n };\n Container.prototype._planAndResolve = function () {\n var _this = this;\n return function (args) {\n var context = planner_1.plan(_this._metadataReader, _this, args.isMultiInject, args.targetType, args.serviceIdentifier, args.key, args.value, args.avoidConstraints);\n context = args.contextInterceptor(context);\n var result = resolver_1.resolve(context);\n return result;\n };\n };\n return Container;\n}());\nexports.Container = Container;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar id_1 = require(\"../utils/id\");\nvar ContainerModule = (function () {\n function ContainerModule(registry) {\n this.id = id_1.id();\n this.registry = registry;\n }\n return ContainerModule;\n}());\nexports.ContainerModule = ContainerModule;\nvar AsyncContainerModule = (function () {\n function AsyncContainerModule(registry) {\n this.id = id_1.id();\n this.registry = registry;\n }\n return AsyncContainerModule;\n}());\nexports.AsyncContainerModule = AsyncContainerModule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContainerSnapshot = (function () {\n function ContainerSnapshot() {\n }\n ContainerSnapshot.of = function (bindings, middleware) {\n var snapshot = new ContainerSnapshot();\n snapshot.bindings = bindings;\n snapshot.middleware = middleware;\n return snapshot;\n };\n return ContainerSnapshot;\n}());\nexports.ContainerSnapshot = ContainerSnapshot;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nvar Lookup = (function () {\n function Lookup() {\n this._map = new Map();\n }\n Lookup.prototype.getMap = function () {\n return this._map;\n };\n Lookup.prototype.add = function (serviceIdentifier, value) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n if (value === null || value === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n var entry = this._map.get(serviceIdentifier);\n if (entry !== undefined) {\n entry.push(value);\n this._map.set(serviceIdentifier, entry);\n }\n else {\n this._map.set(serviceIdentifier, [value]);\n }\n };\n Lookup.prototype.get = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n var entry = this._map.get(serviceIdentifier);\n if (entry !== undefined) {\n return entry;\n }\n else {\n throw new Error(ERROR_MSGS.KEY_NOT_FOUND);\n }\n };\n Lookup.prototype.remove = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n if (!this._map.delete(serviceIdentifier)) {\n throw new Error(ERROR_MSGS.KEY_NOT_FOUND);\n }\n };\n Lookup.prototype.removeByCondition = function (condition) {\n var _this = this;\n this._map.forEach(function (entries, key) {\n var updatedEntries = entries.filter(function (entry) { return !condition(entry); });\n if (updatedEntries.length > 0) {\n _this._map.set(key, updatedEntries);\n }\n else {\n _this._map.delete(key);\n }\n });\n };\n Lookup.prototype.hasKey = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n return this._map.has(serviceIdentifier);\n };\n Lookup.prototype.clone = function () {\n var copy = new Lookup();\n this._map.forEach(function (value, key) {\n value.forEach(function (b) { return copy.add(key, b.clone()); });\n });\n return copy;\n };\n Lookup.prototype.traverse = function (func) {\n this._map.forEach(function (value, key) {\n func(key, value);\n });\n };\n return Lookup;\n}());\nexports.Lookup = Lookup;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar keys = require(\"./constants/metadata_keys\");\nexports.METADATA_KEY = keys;\nvar container_1 = require(\"./container/container\");\nexports.Container = container_1.Container;\nvar literal_types_1 = require(\"./constants/literal_types\");\nexports.BindingScopeEnum = literal_types_1.BindingScopeEnum;\nexports.BindingTypeEnum = literal_types_1.BindingTypeEnum;\nexports.TargetTypeEnum = literal_types_1.TargetTypeEnum;\nvar container_module_1 = require(\"./container/container_module\");\nexports.AsyncContainerModule = container_module_1.AsyncContainerModule;\nexports.ContainerModule = container_module_1.ContainerModule;\nvar injectable_1 = require(\"./annotation/injectable\");\nexports.injectable = injectable_1.injectable;\nvar tagged_1 = require(\"./annotation/tagged\");\nexports.tagged = tagged_1.tagged;\nvar named_1 = require(\"./annotation/named\");\nexports.named = named_1.named;\nvar inject_1 = require(\"./annotation/inject\");\nexports.inject = inject_1.inject;\nexports.LazyServiceIdentifer = inject_1.LazyServiceIdentifer;\nvar optional_1 = require(\"./annotation/optional\");\nexports.optional = optional_1.optional;\nvar unmanaged_1 = require(\"./annotation/unmanaged\");\nexports.unmanaged = unmanaged_1.unmanaged;\nvar multi_inject_1 = require(\"./annotation/multi_inject\");\nexports.multiInject = multi_inject_1.multiInject;\nvar target_name_1 = require(\"./annotation/target_name\");\nexports.targetName = target_name_1.targetName;\nvar post_construct_1 = require(\"./annotation/post_construct\");\nexports.postConstruct = post_construct_1.postConstruct;\nvar metadata_reader_1 = require(\"./planning/metadata_reader\");\nexports.MetadataReader = metadata_reader_1.MetadataReader;\nvar id_1 = require(\"./utils/id\");\nexports.id = id_1.id;\nvar decorator_utils_1 = require(\"./annotation/decorator_utils\");\nexports.decorate = decorator_utils_1.decorate;\nvar constraint_helpers_1 = require(\"./syntax/constraint_helpers\");\nexports.traverseAncerstors = constraint_helpers_1.traverseAncerstors;\nexports.taggedConstraint = constraint_helpers_1.taggedConstraint;\nexports.namedConstraint = constraint_helpers_1.namedConstraint;\nexports.typeConstraint = constraint_helpers_1.typeConstraint;\nvar serialization_1 = require(\"./utils/serialization\");\nexports.getServiceIdentifierAsString = serialization_1.getServiceIdentifierAsString;\nvar binding_utils_1 = require(\"./utils/binding_utils\");\nexports.multiBindToService = binding_utils_1.multiBindToService;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar id_1 = require(\"../utils/id\");\nvar Context = (function () {\n function Context(container) {\n this.id = id_1.id();\n this.container = container;\n }\n Context.prototype.addPlan = function (plan) {\n this.plan = plan;\n };\n Context.prototype.setCurrentRequest = function (currentRequest) {\n this.currentRequest = currentRequest;\n };\n return Context;\n}());\nexports.Context = Context;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar Metadata = (function () {\n function Metadata(key, value) {\n this.key = key;\n this.value = value;\n }\n Metadata.prototype.toString = function () {\n if (this.key === METADATA_KEY.NAMED_TAG) {\n return \"named: \" + this.value.toString() + \" \";\n }\n else {\n return \"tagged: { key:\" + this.key.toString() + \", value: \" + this.value + \" }\";\n }\n };\n return Metadata;\n}());\nexports.Metadata = Metadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar MetadataReader = (function () {\n function MetadataReader() {\n }\n MetadataReader.prototype.getConstructorMetadata = function (constructorFunc) {\n var compilerGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.PARAM_TYPES, constructorFunc);\n var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED, constructorFunc);\n return {\n compilerGeneratedMetadata: compilerGeneratedMetadata,\n userGeneratedMetadata: userGeneratedMetadata || {}\n };\n };\n MetadataReader.prototype.getPropertiesMetadata = function (constructorFunc) {\n var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, constructorFunc) || [];\n return userGeneratedMetadata;\n };\n return MetadataReader;\n}());\nexports.MetadataReader = MetadataReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Plan = (function () {\n function Plan(parentContext, rootRequest) {\n this.parentContext = parentContext;\n this.rootRequest = rootRequest;\n }\n return Plan;\n}());\nexports.Plan = Plan;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binding_count_1 = require(\"../bindings/binding_count\");\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nvar literal_types_1 = require(\"../constants/literal_types\");\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar exceptions_1 = require(\"../utils/exceptions\");\nvar serialization_1 = require(\"../utils/serialization\");\nvar context_1 = require(\"./context\");\nvar metadata_1 = require(\"./metadata\");\nvar plan_1 = require(\"./plan\");\nvar reflection_utils_1 = require(\"./reflection_utils\");\nvar request_1 = require(\"./request\");\nvar target_1 = require(\"./target\");\nfunction getBindingDictionary(cntnr) {\n return cntnr._bindingDictionary;\n}\nexports.getBindingDictionary = getBindingDictionary;\nfunction _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) {\n var metadataKey = isMultiInject ? METADATA_KEY.MULTI_INJECT_TAG : METADATA_KEY.INJECT_TAG;\n var injectMetadata = new metadata_1.Metadata(metadataKey, serviceIdentifier);\n var target = new target_1.Target(targetType, name, serviceIdentifier, injectMetadata);\n if (key !== undefined) {\n var tagMetadata = new metadata_1.Metadata(key, value);\n target.metadata.push(tagMetadata);\n }\n return target;\n}\nfunction _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) {\n var bindings = getBindings(context.container, target.serviceIdentifier);\n var activeBindings = [];\n if (bindings.length === binding_count_1.BindingCount.NoBindingsAvailable &&\n context.container.options.autoBindInjectable &&\n typeof target.serviceIdentifier === \"function\" &&\n metadataReader.getConstructorMetadata(target.serviceIdentifier).compilerGeneratedMetadata) {\n context.container.bind(target.serviceIdentifier).toSelf();\n bindings = getBindings(context.container, target.serviceIdentifier);\n }\n if (!avoidConstraints) {\n activeBindings = bindings.filter(function (binding) {\n var request = new request_1.Request(binding.serviceIdentifier, context, parentRequest, binding, target);\n return binding.constraint(request);\n });\n }\n else {\n activeBindings = bindings;\n }\n _validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container);\n return activeBindings;\n}\nfunction _validateActiveBindingCount(serviceIdentifier, bindings, target, container) {\n switch (bindings.length) {\n case binding_count_1.BindingCount.NoBindingsAvailable:\n if (target.isOptional()) {\n return bindings;\n }\n else {\n var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier);\n var msg = ERROR_MSGS.NOT_REGISTERED;\n msg += serialization_1.listMetadataForTarget(serviceIdentifierString, target);\n msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);\n throw new Error(msg);\n }\n case binding_count_1.BindingCount.OnlyOneBindingAvailable:\n if (!target.isArray()) {\n return bindings;\n }\n case binding_count_1.BindingCount.MultipleBindingsAvailable:\n default:\n if (!target.isArray()) {\n var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier);\n var msg = ERROR_MSGS.AMBIGUOUS_MATCH + \" \" + serviceIdentifierString;\n msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);\n throw new Error(msg);\n }\n else {\n return bindings;\n }\n }\n}\nfunction _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, parentRequest, target) {\n var activeBindings;\n var childRequest;\n if (parentRequest === null) {\n activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, null, target);\n childRequest = new request_1.Request(serviceIdentifier, context, null, activeBindings, target);\n var thePlan = new plan_1.Plan(context, childRequest);\n context.addPlan(thePlan);\n }\n else {\n activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target);\n childRequest = parentRequest.addChildRequest(target.serviceIdentifier, activeBindings, target);\n }\n activeBindings.forEach(function (binding) {\n var subChildRequest = null;\n if (target.isArray()) {\n subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target);\n }\n else {\n if (binding.cache) {\n return;\n }\n subChildRequest = childRequest;\n }\n if (binding.type === literal_types_1.BindingTypeEnum.Instance && binding.implementationType !== null) {\n var dependencies = reflection_utils_1.getDependencies(metadataReader, binding.implementationType);\n if (!context.container.options.skipBaseClassChecks) {\n var baseClassDependencyCount = reflection_utils_1.getBaseClassDependencyCount(metadataReader, binding.implementationType);\n if (dependencies.length < baseClassDependencyCount) {\n var error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH(reflection_utils_1.getFunctionName(binding.implementationType));\n throw new Error(error);\n }\n }\n dependencies.forEach(function (dependency) {\n _createSubRequests(metadataReader, false, dependency.serviceIdentifier, context, subChildRequest, dependency);\n });\n }\n });\n}\nfunction getBindings(container, serviceIdentifier) {\n var bindings = [];\n var bindingDictionary = getBindingDictionary(container);\n if (bindingDictionary.hasKey(serviceIdentifier)) {\n bindings = bindingDictionary.get(serviceIdentifier);\n }\n else if (container.parent !== null) {\n bindings = getBindings(container.parent, serviceIdentifier);\n }\n return bindings;\n}\nfunction plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints) {\n if (avoidConstraints === void 0) { avoidConstraints = false; }\n var context = new context_1.Context(container);\n var target = _createTarget(isMultiInject, targetType, serviceIdentifier, \"\", key, value);\n try {\n _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, null, target);\n return context;\n }\n catch (error) {\n if (exceptions_1.isStackOverflowExeption(error)) {\n if (context.plan) {\n serialization_1.circularDependencyToException(context.plan.rootRequest);\n }\n }\n throw error;\n }\n}\nexports.plan = plan;\nfunction createMockRequest(container, serviceIdentifier, key, value) {\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.Variable, \"\", serviceIdentifier, new metadata_1.Metadata(key, value));\n var context = new context_1.Context(container);\n var request = new request_1.Request(serviceIdentifier, context, null, [], target);\n return request;\n}\nexports.createMockRequest = createMockRequest;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar QueryableString = (function () {\n function QueryableString(str) {\n this.str = str;\n }\n QueryableString.prototype.startsWith = function (searchString) {\n return this.str.indexOf(searchString) === 0;\n };\n QueryableString.prototype.endsWith = function (searchString) {\n var reverseString = \"\";\n var reverseSearchString = searchString.split(\"\").reverse().join(\"\");\n reverseString = this.str.split(\"\").reverse().join(\"\");\n return this.startsWith.call({ str: reverseString }, reverseSearchString);\n };\n QueryableString.prototype.contains = function (searchString) {\n return (this.str.indexOf(searchString) !== -1);\n };\n QueryableString.prototype.equals = function (compareString) {\n return this.str === compareString;\n };\n QueryableString.prototype.value = function () {\n return this.str;\n };\n return QueryableString;\n}());\nexports.QueryableString = QueryableString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar inject_1 = require(\"../annotation/inject\");\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nvar literal_types_1 = require(\"../constants/literal_types\");\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar serialization_1 = require(\"../utils/serialization\");\nexports.getFunctionName = serialization_1.getFunctionName;\nvar target_1 = require(\"./target\");\nfunction getDependencies(metadataReader, func) {\n var constructorName = serialization_1.getFunctionName(func);\n var targets = getTargets(metadataReader, constructorName, func, false);\n return targets;\n}\nexports.getDependencies = getDependencies;\nfunction getTargets(metadataReader, constructorName, func, isBaseClass) {\n var metadata = metadataReader.getConstructorMetadata(func);\n var serviceIdentifiers = metadata.compilerGeneratedMetadata;\n if (serviceIdentifiers === undefined) {\n var msg = ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION + \" \" + constructorName + \".\";\n throw new Error(msg);\n }\n var constructorArgsMetadata = metadata.userGeneratedMetadata;\n var keys = Object.keys(constructorArgsMetadata);\n var hasUserDeclaredUnknownInjections = (func.length === 0 && keys.length > 0);\n var iterations = (hasUserDeclaredUnknownInjections) ? keys.length : func.length;\n var constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations);\n var propertyTargets = getClassPropsAsTargets(metadataReader, func);\n var targets = constructorTargets.concat(propertyTargets);\n return targets;\n}\nfunction getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) {\n var targetMetadata = constructorArgsMetadata[index.toString()] || [];\n var metadata = formatTargetMetadata(targetMetadata);\n var isManaged = metadata.unmanaged !== true;\n var serviceIdentifier = serviceIdentifiers[index];\n var injectIdentifier = (metadata.inject || metadata.multiInject);\n serviceIdentifier = (injectIdentifier) ? (injectIdentifier) : serviceIdentifier;\n if (serviceIdentifier instanceof inject_1.LazyServiceIdentifer) {\n serviceIdentifier = serviceIdentifier.unwrap();\n }\n if (isManaged) {\n var isObject = serviceIdentifier === Object;\n var isFunction = serviceIdentifier === Function;\n var isUndefined = serviceIdentifier === undefined;\n var isUnknownType = (isObject || isFunction || isUndefined);\n if (!isBaseClass && isUnknownType) {\n var msg = ERROR_MSGS.MISSING_INJECT_ANNOTATION + \" argument \" + index + \" in class \" + constructorName + \".\";\n throw new Error(msg);\n }\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.ConstructorArgument, metadata.targetName, serviceIdentifier);\n target.metadata = targetMetadata;\n return target;\n }\n return null;\n}\nfunction getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations) {\n var targets = [];\n for (var i = 0; i < iterations; i++) {\n var index = i;\n var target = getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata);\n if (target !== null) {\n targets.push(target);\n }\n }\n return targets;\n}\nfunction getClassPropsAsTargets(metadataReader, constructorFunc) {\n var classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc);\n var targets = [];\n var keys = Object.keys(classPropsMetadata);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var targetMetadata = classPropsMetadata[key];\n var metadata = formatTargetMetadata(classPropsMetadata[key]);\n var targetName = metadata.targetName || key;\n var serviceIdentifier = (metadata.inject || metadata.multiInject);\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.ClassProperty, targetName, serviceIdentifier);\n target.metadata = targetMetadata;\n targets.push(target);\n }\n var baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor;\n if (baseConstructor !== Object) {\n var baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor);\n targets = targets.concat(baseTargets);\n }\n return targets;\n}\nfunction getBaseClassDependencyCount(metadataReader, func) {\n var baseConstructor = Object.getPrototypeOf(func.prototype).constructor;\n if (baseConstructor !== Object) {\n var baseConstructorName = serialization_1.getFunctionName(baseConstructor);\n var targets = getTargets(metadataReader, baseConstructorName, baseConstructor, true);\n var metadata = targets.map(function (t) {\n return t.metadata.filter(function (m) {\n return m.key === METADATA_KEY.UNMANAGED_TAG;\n });\n });\n var unmanagedCount = [].concat.apply([], metadata).length;\n var dependencyCount = targets.length - unmanagedCount;\n if (dependencyCount > 0) {\n return dependencyCount;\n }\n else {\n return getBaseClassDependencyCount(metadataReader, baseConstructor);\n }\n }\n else {\n return 0;\n }\n}\nexports.getBaseClassDependencyCount = getBaseClassDependencyCount;\nfunction formatTargetMetadata(targetMetadata) {\n var targetMetadataMap = {};\n targetMetadata.forEach(function (m) {\n targetMetadataMap[m.key.toString()] = m.value;\n });\n return {\n inject: targetMetadataMap[METADATA_KEY.INJECT_TAG],\n multiInject: targetMetadataMap[METADATA_KEY.MULTI_INJECT_TAG],\n targetName: targetMetadataMap[METADATA_KEY.NAME_TAG],\n unmanaged: targetMetadataMap[METADATA_KEY.UNMANAGED_TAG]\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar id_1 = require(\"../utils/id\");\nvar Request = (function () {\n function Request(serviceIdentifier, parentContext, parentRequest, bindings, target) {\n this.id = id_1.id();\n this.serviceIdentifier = serviceIdentifier;\n this.parentContext = parentContext;\n this.parentRequest = parentRequest;\n this.target = target;\n this.childRequests = [];\n this.bindings = (Array.isArray(bindings) ? bindings : [bindings]);\n this.requestScope = parentRequest === null\n ? new Map()\n : null;\n }\n Request.prototype.addChildRequest = function (serviceIdentifier, bindings, target) {\n var child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);\n this.childRequests.push(child);\n return child;\n };\n return Request;\n}());\nexports.Request = Request;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar id_1 = require(\"../utils/id\");\nvar metadata_1 = require(\"./metadata\");\nvar queryable_string_1 = require(\"./queryable_string\");\nvar Target = (function () {\n function Target(type, name, serviceIdentifier, namedOrTagged) {\n this.id = id_1.id();\n this.type = type;\n this.serviceIdentifier = serviceIdentifier;\n this.name = new queryable_string_1.QueryableString(name || \"\");\n this.metadata = new Array();\n var metadataItem = null;\n if (typeof namedOrTagged === \"string\") {\n metadataItem = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged);\n }\n else if (namedOrTagged instanceof metadata_1.Metadata) {\n metadataItem = namedOrTagged;\n }\n if (metadataItem !== null) {\n this.metadata.push(metadataItem);\n }\n }\n Target.prototype.hasTag = function (key) {\n for (var _i = 0, _a = this.metadata; _i < _a.length; _i++) {\n var m = _a[_i];\n if (m.key === key) {\n return true;\n }\n }\n return false;\n };\n Target.prototype.isArray = function () {\n return this.hasTag(METADATA_KEY.MULTI_INJECT_TAG);\n };\n Target.prototype.matchesArray = function (name) {\n return this.matchesTag(METADATA_KEY.MULTI_INJECT_TAG)(name);\n };\n Target.prototype.isNamed = function () {\n return this.hasTag(METADATA_KEY.NAMED_TAG);\n };\n Target.prototype.isTagged = function () {\n return this.metadata.some(function (m) {\n return (m.key !== METADATA_KEY.INJECT_TAG) &&\n (m.key !== METADATA_KEY.MULTI_INJECT_TAG) &&\n (m.key !== METADATA_KEY.NAME_TAG) &&\n (m.key !== METADATA_KEY.UNMANAGED_TAG) &&\n (m.key !== METADATA_KEY.NAMED_TAG);\n });\n };\n Target.prototype.isOptional = function () {\n return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true);\n };\n Target.prototype.getNamedTag = function () {\n if (this.isNamed()) {\n return this.metadata.filter(function (m) { return m.key === METADATA_KEY.NAMED_TAG; })[0];\n }\n return null;\n };\n Target.prototype.getCustomTags = function () {\n if (this.isTagged()) {\n return this.metadata.filter(function (m) {\n return (m.key !== METADATA_KEY.INJECT_TAG) &&\n (m.key !== METADATA_KEY.MULTI_INJECT_TAG) &&\n (m.key !== METADATA_KEY.NAME_TAG) &&\n (m.key !== METADATA_KEY.UNMANAGED_TAG) &&\n (m.key !== METADATA_KEY.NAMED_TAG);\n });\n }\n return null;\n };\n Target.prototype.matchesNamedTag = function (name) {\n return this.matchesTag(METADATA_KEY.NAMED_TAG)(name);\n };\n Target.prototype.matchesTag = function (key) {\n var _this = this;\n return function (value) {\n for (var _i = 0, _a = _this.metadata; _i < _a.length; _i++) {\n var m = _a[_i];\n if (m.key === key && m.value === value) {\n return true;\n }\n }\n return false;\n };\n };\n return Target;\n}());\nexports.Target = Target;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar error_msgs_1 = require(\"../constants/error_msgs\");\nvar literal_types_1 = require(\"../constants/literal_types\");\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nfunction _injectProperties(instance, childRequests, resolveRequest) {\n var propertyInjectionsRequests = childRequests.filter(function (childRequest) {\n return (childRequest.target !== null &&\n childRequest.target.type === literal_types_1.TargetTypeEnum.ClassProperty);\n });\n var propertyInjections = propertyInjectionsRequests.map(resolveRequest);\n propertyInjectionsRequests.forEach(function (r, index) {\n var propertyName = \"\";\n propertyName = r.target.name.value();\n var injection = propertyInjections[index];\n instance[propertyName] = injection;\n });\n return instance;\n}\nfunction _createInstance(Func, injections) {\n return new (Func.bind.apply(Func, [void 0].concat(injections)))();\n}\nfunction _postConstruct(constr, result) {\n if (Reflect.hasMetadata(METADATA_KEY.POST_CONSTRUCT, constr)) {\n var data = Reflect.getMetadata(METADATA_KEY.POST_CONSTRUCT, constr);\n try {\n result[data.value]();\n }\n catch (e) {\n throw new Error(error_msgs_1.POST_CONSTRUCT_ERROR(constr.name, e.message));\n }\n }\n}\nfunction resolveInstance(constr, childRequests, resolveRequest) {\n var result = null;\n if (childRequests.length > 0) {\n var constructorInjectionsRequests = childRequests.filter(function (childRequest) {\n return (childRequest.target !== null && childRequest.target.type === literal_types_1.TargetTypeEnum.ConstructorArgument);\n });\n var constructorInjections = constructorInjectionsRequests.map(resolveRequest);\n result = _createInstance(constr, constructorInjections);\n result = _injectProperties(result, childRequests, resolveRequest);\n }\n else {\n result = new constr();\n }\n _postConstruct(constr, result);\n return result;\n}\nexports.resolveInstance = resolveInstance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nvar literal_types_1 = require(\"../constants/literal_types\");\nvar exceptions_1 = require(\"../utils/exceptions\");\nvar serialization_1 = require(\"../utils/serialization\");\nvar instantiation_1 = require(\"./instantiation\");\nvar invokeFactory = function (factoryType, serviceIdentifier, fn) {\n try {\n return fn();\n }\n catch (error) {\n if (exceptions_1.isStackOverflowExeption(error)) {\n throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(factoryType, serviceIdentifier.toString()));\n }\n else {\n throw error;\n }\n }\n};\nvar _resolveRequest = function (requestScope) {\n return function (request) {\n request.parentContext.setCurrentRequest(request);\n var bindings = request.bindings;\n var childRequests = request.childRequests;\n var targetIsAnArray = request.target && request.target.isArray();\n var targetParentIsNotAnArray = !request.parentRequest ||\n !request.parentRequest.target ||\n !request.target ||\n !request.parentRequest.target.matchesArray(request.target.serviceIdentifier);\n if (targetIsAnArray && targetParentIsNotAnArray) {\n return childRequests.map(function (childRequest) {\n var _f = _resolveRequest(requestScope);\n return _f(childRequest);\n });\n }\n else {\n var result = null;\n if (request.target.isOptional() && bindings.length === 0) {\n return undefined;\n }\n var binding_1 = bindings[0];\n var isSingleton = binding_1.scope === literal_types_1.BindingScopeEnum.Singleton;\n var isRequestSingleton = binding_1.scope === literal_types_1.BindingScopeEnum.Request;\n if (isSingleton && binding_1.activated) {\n return binding_1.cache;\n }\n if (isRequestSingleton &&\n requestScope !== null &&\n requestScope.has(binding_1.id)) {\n return requestScope.get(binding_1.id);\n }\n if (binding_1.type === literal_types_1.BindingTypeEnum.ConstantValue) {\n result = binding_1.cache;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Function) {\n result = binding_1.cache;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Constructor) {\n result = binding_1.implementationType;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.DynamicValue && binding_1.dynamicValue !== null) {\n result = invokeFactory(\"toDynamicValue\", binding_1.serviceIdentifier, function () { return binding_1.dynamicValue(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Factory && binding_1.factory !== null) {\n result = invokeFactory(\"toFactory\", binding_1.serviceIdentifier, function () { return binding_1.factory(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Provider && binding_1.provider !== null) {\n result = invokeFactory(\"toProvider\", binding_1.serviceIdentifier, function () { return binding_1.provider(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Instance && binding_1.implementationType !== null) {\n result = instantiation_1.resolveInstance(binding_1.implementationType, childRequests, _resolveRequest(requestScope));\n }\n else {\n var serviceIdentifier = serialization_1.getServiceIdentifierAsString(request.serviceIdentifier);\n throw new Error(ERROR_MSGS.INVALID_BINDING_TYPE + \" \" + serviceIdentifier);\n }\n if (typeof binding_1.onActivation === \"function\") {\n result = binding_1.onActivation(request.parentContext, result);\n }\n if (isSingleton) {\n binding_1.cache = result;\n binding_1.activated = true;\n }\n if (isRequestSingleton &&\n requestScope !== null &&\n !requestScope.has(binding_1.id)) {\n requestScope.set(binding_1.id, result);\n }\n return result;\n }\n };\n};\nfunction resolve(context) {\n var _f = _resolveRequest(context.plan.rootRequest.requestScope);\n return _f(context.plan.rootRequest);\n}\nexports.resolve = resolve;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar literal_types_1 = require(\"../constants/literal_types\");\nvar binding_when_on_syntax_1 = require(\"./binding_when_on_syntax\");\nvar BindingInSyntax = (function () {\n function BindingInSyntax(binding) {\n this._binding = binding;\n }\n BindingInSyntax.prototype.inRequestScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Request;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingInSyntax.prototype.inSingletonScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingInSyntax.prototype.inTransientScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Transient;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n return BindingInSyntax;\n}());\nexports.BindingInSyntax = BindingInSyntax;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binding_in_syntax_1 = require(\"./binding_in_syntax\");\nvar binding_on_syntax_1 = require(\"./binding_on_syntax\");\nvar binding_when_syntax_1 = require(\"./binding_when_syntax\");\nvar BindingInWhenOnSyntax = (function () {\n function BindingInWhenOnSyntax(binding) {\n this._binding = binding;\n this._bindingWhenSyntax = new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n this._bindingOnSyntax = new binding_on_syntax_1.BindingOnSyntax(this._binding);\n this._bindingInSyntax = new binding_in_syntax_1.BindingInSyntax(binding);\n }\n BindingInWhenOnSyntax.prototype.inRequestScope = function () {\n return this._bindingInSyntax.inRequestScope();\n };\n BindingInWhenOnSyntax.prototype.inSingletonScope = function () {\n return this._bindingInSyntax.inSingletonScope();\n };\n BindingInWhenOnSyntax.prototype.inTransientScope = function () {\n return this._bindingInSyntax.inTransientScope();\n };\n BindingInWhenOnSyntax.prototype.when = function (constraint) {\n return this._bindingWhenSyntax.when(constraint);\n };\n BindingInWhenOnSyntax.prototype.whenTargetNamed = function (name) {\n return this._bindingWhenSyntax.whenTargetNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenTargetIsDefault = function () {\n return this._bindingWhenSyntax.whenTargetIsDefault();\n };\n BindingInWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenTargetTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenInjectedInto = function (parent) {\n return this._bindingWhenSyntax.whenInjectedInto(parent);\n };\n BindingInWhenOnSyntax.prototype.whenParentNamed = function (name) {\n return this._bindingWhenSyntax.whenParentNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenParentTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenParentTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenNoAncestorIs(ancestor);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenAnyAncestorNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenNoAncestorNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenNoAncestorMatches(constraint);\n };\n BindingInWhenOnSyntax.prototype.onActivation = function (handler) {\n return this._bindingOnSyntax.onActivation(handler);\n };\n return BindingInWhenOnSyntax;\n}());\nexports.BindingInWhenOnSyntax = BindingInWhenOnSyntax;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binding_when_syntax_1 = require(\"./binding_when_syntax\");\nvar BindingOnSyntax = (function () {\n function BindingOnSyntax(binding) {\n this._binding = binding;\n }\n BindingOnSyntax.prototype.onActivation = function (handler) {\n this._binding.onActivation = handler;\n return new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n };\n return BindingOnSyntax;\n}());\nexports.BindingOnSyntax = BindingOnSyntax;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nvar literal_types_1 = require(\"../constants/literal_types\");\nvar binding_in_when_on_syntax_1 = require(\"./binding_in_when_on_syntax\");\nvar binding_when_on_syntax_1 = require(\"./binding_when_on_syntax\");\nvar BindingToSyntax = (function () {\n function BindingToSyntax(binding) {\n this._binding = binding;\n }\n BindingToSyntax.prototype.to = function (constructor) {\n this._binding.type = literal_types_1.BindingTypeEnum.Instance;\n this._binding.implementationType = constructor;\n return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toSelf = function () {\n if (typeof this._binding.serviceIdentifier !== \"function\") {\n throw new Error(\"\" + ERROR_MSGS.INVALID_TO_SELF_VALUE);\n }\n var self = this._binding.serviceIdentifier;\n return this.to(self);\n };\n BindingToSyntax.prototype.toConstantValue = function (value) {\n this._binding.type = literal_types_1.BindingTypeEnum.ConstantValue;\n this._binding.cache = value;\n this._binding.dynamicValue = null;\n this._binding.implementationType = null;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toDynamicValue = function (func) {\n this._binding.type = literal_types_1.BindingTypeEnum.DynamicValue;\n this._binding.cache = null;\n this._binding.dynamicValue = func;\n this._binding.implementationType = null;\n return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toConstructor = function (constructor) {\n this._binding.type = literal_types_1.BindingTypeEnum.Constructor;\n this._binding.implementationType = constructor;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toFactory = function (factory) {\n this._binding.type = literal_types_1.BindingTypeEnum.Factory;\n this._binding.factory = factory;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toFunction = function (func) {\n if (typeof func !== \"function\") {\n throw new Error(ERROR_MSGS.INVALID_FUNCTION_BINDING);\n }\n var bindingWhenOnSyntax = this.toConstantValue(func);\n this._binding.type = literal_types_1.BindingTypeEnum.Function;\n return bindingWhenOnSyntax;\n };\n BindingToSyntax.prototype.toAutoFactory = function (serviceIdentifier) {\n this._binding.type = literal_types_1.BindingTypeEnum.Factory;\n this._binding.factory = function (context) {\n var autofactory = function () { return context.container.get(serviceIdentifier); };\n return autofactory;\n };\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toProvider = function (provider) {\n this._binding.type = literal_types_1.BindingTypeEnum.Provider;\n this._binding.provider = provider;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toService = function (service) {\n this.toDynamicValue(function (context) { return context.container.get(service); });\n };\n return BindingToSyntax;\n}());\nexports.BindingToSyntax = BindingToSyntax;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binding_on_syntax_1 = require(\"./binding_on_syntax\");\nvar binding_when_syntax_1 = require(\"./binding_when_syntax\");\nvar BindingWhenOnSyntax = (function () {\n function BindingWhenOnSyntax(binding) {\n this._binding = binding;\n this._bindingWhenSyntax = new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n this._bindingOnSyntax = new binding_on_syntax_1.BindingOnSyntax(this._binding);\n }\n BindingWhenOnSyntax.prototype.when = function (constraint) {\n return this._bindingWhenSyntax.when(constraint);\n };\n BindingWhenOnSyntax.prototype.whenTargetNamed = function (name) {\n return this._bindingWhenSyntax.whenTargetNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenTargetIsDefault = function () {\n return this._bindingWhenSyntax.whenTargetIsDefault();\n };\n BindingWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenTargetTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenInjectedInto = function (parent) {\n return this._bindingWhenSyntax.whenInjectedInto(parent);\n };\n BindingWhenOnSyntax.prototype.whenParentNamed = function (name) {\n return this._bindingWhenSyntax.whenParentNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenParentTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenParentTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenNoAncestorIs(ancestor);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenAnyAncestorNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenNoAncestorNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenNoAncestorMatches(constraint);\n };\n BindingWhenOnSyntax.prototype.onActivation = function (handler) {\n return this._bindingOnSyntax.onActivation(handler);\n };\n return BindingWhenOnSyntax;\n}());\nexports.BindingWhenOnSyntax = BindingWhenOnSyntax;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binding_on_syntax_1 = require(\"./binding_on_syntax\");\nvar constraint_helpers_1 = require(\"./constraint_helpers\");\nvar BindingWhenSyntax = (function () {\n function BindingWhenSyntax(binding) {\n this._binding = binding;\n }\n BindingWhenSyntax.prototype.when = function (constraint) {\n this._binding.constraint = constraint;\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetNamed = function (name) {\n this._binding.constraint = constraint_helpers_1.namedConstraint(name);\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetIsDefault = function () {\n this._binding.constraint = function (request) {\n var targetIsDefault = (request.target !== null) &&\n (!request.target.isNamed()) &&\n (!request.target.isTagged());\n return targetIsDefault;\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetTagged = function (tag, value) {\n this._binding.constraint = constraint_helpers_1.taggedConstraint(tag)(value);\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenInjectedInto = function (parent) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.typeConstraint(parent)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenParentNamed = function (name) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.namedConstraint(name)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenParentTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.taggedConstraint(tag)(value)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.typeConstraint(ancestor));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.typeConstraint(ancestor));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorNamed = function (name) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.namedConstraint(name));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorNamed = function (name) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.namedConstraint(name));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.taggedConstraint(tag)(value));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.taggedConstraint(tag)(value));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n return BindingWhenSyntax;\n}());\nexports.BindingWhenSyntax = BindingWhenSyntax;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar METADATA_KEY = require(\"../constants/metadata_keys\");\nvar metadata_1 = require(\"../planning/metadata\");\nvar traverseAncerstors = function (request, constraint) {\n var parent = request.parentRequest;\n if (parent !== null) {\n return constraint(parent) ? true : traverseAncerstors(parent, constraint);\n }\n else {\n return false;\n }\n};\nexports.traverseAncerstors = traverseAncerstors;\nvar taggedConstraint = function (key) { return function (value) {\n var constraint = function (request) {\n return request !== null && request.target !== null && request.target.matchesTag(key)(value);\n };\n constraint.metaData = new metadata_1.Metadata(key, value);\n return constraint;\n}; };\nexports.taggedConstraint = taggedConstraint;\nvar namedConstraint = taggedConstraint(METADATA_KEY.NAMED_TAG);\nexports.namedConstraint = namedConstraint;\nvar typeConstraint = function (type) { return function (request) {\n var binding = null;\n if (request !== null) {\n binding = request.bindings[0];\n if (typeof type === \"string\") {\n var serviceIdentifier = binding.serviceIdentifier;\n return serviceIdentifier === type;\n }\n else {\n var constructor = request.bindings[0].implementationType;\n return type === constructor;\n }\n }\n return false;\n}; };\nexports.typeConstraint = typeConstraint;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiBindToService = function (container) {\n return function (service) {\n return function () {\n var types = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n types[_i] = arguments[_i];\n }\n return types.forEach(function (t) { return container.bind(t).toService(service); });\n };\n };\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nfunction isStackOverflowExeption(error) {\n return (error instanceof RangeError ||\n error.message === ERROR_MSGS.STACK_OVERFLOW);\n}\nexports.isStackOverflowExeption = isStackOverflowExeption;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar idCounter = 0;\nfunction id() {\n return idCounter++;\n}\nexports.id = id;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ERROR_MSGS = require(\"../constants/error_msgs\");\nfunction getServiceIdentifierAsString(serviceIdentifier) {\n if (typeof serviceIdentifier === \"function\") {\n var _serviceIdentifier = serviceIdentifier;\n return _serviceIdentifier.name;\n }\n else if (typeof serviceIdentifier === \"symbol\") {\n return serviceIdentifier.toString();\n }\n else {\n var _serviceIdentifier = serviceIdentifier;\n return _serviceIdentifier;\n }\n}\nexports.getServiceIdentifierAsString = getServiceIdentifierAsString;\nfunction listRegisteredBindingsForServiceIdentifier(container, serviceIdentifier, getBindings) {\n var registeredBindingsList = \"\";\n var registeredBindings = getBindings(container, serviceIdentifier);\n if (registeredBindings.length !== 0) {\n registeredBindingsList = \"\\nRegistered bindings:\";\n registeredBindings.forEach(function (binding) {\n var name = \"Object\";\n if (binding.implementationType !== null) {\n name = getFunctionName(binding.implementationType);\n }\n registeredBindingsList = registeredBindingsList + \"\\n \" + name;\n if (binding.constraint.metaData) {\n registeredBindingsList = registeredBindingsList + \" - \" + binding.constraint.metaData;\n }\n });\n }\n return registeredBindingsList;\n}\nexports.listRegisteredBindingsForServiceIdentifier = listRegisteredBindingsForServiceIdentifier;\nfunction alreadyDependencyChain(request, serviceIdentifier) {\n if (request.parentRequest === null) {\n return false;\n }\n else if (request.parentRequest.serviceIdentifier === serviceIdentifier) {\n return true;\n }\n else {\n return alreadyDependencyChain(request.parentRequest, serviceIdentifier);\n }\n}\nfunction dependencyChainToString(request) {\n function _createStringArr(req, result) {\n if (result === void 0) { result = []; }\n var serviceIdentifier = getServiceIdentifierAsString(req.serviceIdentifier);\n result.push(serviceIdentifier);\n if (req.parentRequest !== null) {\n return _createStringArr(req.parentRequest, result);\n }\n return result;\n }\n var stringArr = _createStringArr(request);\n return stringArr.reverse().join(\" --> \");\n}\nfunction circularDependencyToException(request) {\n request.childRequests.forEach(function (childRequest) {\n if (alreadyDependencyChain(childRequest, childRequest.serviceIdentifier)) {\n var services = dependencyChainToString(childRequest);\n throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY + \" \" + services);\n }\n else {\n circularDependencyToException(childRequest);\n }\n });\n}\nexports.circularDependencyToException = circularDependencyToException;\nfunction listMetadataForTarget(serviceIdentifierString, target) {\n if (target.isTagged() || target.isNamed()) {\n var m_1 = \"\";\n var namedTag = target.getNamedTag();\n var otherTags = target.getCustomTags();\n if (namedTag !== null) {\n m_1 += namedTag.toString() + \"\\n\";\n }\n if (otherTags !== null) {\n otherTags.forEach(function (tag) {\n m_1 += tag.toString() + \"\\n\";\n });\n }\n return \" \" + serviceIdentifierString + \"\\n \" + serviceIdentifierString + \" - \" + m_1;\n }\n else {\n return \" \" + serviceIdentifierString;\n }\n}\nexports.listMetadataForTarget = listMetadataForTarget;\nfunction getFunctionName(v) {\n if (v.name) {\n return v.name;\n }\n else {\n var name_1 = v.toString();\n var match = name_1.match(/^function\\s*([^\\s(]+)/);\n return match ? match[1] : \"Anonymous function: \" + name_1;\n }\n}\nexports.getFunctionName = getFunctionName;\n","var json = typeof JSON !== 'undefined' ? JSON : require('jsonify');\n\nmodule.exports = function (obj, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var space = opts.space || '';\n if (typeof space === 'number') space = Array(space+1).join(' ');\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n var replacer = opts.replacer || function(key, value) { return value; };\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (parent, key, node, level) {\n var indent = space ? ('\\n' + new Array(level + 1).join(space)) : '';\n var colonSeparator = space ? ': ' : ':';\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n node = replacer.call(parent, key, node);\n\n if (node === undefined) {\n return;\n }\n if (typeof node !== 'object' || node === null) {\n return json.stringify(node);\n }\n if (isArray(node)) {\n var out = [];\n for (var i = 0; i < node.length; i++) {\n var item = stringify(node, i, node[i], level+1) || json.stringify(null);\n out.push(indent + space + item);\n }\n return '[' + out.join(',') + indent + ']';\n }\n else {\n if (seen.indexOf(node) !== -1) {\n if (cycles) return json.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n else seen.push(node);\n\n var keys = objectKeys(node).sort(cmp && cmp(node));\n var out = [];\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node, key, node[key], level+1);\n\n if(!value) continue;\n\n var keyValue = json.stringify(key)\n + colonSeparator\n + value;\n ;\n out.push(indent + space + keyValue);\n }\n seen.splice(seen.indexOf(node), 1);\n return '{' + out.join(',') + indent + '}';\n }\n })({ '': obj }, '', obj, 0);\n};\n\nvar isArray = Array.isArray || function (x) {\n return {}.toString.call(x) === '[object Array]';\n};\n\nvar objectKeys = Object.keys || function (obj) {\n var has = Object.prototype.hasOwnProperty || function () { return true };\n var keys = [];\n for (var key in obj) {\n if (has.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","exports.parse = require('./lib/parse');\nexports.stringify = require('./lib/stringify');\n","var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n },\n text,\n\n error = function (m) {\n // Call error when something is wrong.\n throw {\n name: 'SyntaxError',\n message: m,\n at: at,\n text: text\n };\n },\n \n next = function (c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n }\n \n // Get the next character. When there are no more characters,\n // return the empty string.\n \n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n \n number = function () {\n // Parse a number value.\n var number,\n string = '';\n \n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error(\"Bad number\");\n } else {\n return number;\n }\n },\n \n string = function () {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n \n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n } else if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error(\"Bad string\");\n },\n\n white = function () {\n\n// Skip whitespace.\n\n while (ch && ch <= ' ') {\n next();\n }\n },\n\n word = function () {\n\n// true, false, or null.\n\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error(\"Unexpected '\" + ch + \"'\");\n },\n\n value, // Place holder for the value function.\n\n array = function () {\n\n// Parse an array value.\n\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error(\"Bad array\");\n },\n\n object = function () {\n\n// Parse an object value.\n\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error(\"Bad object\");\n };\n\nvalue = function () {\n\n// Parse a JSON value. It could be an object, an array, a string, a number,\n// or a word.\n\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n};\n\n// Return the json_parse function. It will have access to all of the above\n// functions and variables.\n\nmodule.exports = function (source, reviver) {\n var result;\n \n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error(\"Syntax error\");\n }\n\n // If there is a reviver function, we recursively walk the new structure,\n // passing each name/value pair to the reviver function for possible\n // transformation, starting with a temporary root object that holds the result\n // in an empty key. If there is not a reviver function, we simply return the\n // result.\n\n return typeof reviver === 'function' ? (function walk(holder, key) {\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }({'': result}, '')) : result;\n};\n","var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\nfunction quote(string) {\n // If the string contains no control characters, no quote characters, and no\n // backslash characters, then we can safely slap some quotes around it.\n // Otherwise we must also replace the offending characters with safe escape\n // sequences.\n \n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n}\n\nfunction str(key, holder) {\n // Produce a string from holder[key].\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n \n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n \n // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n \n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n \n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n \n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n \n case 'object':\n if (!value) return 'null';\n gap += indent;\n partial = [];\n \n // Array.isArray\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n \n // Join all of the elements together, separated with commas, and\n // wrap them in brackets.\n v = partial.length === 0 ? '[]' : gap ?\n '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n \n // If the replacer is an array, use it to select the members to be\n // stringified.\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n k = rep[i];\n if (typeof k === 'string') {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n else {\n // Otherwise, iterate through all of the keys in the object.\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n \n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\n v = partial.length === 0 ? '{}' : gap ?\n '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\n '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n}\n\nmodule.exports = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n \n // If the space parameter is a number, make an indent string containing that\n // many spaces.\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n }\n // If the space parameter is a string, it will be used as the indent string.\n else if (typeof space === 'string') {\n indent = space;\n }\n\n // If there is a replacer, it must be a function or an array.\n // Otherwise, throw an error.\n rep = replacer;\n if (replacer && typeof replacer !== 'function'\n && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n \n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {'': value});\n};\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathStripped = path.replace(/^(css|img)!/, ''),\n isCss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(path)) {\n isCss = true;\n\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped; //.replace(/^css!/, ''); // remove \"css!\" prefix\n } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // Note: The following code isolates IE using `hideFocus` and treats empty\n // stylesheets as failures to get around lack of onerror support\n if (isCss && 'hideFocus' in e) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n }\n\n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function)} [arg1] - The bundleId or success callback\n * @param {Function} [arg2] - The success or error callback\n * @param {Function} [arg3] - The error callback\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n // load scripts\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array ? array.length : 0,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nfunction unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n}\n\n/**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nvar zip = baseRest(unzip);\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = zip;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.7.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),ba=require(\"scheduler\");function ca(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var k=[c,d,e,f,g,h],l=0;a=Error(b.replace(/%s/g,function(){return k[l++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction t(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;dthis.eventPool.length&&this.eventPool.push(a)}\nfunction jb(a){a.eventPool=[];a.getPooled=kb;a.release=lb}var mb=z.extend({data:null}),nb=z.extend({data:null}),ob=[9,13,27,32],pb=Sa&&\"CompositionEvent\"in window,qb=null;Sa&&\"documentMode\"in document&&(qb=document.documentMode);\nvar rb=Sa&&\"TextEvent\"in window&&!qb,sb=Sa&&(!pb||qb&&8=qb),tb=String.fromCharCode(32),ub={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},vb=!1;\nfunction wb(a,b){switch(a){case \"keyup\":return-1!==ob.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function xb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var yb=!1;function zb(a,b){switch(a){case \"compositionend\":return xb(b);case \"keypress\":if(32!==b.which)return null;vb=!0;return tb;case \"textInput\":return a=b.data,a===tb&&vb?null:a;default:return null}}\nfunction Ab(a,b){if(yb)return\"compositionend\"===a||!pb&&wb(a,b)?(a=gb(),fb=eb=cb=null,yb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1b}return!1}function E(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var F={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){F[a]=new E(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];F[b]=new E(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){F[a]=new E(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){F[a]=new E(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){F[a]=new E(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){F[a]=new E(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){F[a]=new E(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){F[a]=new E(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){F[a]=new E(a,5,!1,a.toLowerCase(),null)});var vc=/[\\-:]([a-z])/g;function wc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(vc,\nwc);F[b]=new E(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(vc,wc);F[b]=new E(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(vc,wc);F[b]=new E(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});F.tabIndex=new E(\"tabIndex\",1,!1,\"tabindex\",null);\nfunction xc(a,b,c,d){var e=F.hasOwnProperty(b)?F[b]:null;var f=null!==e?0===e.type:d?!1:!(2Fd.length&&Fd.push(a)}}}var Ld={},Md=0,Nd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Od(a){Object.prototype.hasOwnProperty.call(a,Nd)||(a[Nd]=Md++,Ld[a[Nd]]={});return Ld[a[Nd]]}function Pd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Qd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Rd(a,b){var c=Qd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Qd(c)}}function Sd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Sd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Td(){for(var a=window,b=Pd();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=Pd(a.document)}return b}function Ud(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Vd=Sa&&\"documentMode\"in document&&11>=document.documentMode,Wd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Xd=null,Yd=null,Zd=null,$d=!1;\nfunction ae(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if($d||null==Xd||Xd!==Pd(c))return null;c=Xd;\"selectionStart\"in c&&Ud(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Zd&&jd(Zd,c)?null:(Zd=c,a=z.getPooled(Wd.select,Yd,a,b),a.type=\"select\",a.target=Xd,Ra(a),a)}\nvar be={eventTypes:Wd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Od(e);f=ta.onSelect;for(var g=0;g=b.length?void 0:t(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:yc(c)}}\nfunction ie(a,b){var c=yc(b.value),d=yc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function je(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var ke={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction le(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function me(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?le(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ne=void 0,oe=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==ke.svg||\"innerHTML\"in a)a.innerHTML=b;else{ne=ne||document.createElement(\"div\");ne.innerHTML=\"\"+b+\"\";for(b=ne.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pe(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qe={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},re=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qe).forEach(function(a){re.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qe[b]=qe[a]})});function se(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qe.hasOwnProperty(a)&&qe[a]?(\"\"+b).trim():b+\"px\"}\nfunction te(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=se(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ue=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ve(a,b){b&&(ue[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?t(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?t(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:t(\"61\")),null!=b.style&&\"object\"!==typeof b.style?t(\"62\",\"\"):void 0)}\nfunction we(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction xe(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Od(a);b=ta[b];for(var d=0;dJe||(a.current=Ie[Je],Ie[Je]=null,Je--)}function J(a,b){Je++;Ie[Je]=a.current;a.current=b}var Ke={},K={current:Ke},L={current:!1},Le=Ke;\nfunction Me(a,b){var c=a.type.contextTypes;if(!c)return Ke;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function M(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ne(a){I(L,a);I(K,a)}function Oe(a){I(L,a);I(K,a)}\nfunction Pe(a,b,c){K.current!==Ke?t(\"168\"):void 0;J(K,b,a);J(L,c,a)}function Qe(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:t(\"108\",mc(b)||\"Unknown\",e);return n({},c,d)}function Re(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||Ke;Le=K.current;J(K,b,a);J(L,L.current,a);return!0}\nfunction Se(a,b,c){var d=a.stateNode;d?void 0:t(\"169\");c?(b=Qe(a,b,Le),d.__reactInternalMemoizedMergedChildContext=b,I(L,a),I(K,a),J(K,b,a)):I(L,a);J(L,c,a)}var Te=null,Ue=null;function Ve(a){return function(b){try{return a(b)}catch(c){}}}\nfunction We(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Te=Ve(function(a){return b.onCommitFiberRoot(c,a)});Ue=Ve(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Xe(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.firstContextDependency=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function N(a,b,c,d){return new Xe(a,b,c,d)}\nfunction Ye(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Ze(a){if(\"function\"===typeof a)return Ye(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gc)return 11;if(a===ic)return 14}return 2}\nfunction $e(a,b){var c=a.alternate;null===c?(c=N(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.firstContextDependency=a.firstContextDependency;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction af(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ye(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ac:return bf(c.children,e,f,b);case fc:return cf(c,e|3,f,b);case bc:return cf(c,e|2,f,b);case cc:return a=N(12,c,b,e|4),a.elementType=cc,a.type=cc,a.expirationTime=f,a;case hc:return a=N(13,c,b,e),a.elementType=hc,a.type=hc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case dc:g=10;break a;case ec:g=9;break a;case gc:g=11;break a;case ic:g=\n14;break a;case jc:g=16;d=null;break a}t(\"130\",null==a?a:typeof a,\"\")}b=N(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function bf(a,b,c,d){a=N(7,a,d,b);a.expirationTime=c;return a}function cf(a,b,c,d){a=N(8,a,d,b);b=0===(b&1)?bc:fc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function df(a,b,c){a=N(6,a,null,b);a.expirationTime=c;return a}\nfunction ef(a,b,c){b=N(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function ff(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:cb&&(a.latestPendingTime=b);gf(b,a)}\nfunction hf(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:cb&&(a.latestSuspendedTime=b);gf(b,a)}function jf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}\nfunction gf(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||da&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}var kf=!1;function lf(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction mf(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function of(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=lf(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=lf(a.memoizedState),e=c.updateQueue=lf(c.memoizedState)):d=a.updateQueue=mf(e):null===e&&(e=c.updateQueue=mf(d));null===e||d===e?of(d,b):null===d.lastUpdate||null===e.lastUpdate?(of(d,b),of(e,b)):(of(d,b),e.lastUpdate=b)}\nfunction qf(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=lf(a.memoizedState):rf(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function rf(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=mf(b));return b}\nfunction sf(a,b,c,d,e,f){switch(c.tag){case 1:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case 3:a.effectTag=a.effectTag&-2049|64;case 0:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case 2:kf=!0}return d}\nfunction tf(a,b,c,d,e){kf=!1;b=rf(a,b);for(var f=b.baseState,g=null,h=0,k=b.firstUpdate,l=f;null!==k;){var m=k.expirationTime;mu?(p=m,m=null):p=m.sibling;var v=w(e,m,h[u],k);if(null===v){null===m&&(m=p);break}a&&\nm&&null===v.alternate&&b(e,m);g=f(v,g,u);null===q?l=v:q.sibling=v;q=v;m=p}if(u===h.length)return c(e,m),l;if(null===m){for(;uu?(p=q,q=null):p=q.sibling;var A=w(e,q,v.value,k);if(null===A){q||(q=p);break}a&&q&&null===A.alternate&&b(e,q);g=f(A,g,u);null===m?l=A:m.sibling=A;m=A;q=p}if(v.done)return c(e,q),l;if(null===q){for(;!v.done;u++,v=h.next())v=r(e,v.value,k),null!==v&&(g=f(v,g,u),null===m?l=v:m.sibling=v,m=v);return l}for(q=d(e,q);!v.done;u++,v=h.next())v=y(q,e,u,v.value,k),null!==v&&(a&&null!==v.alternate&&q.delete(null===v.key?u:\nv.key),g=f(v,g,u),null===m?l=v:m.sibling=v,m=v);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ac&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Zb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===ac:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===ac?f.props.children:f.props,h);d.ref=bg(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===ac?(d=bf(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=af(f.type,f.key,f.props,null,a.mode,h),h.ref=bg(a,d,f),h.return=a,a=h)}return g(a);case $b:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ef(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=df(f,a.mode,h),d.return=a,a=d),g(a);if(ag(f))return B(a,d,f,h);if(lc(f))return R(a,d,f,h);l&&cg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,t(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var eg=dg(!0),fg=dg(!1),gg=null,hg=null,ig=!1;\nfunction jg(a,b){var c=N(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function kg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;default:return!1}}\nfunction lg(a){if(ig){var b=hg;if(b){var c=b;if(!kg(a,b)){b=Ge(c);if(!b||!kg(a,b)){a.effectTag|=2;ig=!1;gg=a;return}jg(gg,c)}gg=a;hg=He(b)}else a.effectTag|=2,ig=!1,gg=a}}function mg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag;)a=a.return;gg=a}function ng(a){if(a!==gg)return!1;if(!ig)return mg(a),ig=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Ce(b,a.memoizedProps))for(b=hg;b;)jg(a,b),b=Ge(b);mg(a);hg=gg?Ge(a.stateNode):null;return!0}function og(){hg=gg=null;ig=!1}var pg=Xb.ReactCurrentOwner;\nfunction Q(a,b,c,d){b.child=null===a?fg(b,null,c,d):eg(b,a.child,c,d)}function qg(a,b,c,d,e){c=c.render;var f=b.ref;Df(b,e);d=c(d,f);b.effectTag|=1;Q(a,b,d,e);return b.child}\nfunction rg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ye(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,sg(a,b,g,d,e,f);a=af(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e=c)return zg(a,b,c);b=tg(a,b,c);return null!==b?b.sibling:null}}return tg(a,b,c)}b.expirationTime=0;switch(b.tag){case 2:d=b.elementType;null!==\na&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Me(b,K.current);Df(b,c);e=d(a,e);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;if(M(d)){var f=!0;Re(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Qf(b,d,g,a);e.updater=Vf;b.stateNode=e;e._reactInternalFiber=b;$f(b,d,a,c);b=xg(null,b,d,!0,f,c)}else b.tag=0,Q(null,b,e,c),b=b.child;\nreturn b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=Nf(e);b.type=a;e=b.tag=Ze(a);f=P(a,f);g=void 0;switch(e){case 0:g=ug(null,b,a,f,c);break;case 1:g=wg(null,b,a,f,c);break;case 11:g=qg(null,b,a,f,c);break;case 14:g=rg(null,b,a,P(a.type,f),d,c);break;default:t(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:P(d,e),ug(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:P(d,e),wg(a,b,\nd,e,c);case 3:yg(b);d=b.updateQueue;null===d?t(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;tf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)og(),b=tg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)hg=He(b.stateNode.containerInfo),gg=b,e=ig=!0;e?(b.effectTag|=2,b.child=fg(b,null,d,c)):(Q(a,b,d,c),og());b=b.child}return b;case 5:return Lf(b),null===a&&lg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ce(d,e)?g=null:null!==\nf&&Ce(d,f)&&(b.effectTag|=16),vg(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=1,b=null):(Q(a,b,g,c),b=b.child),b;case 6:return null===a&&lg(b),null;case 13:return zg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=eg(b,null,d,c):Q(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:P(d,e),qg(a,b,d,e,c);case 7:return Q(a,b,b.pendingProps,c),b.child;case 8:return Q(a,b,b.pendingProps.children,c),b.child;case 12:return Q(a,b,b.pendingProps.children,\nc),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Bf(b,f);if(null!==g){var h=g.value;f=h===f&&(0!==h||1/h===1/f)||h!==h&&f!==f?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!L.current){b=tg(a,b,c);break a}}else for(g=b.child,null!==g&&(g.return=b);null!==g;){h=g.firstContextDependency;if(null!==h){do{if(h.context===d&&0!==(h.observedBits&f)){if(1===g.tag){var k=nf(c);k.tag=2;pf(g,k)}g.expirationTime<\nc&&(g.expirationTime=c);k=g.alternate;null!==k&&k.expirationTime\\x3c/script>\",l=e.removeChild(e.firstChild)):\"string\"===typeof r.is?l=l.createElement(e,{is:r.is}):(l=l.createElement(e),\"select\"===e&&r.multiple&&(l.multiple=!0)):l=l.createElementNS(k,e);e=l;e[Ga]=m;e[Ha]=g;Cg(e,b,!1,!1);r=e;l=f;m=g;var w=h,y=we(l,m);switch(l){case \"iframe\":case \"object\":H(\"load\",\nr);h=m;break;case \"video\":case \"audio\":for(h=0;hg&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==S)return S;null!==c&&0===(c.effectTag&1024)&&(null===\nc.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1=y)r=0;else if(-1===r||y component higher in the tree to provide a loading indicator or placeholder to display.\"+\nnc(k))}fh=!0;l=wf(l,k);g=h;do{switch(g.tag){case 3:g.effectTag|=2048;g.expirationTime=f;f=Vg(g,l,f);qf(g,f);break a;case 1:if(m=l,r=g.type,w=g.stateNode,0===(g.effectTag&64)&&(\"function\"===typeof r.getDerivedStateFromError||null!==w&&\"function\"===typeof w.componentDidCatch&&(null===Yg||!Yg.has(w)))){g.effectTag|=2048;g.expirationTime=f;f=Xg(g,m,f);qf(g,f);break a}}g=g.return}while(null!==g)}S=kh(e);continue}}}break}while(1);dh=!1;Af=zf=yf=ah.currentDispatcher=null;if(d)T=null,a.finishedWork=null;\nelse if(null!==S)a.finishedWork=null;else{d=a.current.alternate;null===d?t(\"281\"):void 0;T=null;if(fh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&eb?0:b)):(a.pendingCommitExpirationTime=\nc,a.finishedWork=d)}}function Mg(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Yg||!Yg.has(d))){a=wf(b,a);a=Xg(c,a,1073741823);pf(c,a);Uf(c,1073741823);return}break;case 3:a=wf(b,a);a=Vg(c,a,1073741823);pf(c,a);Uf(c,1073741823);return}c=c.return}3===a.tag&&(c=wf(b,a),c=Vg(a,c,1073741823),pf(a,c),Uf(a,1073741823))}\nfunction Sf(a,b){0!==ch?a=ch:dh?a=gh?1073741823:U:b.mode&1?(a=qh?1073741822-10*(((1073741822-a+15)/10|0)+1):1073741822-25*(((1073741822-a+500)/25|0)+1),null!==T&&a===U&&--a):a=1073741823;qh&&(0===rh||a=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;gf(c,a);c=a.expirationTime;0!==c&&sh(a,c)}}\nfunction Tg(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=Rf();b=Sf(b,a);a=th(a,b);null!==a&&(ff(a,b),b=a.expirationTime,0!==b&&sh(a,b))}\nfunction th(a,b){a.expirationTimeU&&jh(),ff(a,b),dh&&!gh&&T===a||sh(a,a.expirationTime),uh>vh&&(uh=0,t(\"185\")))}function wh(a,b,c,d,e){var f=ch;ch=1073741823;try{return a(b,c,d,e)}finally{ch=f}}var xh=null,W=null,yh=0,zh=void 0,X=!1,Ah=null,Y=0,rh=0,Bh=!1,Ch=null,Z=!1,Dh=!1,qh=!1,Eh=null,Fh=ba.unstable_now(),Gh=1073741822-(Fh/10|0),Hh=Gh,vh=50,uh=0,Ih=null;function Jh(){Gh=1073741822-((ba.unstable_now()-Fh)/10|0)}\nfunction Kh(a,b){if(0!==yh){if(ba.expirationTime&&(a.expirationTime=b);X||(Z?Dh&&(Ah=a,Y=1073741823,Ph(a,1073741823,!1)):1073741823===b?Qh(1073741823,!1):Kh(a,b))}\nfunction Oh(){var a=0,b=null;if(null!==W)for(var c=W,d=xh;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===W?t(\"244\"):void 0;if(d===d.nextScheduledRoot){xh=W=d.nextScheduledRoot=null;break}else if(d===xh)xh=e=d.nextScheduledRoot,W.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===W){W=c;W.nextScheduledRoot=xh;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===W)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}Ah=b;Y=a}var Rh=!1;function nh(){return Rh?!0:ba.unstable_shouldYield()?Rh=!0:!1}function Lh(){try{if(!nh()&&null!==xh){Jh();var a=xh;do{var b=a.expirationTime;0!==b&&Gh<=b&&(a.nextExpirationTimeToWorkOn=Gh);a=a.nextScheduledRoot}while(a!==xh)}Qh(0,!0)}finally{Rh=!1}}\nfunction Qh(a,b){Oh();if(b)for(Jh(),Hh=Gh;null!==Ah&&0!==Y&&a<=Y&&!(Rh&&Gh>Y);)Ph(Ah,Y,Gh>Y),Oh(),Jh(),Hh=Gh;else for(;null!==Ah&&0!==Y&&a<=Y;)Ph(Ah,Y,!1),Oh();b&&(yh=0,zh=null);0!==Y&&Kh(Ah,Y);uh=0;Ih=null;if(null!==Eh)for(a=Eh,Eh=null,b=0;b=c&&(null===Eh?Eh=[d]:Eh.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===Ih?uh++:(Ih=a,uh=0);gh=dh=!0;a.current===b?t(\"177\"):void 0;c=a.pendingCommitExpirationTime;0===c?t(\"261\"):void 0;a.pendingCommitExpirationTime=0;d=b.expirationTime;var e=b.childExpirationTime;d=e>d?e:d;a.didError=!1;0===d?(a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=\n0):(dd?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>d&&(a.earliestPendingTime=a.latestPendingTime)),e=a.earliestSuspendedTime,0===e?ff(a,d):de&&ff(a,d));gf(0,a);ah.current=null;1q&&(u=q,q=G,G=u),u=Rd(x,G),A=Rd(x,q),u&&A&&(1!==p.rangeCount||p.anchorNode!==u.node||p.anchorOffset!==u.offset||p.focusNode!==A.node||p.focusOffset!==A.offset)&&(C=C.createRange(),C.setStart(u.node,u.offset),p.removeAllRanges(),\nG>q?(p.addRange(C),p.extend(A.node,A.offset)):(C.setEnd(A.node,A.offset),p.addRange(C))))));C=[];for(p=x;p=p.parentNode;)1===p.nodeType&&C.push({element:p,left:p.scrollLeft,top:p.scrollTop});\"function\"===typeof x.focus&&x.focus();for(x=0;xFb?b:Fb;0===b&&(Yg=\nnull);a.expirationTime=b;a.finishedWork=null}function Wg(a){null===Ah?t(\"246\"):void 0;Ah.expirationTime=0;Bh||(Bh=!0,Ch=a)}function Th(a,b){var c=Z;Z=!0;try{return a(b)}finally{(Z=c)||X||Qh(1073741823,!1)}}function Uh(a,b){if(Z&&!Dh){Dh=!0;try{return a(b)}finally{Dh=!1}}return a(b)}function Wh(a,b,c){if(qh)return a(b,c);Z||X||0===rh||(Qh(rh,!1),rh=0);var d=qh,e=Z;Z=qh=!0;try{return a(b,c)}finally{qh=d,(Z=e)||X||Qh(1073741823,!1)}}\nfunction Xh(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===kd(c)&&1===c.tag?void 0:t(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(M(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);t(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(M(h)){c=Qe(c,h,g);break a}}c=g}else c=Ke;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nTf();pf(f,e);Uf(f,d);return d}function Yh(a,b,c,d){var e=b.current,f=Rf();e=Sf(f,e);return Xh(a,b,c,e,d)}function Zh(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function $h(a,b,c){var d=3=bh&&(b=bh-1);this._expirationTime=bh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}ai.prototype.render=function(a){this._defer?void 0:t(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new bi;Xh(a,b,null,c,d._onCommit);return d};\nai.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nai.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:t(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?t(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Nh(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};ai.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function di(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Kb=Th;Lb=Wh;Mb=function(){X||0===rh||(Qh(rh,!1),rh=0)};\nfunction ei(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new ci(a,!1,b)}\nfunction fi(a,b,c,d,e){di(c)?void 0:t(\"200\");var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Zh(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=ei(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Zh(f._internalRoot);h.call(a)}}Uh(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Zh(f._internalRoot)}\nfunction gi(a,b){var c=2Q.length&&Q.push(a)}\nfunction T(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h Reflect.defineMetadata(\"custom:annotation\", options, target, key);\r\n * }\r\n *\r\n */\r\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\r\n if (!IsObject(target))\r\n throw new TypeError();\r\n if (!IsUndefined(propertyKey))\r\n propertyKey = ToPropertyKey(propertyKey);\r\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\r\n }\r\n exporter(\"defineMetadata\", defineMetadata);\r\n /**\r\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param propertyKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\r\n * @example\r\n *\r\n * class Example {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty;\r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { }\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\r\n *\r\n */\r\n function hasMetadata(metadataKey, target, propertyKey) {\r\n if (!IsObject(target))\r\n throw new TypeError();\r\n if (!IsUndefined(propertyKey))\r\n propertyKey = ToPropertyKey(propertyKey);\r\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\r\n }\r\n exporter(\"hasMetadata\", hasMetadata);\r\n /**\r\n * Gets a value indicating whether the target object has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param propertyKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\r\n * @example\r\n *\r\n * class Example {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty;\r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { }\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\r\n *\r\n */\r\n function hasOwnMetadata(metadataKey, target, propertyKey) {\r\n if (!IsObject(target))\r\n throw new TypeError();\r\n if (!IsUndefined(propertyKey))\r\n propertyKey = ToPropertyKey(propertyKey);\r\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\r\n }\r\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param propertyKey (Optional) The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class Example {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty;\r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { }\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\r\n *\r\n */\r\n function getMetadata(metadataKey, target, propertyKey) {\r\n if (!IsObject(target))\r\n throw new TypeError();\r\n if (!IsUndefined(propertyKey))\r\n propertyKey = ToPropertyKey(propertyKey);\r\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\r\n }\r\n exporter(\"getMetadata\", getMetadata);\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param propertyKey (Optional) The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class Example {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty;\r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { }\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\r\n *\r\n */\r\n function getOwnMetadata(metadataKey, target, propertyKey) {\r\n if (!IsObject(target))\r\n throw new TypeError();\r\n if (!IsUndefined(propertyKey))\r\n propertyKey = ToPropertyKey(propertyKey);\r\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\r\n }\r\n exporter(\"getOwnMetadata\", getOwnMetadata);\r\n /**\r\n * Gets the metadata keys defined on the target object or its prototype chain.\r\n * @param target The target object on which the metadata is defined.\r\n * @param propertyKey (Optional) The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class Example {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty;\r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { }\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadataKeys(Example);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\r\n *\r\n */\r\n function getMetadataKeys(target, propertyKey) {\r\n if (!IsObject(target))\r\n throw new TypeError();\r\n if (!IsUndefined(propertyKey))\r\n propertyKey = ToPropertyKey(propertyKey);\r\n return OrdinaryMetadataKeys(target, propertyKey);\r\n }\r\n exporter(\"getMetadataKeys\", getMetadataKeys);\r\n /**\r\n * Gets the unique metadata keys defined on the target object.\r\n * @param target The target object on which the metadata is defined.\r\n * @param propertyKey (Optional) The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class Example {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty;\r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { }\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadataKeys(Example);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\r\n *\r\n */\r\n function getOwnMetadataKeys(target, propertyKey) {\r\n if (!IsObject(target))\r\n throw new TypeError();\r\n if (!IsUndefined(propertyKey))\r\n propertyKey = ToPropertyKey(propertyKey);\r\n return OrdinaryOwnMetadataKeys(target, propertyKey);\r\n }\r\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\r\n /**\r\n * Deletes the metadata entry from the target object with the provided key.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param propertyKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\r\n * @example\r\n *\r\n * class Example {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty;\r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { }\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\r\n *\r\n */\r\n function deleteMetadata(metadataKey, target, propertyKey) {\r\n if (!IsObject(target))\r\n throw new TypeError();\r\n if (!IsUndefined(propertyKey))\r\n propertyKey = ToPropertyKey(propertyKey);\r\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\r\n if (IsUndefined(metadataMap))\r\n return false;\r\n if (!metadataMap.delete(metadataKey))\r\n return false;\r\n if (metadataMap.size > 0)\r\n return true;\r\n var targetMetadata = Metadata.get(target);\r\n targetMetadata.delete(propertyKey);\r\n if (targetMetadata.size > 0)\r\n return true;\r\n Metadata.delete(target);\r\n return true;\r\n }\r\n exporter(\"deleteMetadata\", deleteMetadata);\r\n function DecorateConstructor(decorators, target) {\r\n for (var i = decorators.length - 1; i >= 0; --i) {\r\n var decorator = decorators[i];\r\n var decorated = decorator(target);\r\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\r\n if (!IsConstructor(decorated))\r\n throw new TypeError();\r\n target = decorated;\r\n }\r\n }\r\n return target;\r\n }\r\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\r\n for (var i = decorators.length - 1; i >= 0; --i) {\r\n var decorator = decorators[i];\r\n var decorated = decorator(target, propertyKey, descriptor);\r\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\r\n if (!IsObject(decorated))\r\n throw new TypeError();\r\n descriptor = decorated;\r\n }\r\n }\r\n return descriptor;\r\n }\r\n function GetOrCreateMetadataMap(O, P, Create) {\r\n var targetMetadata = Metadata.get(O);\r\n if (IsUndefined(targetMetadata)) {\r\n if (!Create)\r\n return undefined;\r\n targetMetadata = new _Map();\r\n Metadata.set(O, targetMetadata);\r\n }\r\n var metadataMap = targetMetadata.get(P);\r\n if (IsUndefined(metadataMap)) {\r\n if (!Create)\r\n return undefined;\r\n metadataMap = new _Map();\r\n targetMetadata.set(P, metadataMap);\r\n }\r\n return metadataMap;\r\n }\r\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\r\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\r\n function OrdinaryHasMetadata(MetadataKey, O, P) {\r\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\r\n if (hasOwn)\r\n return true;\r\n var parent = OrdinaryGetPrototypeOf(O);\r\n if (!IsNull(parent))\r\n return OrdinaryHasMetadata(MetadataKey, parent, P);\r\n return false;\r\n }\r\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\r\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\r\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\r\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\r\n if (IsUndefined(metadataMap))\r\n return false;\r\n return ToBoolean(metadataMap.has(MetadataKey));\r\n }\r\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\r\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\r\n function OrdinaryGetMetadata(MetadataKey, O, P) {\r\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\r\n if (hasOwn)\r\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\r\n var parent = OrdinaryGetPrototypeOf(O);\r\n if (!IsNull(parent))\r\n return OrdinaryGetMetadata(MetadataKey, parent, P);\r\n return undefined;\r\n }\r\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\r\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\r\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\r\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\r\n if (IsUndefined(metadataMap))\r\n return undefined;\r\n return metadataMap.get(MetadataKey);\r\n }\r\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\r\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\r\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\r\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\r\n metadataMap.set(MetadataKey, MetadataValue);\r\n }\r\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\r\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\r\n function OrdinaryMetadataKeys(O, P) {\r\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\r\n var parent = OrdinaryGetPrototypeOf(O);\r\n if (parent === null)\r\n return ownKeys;\r\n var parentKeys = OrdinaryMetadataKeys(parent, P);\r\n if (parentKeys.length <= 0)\r\n return ownKeys;\r\n if (ownKeys.length <= 0)\r\n return parentKeys;\r\n var set = new _Set();\r\n var keys = [];\r\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\r\n var key = ownKeys_1[_i];\r\n var hasKey = set.has(key);\r\n if (!hasKey) {\r\n set.add(key);\r\n keys.push(key);\r\n }\r\n }\r\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\r\n var key = parentKeys_1[_a];\r\n var hasKey = set.has(key);\r\n if (!hasKey) {\r\n set.add(key);\r\n keys.push(key);\r\n }\r\n }\r\n return keys;\r\n }\r\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\r\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\r\n function OrdinaryOwnMetadataKeys(O, P) {\r\n var keys = [];\r\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\r\n if (IsUndefined(metadataMap))\r\n return keys;\r\n var keysObj = metadataMap.keys();\r\n var iterator = GetIterator(keysObj);\r\n var k = 0;\r\n while (true) {\r\n var next = IteratorStep(iterator);\r\n if (!next) {\r\n keys.length = k;\r\n return keys;\r\n }\r\n var nextValue = IteratorValue(next);\r\n try {\r\n keys[k] = nextValue;\r\n }\r\n catch (e) {\r\n try {\r\n IteratorClose(iterator);\r\n }\r\n finally {\r\n throw e;\r\n }\r\n }\r\n k++;\r\n }\r\n }\r\n // 6 ECMAScript Data Typ0es and Values\r\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\r\n function Type(x) {\r\n if (x === null)\r\n return 1 /* Null */;\r\n switch (typeof x) {\r\n case \"undefined\": return 0 /* Undefined */;\r\n case \"boolean\": return 2 /* Boolean */;\r\n case \"string\": return 3 /* String */;\r\n case \"symbol\": return 4 /* Symbol */;\r\n case \"number\": return 5 /* Number */;\r\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\r\n default: return 6 /* Object */;\r\n }\r\n }\r\n // 6.1.1 The Undefined Type\r\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\r\n function IsUndefined(x) {\r\n return x === undefined;\r\n }\r\n // 6.1.2 The Null Type\r\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\r\n function IsNull(x) {\r\n return x === null;\r\n }\r\n // 6.1.5 The Symbol Type\r\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\r\n function IsSymbol(x) {\r\n return typeof x === \"symbol\";\r\n }\r\n // 6.1.7 The Object Type\r\n // https://tc39.github.io/ecma262/#sec-object-type\r\n function IsObject(x) {\r\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\r\n }\r\n // 7.1 Type Conversion\r\n // https://tc39.github.io/ecma262/#sec-type-conversion\r\n // 7.1.1 ToPrimitive(input [, PreferredType])\r\n // https://tc39.github.io/ecma262/#sec-toprimitive\r\n function ToPrimitive(input, PreferredType) {\r\n switch (Type(input)) {\r\n case 0 /* Undefined */: return input;\r\n case 1 /* Null */: return input;\r\n case 2 /* Boolean */: return input;\r\n case 3 /* String */: return input;\r\n case 4 /* Symbol */: return input;\r\n case 5 /* Number */: return input;\r\n }\r\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\r\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\r\n if (exoticToPrim !== undefined) {\r\n var result = exoticToPrim.call(input, hint);\r\n if (IsObject(result))\r\n throw new TypeError();\r\n return result;\r\n }\r\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\r\n }\r\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\r\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\r\n function OrdinaryToPrimitive(O, hint) {\r\n if (hint === \"string\") {\r\n var toString_1 = O.toString;\r\n if (IsCallable(toString_1)) {\r\n var result = toString_1.call(O);\r\n if (!IsObject(result))\r\n return result;\r\n }\r\n var valueOf = O.valueOf;\r\n if (IsCallable(valueOf)) {\r\n var result = valueOf.call(O);\r\n if (!IsObject(result))\r\n return result;\r\n }\r\n }\r\n else {\r\n var valueOf = O.valueOf;\r\n if (IsCallable(valueOf)) {\r\n var result = valueOf.call(O);\r\n if (!IsObject(result))\r\n return result;\r\n }\r\n var toString_2 = O.toString;\r\n if (IsCallable(toString_2)) {\r\n var result = toString_2.call(O);\r\n if (!IsObject(result))\r\n return result;\r\n }\r\n }\r\n throw new TypeError();\r\n }\r\n // 7.1.2 ToBoolean(argument)\r\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\r\n function ToBoolean(argument) {\r\n return !!argument;\r\n }\r\n // 7.1.12 ToString(argument)\r\n // https://tc39.github.io/ecma262/#sec-tostring\r\n function ToString(argument) {\r\n return \"\" + argument;\r\n }\r\n // 7.1.14 ToPropertyKey(argument)\r\n // https://tc39.github.io/ecma262/#sec-topropertykey\r\n function ToPropertyKey(argument) {\r\n var key = ToPrimitive(argument, 3 /* String */);\r\n if (IsSymbol(key))\r\n return key;\r\n return ToString(key);\r\n }\r\n // 7.2 Testing and Comparison Operations\r\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\r\n // 7.2.2 IsArray(argument)\r\n // https://tc39.github.io/ecma262/#sec-isarray\r\n function IsArray(argument) {\r\n return Array.isArray\r\n ? Array.isArray(argument)\r\n : argument instanceof Object\r\n ? argument instanceof Array\r\n : Object.prototype.toString.call(argument) === \"[object Array]\";\r\n }\r\n // 7.2.3 IsCallable(argument)\r\n // https://tc39.github.io/ecma262/#sec-iscallable\r\n function IsCallable(argument) {\r\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\r\n return typeof argument === \"function\";\r\n }\r\n // 7.2.4 IsConstructor(argument)\r\n // https://tc39.github.io/ecma262/#sec-isconstructor\r\n function IsConstructor(argument) {\r\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\r\n return typeof argument === \"function\";\r\n }\r\n // 7.2.7 IsPropertyKey(argument)\r\n // https://tc39.github.io/ecma262/#sec-ispropertykey\r\n function IsPropertyKey(argument) {\r\n switch (Type(argument)) {\r\n case 3 /* String */: return true;\r\n case 4 /* Symbol */: return true;\r\n default: return false;\r\n }\r\n }\r\n // 7.3 Operations on Objects\r\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\r\n // 7.3.9 GetMethod(V, P)\r\n // https://tc39.github.io/ecma262/#sec-getmethod\r\n function GetMethod(V, P) {\r\n var func = V[P];\r\n if (func === undefined || func === null)\r\n return undefined;\r\n if (!IsCallable(func))\r\n throw new TypeError();\r\n return func;\r\n }\r\n // 7.4 Operations on Iterator Objects\r\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\r\n function GetIterator(obj) {\r\n var method = GetMethod(obj, iteratorSymbol);\r\n if (!IsCallable(method))\r\n throw new TypeError(); // from Call\r\n var iterator = method.call(obj);\r\n if (!IsObject(iterator))\r\n throw new TypeError();\r\n return iterator;\r\n }\r\n // 7.4.4 IteratorValue(iterResult)\r\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\r\n function IteratorValue(iterResult) {\r\n return iterResult.value;\r\n }\r\n // 7.4.5 IteratorStep(iterator)\r\n // https://tc39.github.io/ecma262/#sec-iteratorstep\r\n function IteratorStep(iterator) {\r\n var result = iterator.next();\r\n return result.done ? false : result;\r\n }\r\n // 7.4.6 IteratorClose(iterator, completion)\r\n // https://tc39.github.io/ecma262/#sec-iteratorclose\r\n function IteratorClose(iterator) {\r\n var f = iterator[\"return\"];\r\n if (f)\r\n f.call(iterator);\r\n }\r\n // 9.1 Ordinary Object Internal Methods and Internal Slots\r\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\r\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\r\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\r\n function OrdinaryGetPrototypeOf(O) {\r\n var proto = Object.getPrototypeOf(O);\r\n if (typeof O !== \"function\" || O === functionPrototype)\r\n return proto;\r\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\r\n // Try to determine the superclass constructor. Compatible implementations\r\n // must either set __proto__ on a subclass constructor to the superclass constructor,\r\n // or ensure each class has a valid `constructor` property on its prototype that\r\n // points back to the constructor.\r\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\r\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\r\n if (proto !== functionPrototype)\r\n return proto;\r\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\r\n var prototype = O.prototype;\r\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\r\n if (prototypeProto == null || prototypeProto === Object.prototype)\r\n return proto;\r\n // If the constructor was not a function, then we cannot determine the heritage.\r\n var constructor = prototypeProto.constructor;\r\n if (typeof constructor !== \"function\")\r\n return proto;\r\n // If we have some kind of self-reference, then we cannot determine the heritage.\r\n if (constructor === O)\r\n return proto;\r\n // we have a pretty good guess at the heritage.\r\n return constructor;\r\n }\r\n // naive Map shim\r\n function CreateMapPolyfill() {\r\n var cacheSentinel = {};\r\n var arraySentinel = [];\r\n var MapIterator = (function () {\r\n function MapIterator(keys, values, selector) {\r\n this._index = 0;\r\n this._keys = keys;\r\n this._values = values;\r\n this._selector = selector;\r\n }\r\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\r\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\r\n MapIterator.prototype.next = function () {\r\n var index = this._index;\r\n if (index >= 0 && index < this._keys.length) {\r\n var result = this._selector(this._keys[index], this._values[index]);\r\n if (index + 1 >= this._keys.length) {\r\n this._index = -1;\r\n this._keys = arraySentinel;\r\n this._values = arraySentinel;\r\n }\r\n else {\r\n this._index++;\r\n }\r\n return { value: result, done: false };\r\n }\r\n return { value: undefined, done: true };\r\n };\r\n MapIterator.prototype.throw = function (error) {\r\n if (this._index >= 0) {\r\n this._index = -1;\r\n this._keys = arraySentinel;\r\n this._values = arraySentinel;\r\n }\r\n throw error;\r\n };\r\n MapIterator.prototype.return = function (value) {\r\n if (this._index >= 0) {\r\n this._index = -1;\r\n this._keys = arraySentinel;\r\n this._values = arraySentinel;\r\n }\r\n return { value: value, done: true };\r\n };\r\n return MapIterator;\r\n }());\r\n return (function () {\r\n function Map() {\r\n this._keys = [];\r\n this._values = [];\r\n this._cacheKey = cacheSentinel;\r\n this._cacheIndex = -2;\r\n }\r\n Object.defineProperty(Map.prototype, \"size\", {\r\n get: function () { return this._keys.length; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\r\n Map.prototype.get = function (key) {\r\n var index = this._find(key, /*insert*/ false);\r\n return index >= 0 ? this._values[index] : undefined;\r\n };\r\n Map.prototype.set = function (key, value) {\r\n var index = this._find(key, /*insert*/ true);\r\n this._values[index] = value;\r\n return this;\r\n };\r\n Map.prototype.delete = function (key) {\r\n var index = this._find(key, /*insert*/ false);\r\n if (index >= 0) {\r\n var size = this._keys.length;\r\n for (var i = index + 1; i < size; i++) {\r\n this._keys[i - 1] = this._keys[i];\r\n this._values[i - 1] = this._values[i];\r\n }\r\n this._keys.length--;\r\n this._values.length--;\r\n if (key === this._cacheKey) {\r\n this._cacheKey = cacheSentinel;\r\n this._cacheIndex = -2;\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n Map.prototype.clear = function () {\r\n this._keys.length = 0;\r\n this._values.length = 0;\r\n this._cacheKey = cacheSentinel;\r\n this._cacheIndex = -2;\r\n };\r\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\r\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\r\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\r\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\r\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\r\n Map.prototype._find = function (key, insert) {\r\n if (this._cacheKey !== key) {\r\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\r\n }\r\n if (this._cacheIndex < 0 && insert) {\r\n this._cacheIndex = this._keys.length;\r\n this._keys.push(key);\r\n this._values.push(undefined);\r\n }\r\n return this._cacheIndex;\r\n };\r\n return Map;\r\n }());\r\n function getKey(key, _) {\r\n return key;\r\n }\r\n function getValue(_, value) {\r\n return value;\r\n }\r\n function getEntry(key, value) {\r\n return [key, value];\r\n }\r\n }\r\n // naive Set shim\r\n function CreateSetPolyfill() {\r\n return (function () {\r\n function Set() {\r\n this._map = new _Map();\r\n }\r\n Object.defineProperty(Set.prototype, \"size\", {\r\n get: function () { return this._map.size; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Set.prototype.has = function (value) { return this._map.has(value); };\r\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\r\n Set.prototype.delete = function (value) { return this._map.delete(value); };\r\n Set.prototype.clear = function () { this._map.clear(); };\r\n Set.prototype.keys = function () { return this._map.keys(); };\r\n Set.prototype.values = function () { return this._map.values(); };\r\n Set.prototype.entries = function () { return this._map.entries(); };\r\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\r\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\r\n return Set;\r\n }());\r\n }\r\n // naive WeakMap shim\r\n function CreateWeakMapPolyfill() {\r\n var UUID_SIZE = 16;\r\n var keys = HashMap.create();\r\n var rootKey = CreateUniqueKey();\r\n return (function () {\r\n function WeakMap() {\r\n this._key = CreateUniqueKey();\r\n }\r\n WeakMap.prototype.has = function (target) {\r\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n return table !== undefined ? HashMap.has(table, this._key) : false;\r\n };\r\n WeakMap.prototype.get = function (target) {\r\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\r\n };\r\n WeakMap.prototype.set = function (target, value) {\r\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\r\n table[this._key] = value;\r\n return this;\r\n };\r\n WeakMap.prototype.delete = function (target) {\r\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n return table !== undefined ? delete table[this._key] : false;\r\n };\r\n WeakMap.prototype.clear = function () {\r\n // NOTE: not a real clear, just makes the previous data unreachable\r\n this._key = CreateUniqueKey();\r\n };\r\n return WeakMap;\r\n }());\r\n function CreateUniqueKey() {\r\n var key;\r\n do\r\n key = \"@@WeakMap@@\" + CreateUUID();\r\n while (HashMap.has(keys, key));\r\n keys[key] = true;\r\n return key;\r\n }\r\n function GetOrCreateWeakMapTable(target, create) {\r\n if (!hasOwn.call(target, rootKey)) {\r\n if (!create)\r\n return undefined;\r\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\r\n }\r\n return target[rootKey];\r\n }\r\n function FillRandomBytes(buffer, size) {\r\n for (var i = 0; i < size; ++i)\r\n buffer[i] = Math.random() * 0xff | 0;\r\n return buffer;\r\n }\r\n function GenRandomBytes(size) {\r\n if (typeof Uint8Array === \"function\") {\r\n if (typeof crypto !== \"undefined\")\r\n return crypto.getRandomValues(new Uint8Array(size));\r\n if (typeof msCrypto !== \"undefined\")\r\n return msCrypto.getRandomValues(new Uint8Array(size));\r\n return FillRandomBytes(new Uint8Array(size), size);\r\n }\r\n return FillRandomBytes(new Array(size), size);\r\n }\r\n function CreateUUID() {\r\n var data = GenRandomBytes(UUID_SIZE);\r\n // mark as random - RFC 4122 § 4.4\r\n data[6] = data[6] & 0x4f | 0x40;\r\n data[8] = data[8] & 0xbf | 0x80;\r\n var result = \"\";\r\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\r\n var byte = data[offset];\r\n if (offset === 4 || offset === 6 || offset === 8)\r\n result += \"-\";\r\n if (byte < 16)\r\n result += \"0\";\r\n result += byte.toString(16).toLowerCase();\r\n }\r\n return result;\r\n }\r\n }\r\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\r\n function MakeDictionary(obj) {\r\n obj.__ = undefined;\r\n delete obj.__;\r\n return obj;\r\n }\r\n });\r\n})(Reflect || (Reflect = {}));\r\n//# sourceMappingURL=Reflect.js.map","/** @license React v0.12.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var c=null,f=!1,h=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=c.expirationTime;n?q():n=!0;r(t,a)}}\nfunction u(){var a=c,b=c.next;if(c===b)c=null;else{var d=c.previous;c=d.next=b;b.previous=d}a.next=a.previous=null;d=a.callback;b=a.expirationTime;a=a.priorityLevel;var e=h,Q=l;h=a;l=b;try{var g=d()}finally{h=e,l=Q}if(\"function\"===typeof g)if(g={callback:g,priorityLevel:a,expirationTime:b,next:null,previous:null},null===c)c=g.next=g.previous=g;else{d=null;a=c;do{if(a.expirationTime>=b){d=a;break}a=a.next}while(a!==c);null===d?d=c:d===c&&(c=g,p());b=d.previous;b.next=d.previous=g;g.next=d;g.previous=\nb}}function v(){if(-1===k&&null!==c&&1===c.priorityLevel){m=!0;try{do u();while(null!==c&&1===c.priorityLevel)}finally{m=!1,null!==c?p():n=!1}}}function t(a){m=!0;var b=f;f=a;try{if(a)for(;null!==c;){var d=exports.unstable_now();if(c.expirationTime<=d){do u();while(null!==c&&c.expirationTime<=d)}else break}else if(null!==c){do u();while(null!==c&&!w())}}finally{m=!1,f=b,null!==c?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var d=exports.unstable_now(),e=!1;if(0>=P-d)if(-1!==b&&b<=d)e=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(e)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;bb&&(b=8),S=bb?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var d=h,e=k;h=a;k=exports.unstable_now();try{return b()}finally{h=d,k=e,v()}};\nexports.unstable_scheduleCallback=function(a,b){var d=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=d+b.timeout;else switch(h){case 1:b=d+-1;break;case 2:b=d+250;break;case 5:b=d+1073741823;break;case 4:b=d+1E4;break;default:b=d+5E3}a={callback:a,priorityLevel:h,expirationTime:b,next:null,previous:null};if(null===c)c=a.next=a.previous=a,p();else{d=null;var e=c;do{if(e.expirationTime>b){d=e;break}e=e.next}while(e!==c);null===d?d=c:d===c&&(c=a,p());\nb=d.previous;b.next=d.previous=a;a.next=d;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)c=null;else{a===c&&(c=b);var d=a.previous;d.next=b;b.previous=d}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=h;return function(){var d=h,e=k;h=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{h=d,k=e,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return h};\nexports.unstable_shouldYield=function(){return!f&&(null!==c&&c.expirationTime [...Array(value).keys()];\nconst clone = (array) => [...array];\nfunction registerStringMapper(type, mapper) {\n mapperRegister[getName(type) + \"_string\"] = mapper;\n}\nexports.registerStringMapper = registerStringMapper;\nfunction registerNumberMapper(type, mapper) {\n mapperRegister[getName(type) + \"_number\"] = mapper;\n}\nexports.registerNumberMapper = registerNumberMapper;\nfunction registerBooleanMapper(type, mapper) {\n mapperRegister[getName(type) + \"_boolean\"] = mapper;\n}\nexports.registerBooleanMapper = registerBooleanMapper;\nfunction tryReadField(jsonValue, matchesType, convert, error, validators, propName) {\n if (matchesType(jsonValue)) {\n const value = convert(jsonValue);\n validators.forEach(validator => {\n const err = validator(value);\n if (err) {\n throw new JsonParseError_1.JsonParseError(`Validation failed for property: ${propName}: ${err}`, JsonParseError_1.JsonParseErrorCode.VALIDATION_FAILED);\n }\n });\n return value;\n }\n throw error();\n}\nfunction parseValue(cls, json, spec, prefix, genericTypes, validators) {\n function propName() {\n return prefix + \"/\" + spec.propName;\n }\n if (spec.optional && (json === undefined || json === null)) {\n return spec.defaultValue;\n }\n const expectedTypeName = getName(cls);\n switch (expectedTypeName) {\n case \"String\":\n return tryReadField(json, fieldValue => typeof fieldValue === \"string\", fieldValue => fieldValue, () => new JsonParseError_1.JsonParseError(\"Expected a string value for property \" + propName(), JsonParseError_1.JsonParseErrorCode.INVALID_TYPE), validators, propName());\n case \"Number\":\n return tryReadField(json, fieldValue => typeof fieldValue === \"number\", fieldValue => fieldValue, () => new JsonParseError_1.JsonParseError(\"Expected a number value for property \" + propName(), JsonParseError_1.JsonParseErrorCode.INVALID_TYPE), validators, propName());\n case \"Boolean\":\n return tryReadField(json, fieldValue => typeof fieldValue === \"boolean\", fieldValue => fieldValue, () => new JsonParseError_1.JsonParseError(\"Expected a boolean value for property \" + propName(), JsonParseError_1.JsonParseErrorCode.INVALID_TYPE), validators, propName());\n case \"DateClass\":\n const isoRegexp = /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d)/;\n const regExp = /(\\d{4})-(\\d{2})(?:-(\\d{2}))/;\n return tryReadField(json, dateUtils.isDateString, dateUtils.parseDate, () => new JsonParseError_1.JsonParseError(\"Expected a Date object for property \" + propName(), JsonParseError_1.JsonParseErrorCode.INVALID_TYPE), validators, propName());\n case \"Array\":\n if (!spec.type) {\n throw new JsonParseError_1.JsonParseError(\"Missing type annotation for array property \" + propName(), JsonParseError_1.JsonParseErrorCode.INVALID_TYPE);\n }\n return tryReadField(json, fieldValue => Array.isArray(fieldValue), fieldValue => fieldValue.map((arrayElem, idx) => parseValue(spec.type, arrayElem, { propName: \"[\" + idx + \"]\", optional: false, defaultValue: undefined }, prefix + \"/\" + spec.propName, genericTypes, validators)), () => new JsonParseError_1.JsonParseError(\"Expected an array for property \" + propName(), JsonParseError_1.JsonParseErrorCode.INVALID_TYPE), validators, propName());\n default:\n return doParse(cls, json, prefix + \"/\" + spec.propName, genericTypes);\n }\n}\nfunction doParse(cls, json, prefix, genericTypes) {\n let getMetadata = Reflect.getMetadata;\n if (isSimpleType(cls)) {\n return parseValue(cls, json, { propName: \"array\", type: cls, optional: true, defaultValue: undefined }, prefix, undefined, []);\n }\n let constructorParams = clone(getMetadata(\"design:paramtypes\", cls));\n if (!constructorParams || isRegistrable(cls)) {\n const clsName = getName(cls);\n const mapperKey = clsName + \"_\" + typeof json;\n if (mapperRegister[mapperKey]) {\n return mapperRegister[mapperKey](json);\n }\n throw new JsonParseError_1.JsonParseError(`No mapper defined for types ${clsName} and ${typeof json}`, JsonParseError_1.JsonParseErrorCode.INVALID_MODEL_CLASS);\n }\n let jsonProps = times(constructorParams.length).map(n => getMetadata(\"field:\" + n, cls));\n if (genericTypes) {\n jsonProps.forEach((prop, n) => {\n let spec = prop;\n if (genericTypes.types[spec.propName] && constructorParams[n] === Object) {\n constructorParams[n] = genericTypes.types[spec.propName];\n }\n });\n }\n let copyParams = getMetadata(\"design:paramtypes\", cls);\n let generics = times(constructorParams.length).map(n => getGenericMetadata(jsonProps, n, cls, getMetadata));\n let validators = times(constructorParams.length).map(n => getMetadata(\"validation:\" + n, cls));\n let values = lodash_zip_1.default(jsonProps, constructorParams, generics, validators).map(data => {\n let spec = data[0];\n let param = data[1];\n let genericTypes = data[2];\n let validators = data[3];\n if (!spec || !spec.propName) {\n throw new JsonParseError_1.JsonParseError(\"Missing @Field annotation in type \" + getName(cls), JsonParseError_1.JsonParseErrorCode.MISSING_ANNOTATION);\n }\n //support for variant names like \"foo | bar | baz\"\n const propNames = spec.propName.split(\"|\").map(p => p.trim());\n let innerJson = undefined;\n for (let i = 0; i < propNames.length; i++) {\n if (json.hasOwnProperty(propNames[i])) {\n innerJson = json[propNames[i]];\n break;\n }\n }\n if (!innerJson === undefined && !spec.optional) {\n throw new JsonParseError_1.JsonParseError(\"Missing property \" + spec.propName + \" at path \" + prefix, JsonParseError_1.JsonParseErrorCode.MISSING_PROPERTY);\n }\n if (spec.rawValue) {\n return innerJson;\n }\n return parseValue(param, innerJson, spec, prefix, genericTypes, validators || []);\n });\n return new cls(...values);\n}\nfunction getGenericMetadata(props, index, cls, getMetadata) {\n if (props && props[index] && props[index].propName) {\n return getMetadata(\"generic:\" + props[index].propName, cls);\n }\n}\nfunction getName(cls) {\n let getMetadata = Reflect.getMetadata;\n const sparksonId = getMetadata(\"sparksonRegistrable\", cls);\n if (sparksonId) {\n return sparksonId;\n }\n if (cls[\"type\"]) {\n return cls[\"type\"];\n }\n if (cls[\"name\"]) {\n return cls[\"name\"];\n }\n var funcNameRegex = /function (.{1,})\\(/;\n var results = (funcNameRegex).exec(cls.toString());\n return (results && results.length > 1) ? results[1] : \"\";\n}\nfunction isSimpleType(cls) {\n let typeName = getName(cls);\n return typeName === \"String\" || typeName === \"Number\" || typeName === \"Boolean\" || typeName == \"DateClass\";\n}\nfunction isRegistrable(cls) {\n let getMetadata = Reflect.getMetadata;\n const sparksonId = getMetadata(\"sparksonRegistrable\", cls);\n return !!sparksonId;\n}\nfunction parse(cls, json) {\n return parseValue(cls, json, { propName: \".\", optional: false, defaultValue: undefined }, \"\", undefined, []);\n}\nexports.parse = parse;\nfunction parseArray(cls, json, optional = false) {\n if (json === null && optional) {\n return [];\n }\n return parseValue(Array, json, { propName: \".\", optional: optional, type: cls, defaultValue: undefined }, \"\", undefined, []);\n}\nexports.parseArray = parseArray;\n/*tslint:enable no-any*/\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*tslint:disable no-any*/\nfunction ArrayField(jsonProperty, type, optional = false, genericTypes = null) {\n return (target, propertyKey, parameterIndex) => {\n Reflect.defineMetadata(\"field:\" + parameterIndex, { propName: jsonProperty, type: type, optional: optional }, target);\n if (genericTypes) {\n Object.keys(genericTypes.types).forEach(id => {\n Reflect.defineMetadata(\"generic:\" + jsonProperty, genericTypes, target);\n });\n }\n };\n}\nexports.ArrayField = ArrayField;\n/*tslint:enable no-any*/\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction Field(jsonProperty, optional = false, genericTypes = null, defaultValue = undefined) {\n return (target, propertyKey, parameterIndex) => {\n /*tslint:disable no-any*/\n Reflect.defineMetadata(\"field:\" + parameterIndex, { propName: jsonProperty, optional: optional, defaultValue: defaultValue }, target);\n if (genericTypes) {\n Object.keys(genericTypes.types).forEach(id => {\n Reflect.defineMetadata(\"generic:\" + jsonProperty, genericTypes, target);\n });\n }\n /*tslint:enable no-any*/\n };\n}\nexports.Field = Field;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction RawJsonField(jsonProperty, optional = false, defaultValue = undefined) {\n return (target, propertyKey, parameterIndex) => {\n /*tslint:disable no-any*/\n Reflect.defineMetadata(\"field:\" + parameterIndex, { propName: jsonProperty, optional: optional, rawValue: true, defaultValue: defaultValue }, target);\n /*tslint:enable no-any*/\n };\n}\nexports.RawJsonField = RawJsonField;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"reflect-metadata\");\nconst RANGE = 10000000;\nfunction Registrable(ctor) {\n const sid = Math.floor(Math.random() * RANGE + 1).toString();\n Reflect.defineMetadata(\"sparksonRegistrable\", sid, ctor);\n return undefined;\n}\nexports.Registrable = Registrable;\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValidationHelper_1 = require(\"./ValidationHelper\");\nconst dateUtils = __importStar(require(\"../../utils/DateUtils\"));\nfunction After(value) {\n return (target, propertyKey, parameterIndex) => {\n const afterValidator = (fieldValue) => {\n let valueDate = null;\n if (value instanceof Date) {\n valueDate = value;\n }\n else {\n valueDate = dateUtils.parseDate(value);\n }\n if (fieldValue.getTime !== undefined && fieldValue.getTime() <= valueDate.getTime()) {\n return `Value must be after ${value}`;\n }\n return null;\n };\n ValidationHelper_1.addValidationRule(target, parameterIndex, afterValidator);\n };\n}\nexports.After = After;\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValidationHelper_1 = require(\"./ValidationHelper\");\nconst dateUtils = __importStar(require(\"../../utils/DateUtils\"));\nfunction Before(value) {\n return (target, propertyKey, parameterIndex) => {\n const beforeValidator = (fieldValue) => {\n let valueDate = null;\n if (value instanceof Date) {\n valueDate = value;\n }\n else {\n valueDate = dateUtils.parseDate(value);\n }\n if (fieldValue.getTime !== undefined && fieldValue.getTime() >= valueDate.getTime()) {\n return `Value must be before ${value}`;\n }\n return null;\n };\n ValidationHelper_1.addValidationRule(target, parameterIndex, beforeValidator);\n };\n}\nexports.Before = Before;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValidationHelper_1 = require(\"./ValidationHelper\");\nfunction Max(value) {\n return (target, propertyKey, parameterIndex) => {\n const maxValidator = (fieldValue) => {\n if (fieldValue > value) {\n return `Value cannot be greater than ${value}`;\n }\n return null;\n };\n ValidationHelper_1.addValidationRule(target, parameterIndex, maxValidator);\n };\n}\nexports.Max = Max;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValidationHelper_1 = require(\"./ValidationHelper\");\nfunction MaxLength(value) {\n return (target, propertyKey, parameterIndex) => {\n const maxLengthValidator = (fieldValue) => {\n if (fieldValue.length !== undefined && fieldValue.length > value) {\n return `Value cannot be longer than ${value}`;\n }\n return null;\n };\n ValidationHelper_1.addValidationRule(target, parameterIndex, maxLengthValidator);\n };\n}\nexports.MaxLength = MaxLength;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValidationHelper_1 = require(\"./ValidationHelper\");\nfunction Min(value) {\n return (target, propertyKey, parameterIndex) => {\n const minValidator = (fieldValue) => {\n if (fieldValue < value) {\n return `Value cannot be smaller than ${value}`;\n }\n return null;\n };\n ValidationHelper_1.addValidationRule(target, parameterIndex, minValidator);\n };\n}\nexports.Min = Min;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValidationHelper_1 = require(\"./ValidationHelper\");\nfunction MinLength(value) {\n return (target, propertyKey, parameterIndex) => {\n const minLengthValidator = (fieldValue) => {\n if (fieldValue.length !== undefined && fieldValue.length < value) {\n return `Value cannot be shorter than ${value}`;\n }\n return null;\n };\n ValidationHelper_1.addValidationRule(target, parameterIndex, minLengthValidator);\n };\n}\nexports.MinLength = MinLength;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValidationHelper_1 = require(\"./ValidationHelper\");\nfunction Regexp(value) {\n return (target, propertyKey, parameterIndex) => {\n const regexValidator = (fieldValue) => {\n if (!value.test(fieldValue)) {\n return `Value must match regular expression ${value}`;\n }\n return null;\n };\n ValidationHelper_1.addValidationRule(target, parameterIndex, regexValidator);\n };\n}\nexports.Regexp = Regexp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValidationHelper_1 = require(\"./ValidationHelper\");\nfunction Rule(customRule) {\n return (target, propertyKey, parameterIndex) => {\n ValidationHelper_1.addValidationRule(target, parameterIndex, customRule);\n };\n}\nexports.Rule = Rule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction addValidationRule(target, paramIndex, rule) {\n const metaKey = \"validation:\" + paramIndex;\n let validationRules = Reflect.getMetadata(metaKey, target);\n if (!validationRules) {\n validationRules = [];\n }\n validationRules.push(rule);\n Reflect.defineMetadata(metaKey, validationRules, target);\n}\nexports.addValidationRule = addValidationRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DateClass_1 = require(\"./core/DateClass\");\nexports.DateClass = DateClass_1.DateClass;\nvar JsonParseError_1 = require(\"./core/JsonParseError\");\nexports.JsonParseError = JsonParseError_1.JsonParseError;\nexports.JsonParseErrorCode = JsonParseError_1.JsonParseErrorCode;\nvar parser_1 = require(\"./core/parser\");\nexports.parse = parser_1.parse;\nexports.parseArray = parser_1.parseArray;\nexports.registerStringMapper = parser_1.registerStringMapper;\nexports.registerBooleanMapper = parser_1.registerBooleanMapper;\nexports.registerNumberMapper = parser_1.registerNumberMapper;\nvar ArrayField_1 = require(\"./decorators/ArrayField\");\nexports.ArrayField = ArrayField_1.ArrayField;\nvar Field_1 = require(\"./decorators/Field\");\nexports.Field = Field_1.Field;\nvar RawJsonField_1 = require(\"./decorators/RawJsonField\");\nexports.RawJsonField = RawJsonField_1.RawJsonField;\nvar Min_1 = require(\"./decorators/validation/Min\");\nexports.Min = Min_1.Min;\nvar Max_1 = require(\"./decorators/validation/Max\");\nexports.Max = Max_1.Max;\nvar MinLength_1 = require(\"./decorators/validation/MinLength\");\nexports.MinLength = MinLength_1.MinLength;\nvar MaxLength_1 = require(\"./decorators/validation/MaxLength\");\nexports.MaxLength = MaxLength_1.MaxLength;\nvar Regexp_1 = require(\"./decorators/validation/Regexp\");\nexports.Regexp = Regexp_1.Regexp;\nvar After_1 = require(\"./decorators/validation/After\");\nexports.After = After_1.After;\nvar Before_1 = require(\"./decorators/validation/Before\");\nexports.Before = Before_1.Before;\nvar Rule_1 = require(\"./decorators/validation/Rule\");\nexports.Rule = Rule_1.Rule;\nvar Registrable_1 = require(\"./decorators/Registrable\");\nexports.Registrable = Registrable_1.Registrable;\nif (!Reflect || !Reflect.defineMetadata) {\n require(\"reflect-metadata\");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst isoRegexp = /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d)/;\nconst regExp = /(\\d{4})-(\\d{2})(?:-(\\d{2}))/;\nfunction isDateString(value) {\n return isoRegexp.test(value) || regExp.test(value);\n}\nexports.isDateString = isDateString;\nfunction parseDate(value) {\n if (!isDateString(value)) {\n return null;\n }\n if (isoRegexp.test(value)) {\n return new Date(Date.parse(value));\n }\n const [, year, month, day] = regExp.exec(value);\n if (day !== undefined) {\n return new Date(parseInt(year, 10), parseInt(month, 10) - 1, parseInt(day, 10));\n }\n else {\n return new Date(parseInt(year, 10), parseInt(month, 10) - 1);\n }\n}\nexports.parseDate = parseDate;\n","\"use strict\";\n/*\n\nTypeScript Md5\n==============\n\nBased on work by\n* Joseph Myers: http://www.myersdaily.org/joseph/javascript/md5-text.html\n* André Cruz: https://github.com/satazor/SparkMD5\n* Raymond Hill: https://github.com/gorhill/yamd5.js\n\nEffectively a TypeScrypt re-write of Raymond Hill JS Library\n\nThe MIT License (MIT)\n\nCopyright (C) 2014 Raymond Hill\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n\n\n DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n Version 2, December 2004\n\n Copyright (C) 2015 André Cruz \n\n Everyone is permitted to copy and distribute verbatim or modified\n copies of this license document, and changing it is allowed as long\n as the name is changed.\n\n DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.\n\n\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Md5 = (function () {\n function Md5() {\n this._state = new Int32Array(4);\n this._buffer = new ArrayBuffer(68);\n this._buffer8 = new Uint8Array(this._buffer, 0, 68);\n this._buffer32 = new Uint32Array(this._buffer, 0, 17);\n this.start();\n }\n // One time hashing functions\n Md5.hashStr = function (str, raw) {\n if (raw === void 0) { raw = false; }\n return this.onePassHasher\n .start()\n .appendStr(str)\n .end(raw);\n };\n Md5.hashAsciiStr = function (str, raw) {\n if (raw === void 0) { raw = false; }\n return this.onePassHasher\n .start()\n .appendAsciiStr(str)\n .end(raw);\n };\n Md5._hex = function (x) {\n var hc = Md5.hexChars;\n var ho = Md5.hexOut;\n var n;\n var offset;\n var j;\n var i;\n for (i = 0; i < 4; i += 1) {\n offset = i * 8;\n n = x[i];\n for (j = 0; j < 8; j += 2) {\n ho[offset + 1 + j] = hc.charAt(n & 0x0F);\n n >>>= 4;\n ho[offset + 0 + j] = hc.charAt(n & 0x0F);\n n >>>= 4;\n }\n }\n return ho.join('');\n };\n Md5._md5cycle = function (x, k) {\n var a = x[0];\n var b = x[1];\n var c = x[2];\n var d = x[3];\n // ff()\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n // gg()\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n // hh()\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n // ii()\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n };\n Md5.prototype.start = function () {\n this._dataLength = 0;\n this._bufferLength = 0;\n this._state.set(Md5.stateIdentity);\n return this;\n };\n // Char to code point to to array conversion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown\n Md5.prototype.appendStr = function (str) {\n var buf8 = this._buffer8;\n var buf32 = this._buffer32;\n var bufLen = this._bufferLength;\n var code;\n var i;\n for (i = 0; i < str.length; i += 1) {\n code = str.charCodeAt(i);\n if (code < 128) {\n buf8[bufLen++] = code;\n }\n else if (code < 0x800) {\n buf8[bufLen++] = (code >>> 6) + 0xC0;\n buf8[bufLen++] = code & 0x3F | 0x80;\n }\n else if (code < 0xD800 || code > 0xDBFF) {\n buf8[bufLen++] = (code >>> 12) + 0xE0;\n buf8[bufLen++] = (code >>> 6 & 0x3F) | 0x80;\n buf8[bufLen++] = (code & 0x3F) | 0x80;\n }\n else {\n code = ((code - 0xD800) * 0x400) + (str.charCodeAt(++i) - 0xDC00) + 0x10000;\n if (code > 0x10FFFF) {\n throw new Error('Unicode standard supports code points up to U+10FFFF');\n }\n buf8[bufLen++] = (code >>> 18) + 0xF0;\n buf8[bufLen++] = (code >>> 12 & 0x3F) | 0x80;\n buf8[bufLen++] = (code >>> 6 & 0x3F) | 0x80;\n buf8[bufLen++] = (code & 0x3F) | 0x80;\n }\n if (bufLen >= 64) {\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen -= 64;\n buf32[0] = buf32[16];\n }\n }\n this._bufferLength = bufLen;\n return this;\n };\n Md5.prototype.appendAsciiStr = function (str) {\n var buf8 = this._buffer8;\n var buf32 = this._buffer32;\n var bufLen = this._bufferLength;\n var i;\n var j = 0;\n for (;;) {\n i = Math.min(str.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = str.charCodeAt(j++);\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n };\n Md5.prototype.appendByteArray = function (input) {\n var buf8 = this._buffer8;\n var buf32 = this._buffer32;\n var bufLen = this._bufferLength;\n var i;\n var j = 0;\n for (;;) {\n i = Math.min(input.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = input[j++];\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n };\n Md5.prototype.getState = function () {\n var self = this;\n var s = self._state;\n return {\n buffer: String.fromCharCode.apply(null, self._buffer8),\n buflen: self._bufferLength,\n length: self._dataLength,\n state: [s[0], s[1], s[2], s[3]]\n };\n };\n Md5.prototype.setState = function (state) {\n var buf = state.buffer;\n var x = state.state;\n var s = this._state;\n var i;\n this._dataLength = state.length;\n this._bufferLength = state.buflen;\n s[0] = x[0];\n s[1] = x[1];\n s[2] = x[2];\n s[3] = x[3];\n for (i = 0; i < buf.length; i += 1) {\n this._buffer8[i] = buf.charCodeAt(i);\n }\n };\n Md5.prototype.end = function (raw) {\n if (raw === void 0) { raw = false; }\n var bufLen = this._bufferLength;\n var buf8 = this._buffer8;\n var buf32 = this._buffer32;\n var i = (bufLen >> 2) + 1;\n var dataBitsLen;\n this._dataLength += bufLen;\n buf8[bufLen] = 0x80;\n buf8[bufLen + 1] = buf8[bufLen + 2] = buf8[bufLen + 3] = 0;\n buf32.set(Md5.buffer32Identity.subarray(i), i);\n if (bufLen > 55) {\n Md5._md5cycle(this._state, buf32);\n buf32.set(Md5.buffer32Identity);\n }\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n dataBitsLen = this._dataLength * 8;\n if (dataBitsLen <= 0xFFFFFFFF) {\n buf32[14] = dataBitsLen;\n }\n else {\n var matches = dataBitsLen.toString(16).match(/(.*?)(.{0,8})$/);\n if (matches === null) {\n return;\n }\n var lo = parseInt(matches[2], 16);\n var hi = parseInt(matches[1], 16) || 0;\n buf32[14] = lo;\n buf32[15] = hi;\n }\n Md5._md5cycle(this._state, buf32);\n return raw ? this._state : Md5._hex(this._state);\n };\n // Private Static Variables\n Md5.stateIdentity = new Int32Array([1732584193, -271733879, -1732584194, 271733878]);\n Md5.buffer32Identity = new Int32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Md5.hexChars = '0123456789abcdef';\n Md5.hexOut = [];\n // Permanent instance is to use for one-call hashing\n Md5.onePassHasher = new Md5();\n return Md5;\n}());\nexports.Md5 = Md5;\nif (Md5.hashStr('hello') !== '5d41402abc4b2a76b9719d911017c592') {\n console.error('Md5 self test failed.');\n}\n//# sourceMappingURL=md5.js.map","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.31\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.31',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 255;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 '+BROWSER]], [\n /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i // LieBao Browser\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}-[atu]?[ln][01259x][012359][an]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ ([c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\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)) {\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 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 : 'OK'\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 resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, 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 && support.blob) {\n xhr.responseType = 'blob'\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","\r\n// tslint:disable:no-unused-variable\r\n\r\n// polyfills\r\nimport \"es6-shim\";\r\nimport \"fullscreen-api-polyfill\";\r\nimport \"whatwg-fetch\";\r\n\r\nimport \"./api/globalVintomNamespace/GlobalVintomNamespace\";\r\n// tslint:enable:no-unused-variable\r\n\r\nexport { Player } from \"./api/player/Player\";\r\nexport { PlayerConfigurationAPI as PlayerConfigurationAPIInternal,\r\n PlayerConfigurationWithVideoCodeAPI,\r\n PlayerDimensionsAPI,\r\n PlayerExecutionAPI,\r\n PlayerInitializationAPI,\r\n PlayerPersonalizationAPI,\r\n RunningPlayerAPI\r\n} from \"./api/player/PlayerAPI\";\r\n\r\nexport { CTAFunction } from \"./api/cta/ctaFunction/CTAFunction\";\r\nexport { CTAHandle } from \"./api/cta/ctaFunction/CTAHandle\";\r\nexport { PlayerCTAAPI } from \"./api/cta/PlayerCTAAPI\";\r\n\r\nexport { VintomErrorCode } from \"./api/model/error/VintomErrorCode\"; \r\nexport { VintomError } from \"./api/model/error/VintomError\";\r\n\r\nexport { PlayerState } from \"./api/model/playerState/PlayerState\";\r\nexport { PlayerActionState } from \"./api/model/playerState/PlayerActionState\";\r\n"],"names":["root","factory","exports","module","define","amd","self","initialVintom","cta","requestedResources","Player","window","Config","vintomNamespace","vintom","errorCode","message","options","this","VintomError","DEFAULT_OPTIONS","errorAdditionalInfo","playerVersion","navigator","userAgent","BrowserFeatureDetector","getBrowserMajorVersion","browserMajorVersion","getBrowserName","browserName","getOS","operatingSystem","Error","stack","stackTrace","isLogAndSendToAnalytics","isDisplayToUser","initialize","elementId","videoCode","palayerAPI","PlayerAPIImpl","setup","json","configurationOverrideJSON","configurationJSON","personalize","personalizationJSON","dimensions","width","height","run","i18n","getI18n","playerEl","document","getElementById","SupportedBrowserHelper","isBrowserSupported","simplePlayerManagerImpl","createNotSupportedBrowserApplicationContext","get","TYPES","PlayerManager","logNotSupportedBrowser","render","UnsupportedBrowserVersionComponent","PlayerContainerComponent","ref","element","playerComponent","applicationContext","createApplicationContext","animationLayer","controlsLayer","ctaLayer","posterLayer","videoLayer","musicLayer","playerManager","play","pause","move","id","moveToScenarioElement","replay","action","ctaId","actionId","performAction","args","on","event","callback","vintomPlayerReady","vintomPlayerError","vintomPlayerPlay","vintomPlayerPause","vintomPlayerFinish","vintomPlayerAction","registerOnReady","registerOnError","registerOnPlay","registerOnPause","registerOnFinish","registerOnAction","getState","remove","prepareForRemove","innerHTML","FullscreenDisableIconComponent","viewBox","xmlns","fillRule","clipRule","d","FullscreenEnableIconComponent","LoaderIconComponent","offset","stopColor","stopOpacity","fill","attributeName","type","dur","repeatCount","from","to","PauseIconComponent","className","PlayIconComponent","ReplayIconComponent","FacebookIconComponent","SocialShareIconComponent","TwitterIconComponent","SubtitlesIconComponent","SubtitlesSelectedIconComponent","VolumeLoudIconComponent","VolumeMutedIconComponent","VolumeQuietIconComponent","props","animations","handleWindowResize","WindowResizeHelper","doOnResize","resizeAllAnimations","state","isAnimationStarted","lottieContainer","componentDidMount","ListenerHelper","addEventListener","componentWillUnmount","removeEventListener","clearAllAnimations","Object","keys","src","removeAnimation","loadAnimation","animationJSON","animationBlur","animationContainer","createAndAppendAnimationContainer","animation","lottie","container","renderer","loop","autoplay","animationData","observer","onComplete","onEnded","setState","onEnterFrame","onStarted","destroy","querySelector","AnimationLayerComponent","DATA_SRC_ATTRIBUTE","parentNode","removeChild","getAnimationCurrentTime","currentFrame","frameRate","getAnimationDuration","totalFrames","getIsAnimationPlaying","isPaused","playAnimation","pauseAnimation","moveTo","animationSrc","timeMillis","animationItem","goToAndPlay","goToAndStop","registerObserver","createElement","setAttribute","style","setProperty","top","position","test","appendChild","resize","Component","reusableCTAs","ctaHandles","recalculateDimensions","elmt","layer","setAspectRatio","aspectRatio","AspectRatioHelper","calculateDimensions","clientWidth","clientHeight","loadCTA","hashCode","isReusable","ctaResource","ctaCustomAttributes","existingCTA","ctaElement","handle","createCTAElement","ctaHtml","ctaFunction","removeCTA","ctaBoard","CTALayerComponent","DATA_HASH_CODE_ATTR","ctaHTML","loadingPageVisible","isLoading","isAdminMode","isPlaybackBlockingCTADisplayed","playbackState","scenarioPath","undefined","totalTime","ellapsedTime","bufferedTime","volume","isVolumeMuted","subtitleSources","disableIcon","configuration","bandwidth","qualityLevels","selectedSubtitlesSrc","subtitlesText","isMobileDevice","MobileControlsLayerComponent","deviceSpecificLayer","isCTADisplayed","socialShareConfiguration","playIconOnPoster","onPlay","onPause","onReplay","onSeekStart","startSeek","onSeekEnd","endSeek","onSeekTo","time","handleSeekTo","onJumpToScenarioElement","scElement","progress","jumpToScenarioElement","onToggleMuted","subtitles","onSubtitleSourceSelected","subtitle","selectSubtitleSource","isFullscreenSupported","isFullscreen","onToggleFullscreen","toggleFullscreen","onSendError","err","DesktopControlsLayerComponent","onVolumeChange","vol","changeVolume","onUnMute","unMute","setConfiguration","resetScenarioElement","showLoader","hideLoader","updateBufferedTime","setVolume","setIsMuted","isMuted","setSubtitleSources","source","setTotalScenarioTime","displaySubtitles","scenarioEnded","indexOf","isLastPart","userInteractionEnded","handleUserInteractionEnded","userInteractedWithPlayer","handleUserInteractedWithPlayer","userClickedPlayer","handleUserClickedPlayer","showPlayerInfoTooltip","x","y","showMessage","showLoadingPage","setBandwidth","setQualityLevels","setIsPlaybackBlockingCTADisplayed","onReloadFrame","initialElement","onMutedChange","updateMuted","ControlsLayerComponent","DEFAULT_VOLUME_AFTER_UNMUTE","node","audioNode","changeSource","load","setMusicTime","startTime","endTime","startTimeShift","endTimeShift","fadeOut","initialVolume","fadeOutHandler","setInterval","clearInterval","videoCurrentTime","videoDuration","currentTime","MusicLayerComponent","JUST_BEFORE_END","changeMuted","muted","initializeLayer","posterUrl","showPoster","url","hidePoster","getIsShowingPoster","PosterLayerComponent","initializeFadeout","initializeMusicPlay","turnOffFadeOut","lastStatus","last","Promise","resolve","lastRequest","push","request","doPush","then","player","isProgressing","cleanUp","intervalHandle","newSeekTime","seeking","lastSeekTime","ProgressChecker","INTERVAL","textTracksBySource","requestQualityChange","hlsHandler","masterPlaylistController_","smoothQualityChange_","isVideoStarted","crossOrigin","playsInline","videoNode","progressChecker","loadVideo","sources","currentFrameTime","playPauseRequestQueue","PlayPauseRequestQueue","show","loadedTracks","canPlay","readyEventName","isChrome","isAndroid","one","tech","IWillNotUseThisInPlugins","vhs","seekAfterLoad","prepareSources","map","track","addRemoteTextTrack","handleTextTrack","ready","all","getCurrentSeekTime","getCurrentFrameTime","getTotalTime","duration","getBufferedTime","bufferedRanges","getBufferedRanges","sort","r1","r2","start","currentBufferedRange","find","range","end","getVolume","getIsPlaying","lastQueuedRequest","ended","getIsWaiting","paused","getIsFullyLoaded","played","length","VideoLayerComponent","reloadFrame","getBandwidth","getQualityLevels","selectPlaylist","uri","representations","representation","isCurrent","videojs","resizeManager","html5","nativeTextTracks","nativeAudioTracks","nativeVideoTracks","overrideNative","useBandwidthFromLocalStorage","off","onTotalTimeChange","initializeMusic","remainingTime","onNearTheEnd","onError","error","captureSnapshot","isSafari","canvas","getContext","drawImage","toDataURL","activateSubtitles","forEach","trackSource","mode","onSubtitlesChange","hide","isNaN","setTimeout","SEEK_AFTER_LOAD_INTERVAL","timeToSeekTo","trySeek","Math","abs","SEEK_AFTER_LOAD_CLOSE_ENOUGH","bufferedRangeObject","buffered","Array","index","preparedSources","filter","DASH_MIME_TYPE","s1","s2","PREFERRED_MIME_TYPE_ORDER","textTrack","activeCues","activeVTTCues","activeCue","line","activeVTTCue","text","verticalPosition","DEFAULT_VTT_CUES_VERTICAL_POSITION","XMPEGURL_MIME_TYPE","MPEG4_MIME_TYPE","loadingPageMainMsg","alt","loadingPageDetails","LoadingPageComponent","MenuButtonComponent","onClick","icon","isDesktop","isActive","isDisabled","isAfterErrorSent","messageStr","thankYouForSendingReport","dangerouslySetInnerHTML","__html","handleSendError","sendReport","MessageComponent","part","onMouseMove","onMouseLeave","flexBasis","size","html","handlePartClicked","onPartClicked","scenarioElement","partBoundingRect","getBoundingClientRect","clientX","left","right","PartComponent","trackMouse","fireInteractedEvent","isDragging","stopMouseTracking","fireInteractionEndedEvent","isHovered","value","secondaryValue","isHandleAlwaysVisible","slider","onMouseEnter","handleMouseEnter","handleMouseLeave","handleMouseMove","nativeEvent","onMouseDown","handleMouseDown","onTouchMove","handleTouchMove","onTouchStart","handleTouchStart","onTouchEnd","handleTouchEnd","marginLeft","calculateHandleLeftMargin","onChangingSliderInteractionStarted","touches","isChangingValue","calculateProgress","onSliderInteraction","onSliderInteractionEnded","SliderComponent","HANDLE_WIDTH","SocialShareComponent","facebookShareUrl","twitterShareUrl","onShared","href","target","facebook","twitter","stopImmediatePropagation","ToggleComponent","checked","onChange","toggleSubtitles","key","label","SubtitleSelectorComponent","fontSize","calculateFontSize","calculatedSize","SubtitlesDisplayComponent","BASE_FONT_SIZE","BASE_WIDTH","max","MIN_FONT_SIZE","min","MAX_FONT_SIZE","licenceAdditionalText","textLicence","linkLicence","newLocation","isLocationClose","areLocationsClose","tooltipLocation","leftTopCoords","calculateLeftTopCoords","tooltipLayer","tooltip","visibility","display","l1","l2","TooltipComponent","CLOSE_LOCATION_DISTANCE_THRESHOLD","layerBoundingBox","tooltipBoundingBox","shiftedX","shiftedY","round","isControlsShown","playPauseEnabled","DesktopOverlayComponent","isPlayPauseEnabled","isControlsDisplayed","logoVisiblePermanently","logo","QualityLevelsComponent","tooltipMetadata","calculateTooltipModel","controlbarEnabled","DesktopMenuComponent","isDisplayed","handleMouseEnteredMenu","handleMouseLeftMenu","hideTooltip","onCancelTooltip","onRequestTooltip","showTooltip","hidePlayerInfoTooltip","clearTimerAndShowControls","setHideControlsTimer","hideControls","coords","poweredByVintom","licenceLabel","playbackStateToTooltipText","unmute","mute","share","exitFullscreen","fullscreen","tooltipTimeoutHandle","clearTimeout","timeFromLastNonImmediateTarget","Date","now","lastNonImmediateTooltipTime","isTooltipTargetImmediate","TOOLTIP_MODE_THRESHOLD","SHOW_TOOLTIP_TIMEOUT","hideControlsTimeoutHandle","SHOW_CONTROLS_TIMEOUT","DesktopFullscreenControlComponent","fullscreenIcon","MenuButtonWithTooltipComponent","tooltipTarget","evt","stopPropagation","seekbarEnabled","DesktopSeekbarComponent","onHideTooltip","onShowTooltip","PlaybackControlComponent","VolumeControlComponent","ScenarioTimeComponent","isMultiElementScenario","hasMultipleParts","socialButtonEnabled","canShare","ExpandableMenuButtonComponent","canExpand","menu","facebookUrl","twitterUrl","fullscreenEnabled","onClickCallback","disabled","bufferingProgress","displayedPastParts","jumpProgress","handlePartMouseMove","currentPart","isChanging","handleSliderInteraction","wasChanging","displayedFutureParts","sliderHtml","findDOMNode","partIndex","partBoundingBox","TOOLTIP_DISTANCE","sliderBoundingRect","TimeFormatter","format","collapseOnClickOutside","button","contains","isExpanded","getDerivedStateFromProps","toggleExpanded","isTooltipDisabled","boundingBox","formatBandwidth","b","pow","toFixed","mbps","quality","isChangingVolume","displayedVolume","toggleHovered","renderVolumeIconSvg","handleSliderInteractionEnd","LOUD_VOLUME_THRESHOLD","isSeeking","isControlsShownAfterPlayerClicked","isSubtitlesSelectorShown","isSocialShareShown","overlayState","calculateOverlayState","isOverlayDisplayed","MobileOverlayComponent","controlState","onUnmute","subtitleSourceSelected","handleShared","MobileMenuComponent","isSocialShareDisplayed","onSocialShareClicked","handleSocialShareClicked","hasSubtitles","onSubtitlesSelectorClicked","handleSubtitlesSelectorClicked","MobileSeekbarComponent","isHidden","onSliderInteractionStarted","handleSeekStart","handleSeekEnd","resetTimerAndShowControls","control","calculateTooltipX","updateFullscreen","doc","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","updateIsLargePlayer","isLargePlayer","MOBILE_LARGE_PLAYER_THRESHOLD","DESKTOP_LARGE_PLAYER_THRESHOLD","SocialShareHelper","getShareConfiguration","isReady","onPlayerInteraction","onPlayerInteractionEnd","onPlayerClick","onContextMenu","onPlayerContextMenu","clientY","preventDefault","requestFullscreen","catch","e","console","unsupportedBrowser","defaultJSAssetsLocation","defaultVideoJSLocation","defaultLottieJSLocation","defaultPlayerServerUrl","defaultCTAStorageUrl","placeholderStartMarker","placeholderEndMarker","placeholder","name","ctaStorageUrlPlaceholder","ctaTypePlaceholder","jsCTAStorageUrlPattern","htmlCTAStorageUrlPattern","cssCTAStorageUrlPattern","videoConfigurationUrl","playerServerUrl","videoLogUrl","gaEndpoint","CTAResource","clickableAreaConditionalCTAFunction","api","config","clickableArea","conditionalParam","conditionalValue","parseInt","bottom","pointerEvents","cursor","onclick","scenarioElementId","Number","open","onCTAAction","clickableAreaCTAFunction","clickableButtonCTAFunction","clickableButton","rounded","classList","add","outline","bgrcolor","backgroundColor","color","buttontext","p","textsize","prepackagedCTAs","Map","set","i18nEn","i18nPl","i18nEs","videoDeleted","videoInPreparation","configurationParsingFailure","resourceLoadingFailure","playbackFailure","runtimeError","videoInPreparationLoadingPage","analyticsCollector","configurationBuilder","build","playerConfig","code","videoDate","analyticsEndpoints","campaign","groupId","configurationLoaded","queueLogNotSupportedBrowser","NotSupportedBrowserPlayerManagerImpl","injectable","inject","AnalyticsCollector","ConfigurationBuilder","iframeNotifier","preferencesStorage","themeUpdater","errorReporter","playerLoader","scenarioLoader","scenarioRunner","controlsLayerManager","playerContainerManager","posterLayerManager","videoLayerManager","musicLayerManager","onReadyCallbacks","onErrorCallbacks","onPlayCallbacks","onPauseCallbacks","onFinishCallbacks","onActionCallbacks","setPlayerAPIDelegate","setPlayerCTAAPIDelegate","registerIframeNotifier","PlayerManagerImpl","onPlayerRemove","setTheme","skin","findScenarioElement","loadScenarioElement","removeAllEventListeners","clearAnalyticsInterval","onReady","logPlayerInit","getCurrentElementId","readyState","cb","adminMode","trace","logPlayerError","playbackData","getPlaybackData","isPlayerStarted","logPlayerStart","logScenarioElementPlaying","videoType","onSeek","onProgress","scenarioElementProgress","ANALYTICS_PROGRESS_25_THRESHOLD","logScenarioElementProgress","ANALYTICS_PROGRESS_50_THRESHOLD","ANALYTICS_PROGRESS_75_THRESHOLD","ANALYTICS_PROGRESS_100_THRESHOLD","onScenarioElementStart","logScenarioElementStart","startCollectingAnalyticsAtInterval","onScenarioElementEnd","getScenarioPath","loadNextScenarioElement","onCTAShow","isTechnicalCTA","logCTAShow","triggerType","visibilityRange","actionAdditionalData","actionState","logCTAAction","playing","isPlaying","scenarioElements","currentPartNumber","nextId","currentElement","nextScenarioElementId","nextElement","isAutoplay","DEFAULT_SCENARIO_ELEMENT_PLAY_OPTIONS","music","musicUrl","musicStartTime","musicEndTime","scenarioResources","loadResources","scenarioGlobalState","getScenarioGlobalState","getInitialScenarioGlobalState","logUserError","sendErrorLog","notify","storedPreferences","getPreferences","ScenarioGlobalState","ininitialState","parts","mutedStart","autoRefreshBeforeReady","subtitlesActiveOnStart","currentElementId","counter","timeToReload","conf","checkStatus","status","scEl","initial","showInitialPoster","poster","loadAndInitializeLayers","isCTAOnlyElement","isCTAOnlyPlaybackStoppingElement","checkAutoplaySupported","playerControls","hasScenarioElementWithVideo","analyticsIntervalHandle","interval","ANALYTICS_SLOWER_RATE_THRESHOLD","ANALYTICS_FASTER_RATE","ANALYTICS_SLOWER_RATE","video","result","IframeNotifier","PreferencesStorage","ThemeUpdater","ErrorReporter","loader","PlayerLoader","ScenarioLoader","ScenarioRunner","layerManager","ControlsLayerManager","PlayerContainerManager","PosterLayerManager","VideoLayerManager","MusicLayerManager","fetchConfig","fetchedConfigurationJSON","parseAndMerge","parse","PlayerConfiguration","confOverride","ConfigurationOverride","FullPlayerConfiguration","ctaStorageUrl","calculateVideoJSUrl","jsAssetsUrl","calculateLottieUrl","reject","fetch","response","ConfigurationBuilderImpl","playerContainer","Container","bind","PlayerContainer","toConstantValue","AnimationLayer","ControlsLayer","CTALayer","PosterLayer","VideoLayer","MusicLayer","AnalyticsCollectorImpl","inSingletonScope","GoogleAnalyticsSender","GoogleAnalyticsSenderImpl","VintomAnalyticsSender","VintomAnalyticsSenderImpl","PreferencesStorageImpl","ErrorReporterImpl","IframeNotifierImpl","animationPersonalizer","AnimationPersonalizer","AnimationPersonalizerImpl","personalizer","Personalizer","PersonalizerImpl","ThemeUpdaterImpl","PlayerLoaderImpl","resourceLoader","ResourceLoader","ResourceLoaderImpl","ScenarioLoaderImpl","PlayerContainerManagerImpl","ControlsLayerManagerImpl","CTALayerManager","CTALayerManagerImpl","DependentAnimationLayerManager","DependentAnimationLayerManagerImpl","IndependentAnimationLayerManager","IndependentAnimationLayerManagerImpl","PosterLayerManagerImpl","VideoLayerManagerImpl","MusicLayerManagerImpl","AnimationDrivenScenarioExecutor","AnimationDrivenScenarioExecutorImpl","VideoDrivenScenarioExecutor","VideoDrivenScenarioExecutorImpl","CTAOnlyScenarioExecutor","CTAOnlyScenarioExecutorImpl","ScenarioRunnerImpl","method","body","JSON","stringify","errorToPayload","payload","parent","postMessage","loadVideoJS","loadVideoLottie","VIDEOJS_NO_DYNAMIC_STYLE","location","videoJSUrl","hasScenarioElementWithAnimation","lottieUrl","resources","mayNotExist","resourcesToLoad","resource","resourcesRequestedEarlierProgress","cssLocationsToLoad","jsLocationsToLoad","loadCssResources","loadJsResources","locations","loadJSResource","loadJsRequest","success","loadCssResource","link","loadCssRequest","head","onload","onerror","CachedCTAResource","animationsBySrc","ctasByType","posterObjectUrlsByUrl","ResourcesCache","cache","ctaPlayerAPI","scenarioEl","loadPrepackagedCTAResources","loadAndPersonalizeAnimationResources","loadAndPersonalizeCTAResources","loadPosterResources","values","objectUrl","URL","revokeObjectURL","loadAndPersonalizeAnimationResource","customAttributes","promises","reduce","acc","val","valItem","eval","blob","personalized","personalizeAnim","posters","ctas","loadImgResource","createObjectURL","log","types","htmlUrl","replace","jsUrl","cssUrl","loadCTAResource","htmlSrc","jsSrc","cssSrc","loadedHtml","jsLoadedSuccessfully","cssLoadedSuccessfully","updateAnimJSON","escapeBreakingChars","globalExpr","init","layers","findLayersByName","i","keyFrameNo","ks","k","evaluatedValue","s","scale","anchor","a","opacity","o","rotation","r","updateText","updateShape","updateImage","t","fc","slice","font","f","asset","findAssetByRefId","refId","pathLength","lastIndexOf","u","substr","nm","assets","personalizationAttr","personalizationAttrValue","personalizationPlaceholder","RegExp","escapeRegExp","attr","str","projectCode","userIdentifier","timestamp","BaseAnalyticsEvent","PlayerInitEvent","PlayerStartEvent","errorMessage","PlayerErrorEvent","ScenarioElementStartEvent","endReason","ScenarioElementPlayingEvent","ScenarioElementProgressEvent","CTAShowEvent","CTAActionEvent","NotSupportedBrowserEvent","googleAnalyticsSender","vintomAnalyticsSender","configuredSenders","googleAnalyticsEndpointExists","googleAnalyticsEventQueue","endpoints","readUserIdentifierFromCookie","createUserIdentifier","saveUserIdentifierToCookie","gaTrackers","endpoint","provider","gaServiceTracker","processGoogleAnalyticsEventQueue","vintomEndpoints","vintomServer","sendEvent","lastPlayEventTime","googleAnalyticsSenderInitialized","Md5","hashStr","random","identifier","CookieHelper","setCookie","USER_IDENTIFIER_COOKIE_NAME","readCookie","eventCategory","gaServiceTrackers","vintomGADataLayer","vintomGtag","arguments","anonymize_ip","eventAction","eventLabel","serializeEventToAction","event_category","event_label","base","eventJSON","serializeEventToJSON","headers","serializeBaseAnalyticsEvent","ei","em","st","vo","ts","er","ct","ac","ds","dttm","se","c","vui","vd","pc","gr","isSubtitlesDisplayed","volumeStr","VOLUME_COOKIE_NAME","parseFloat","isSubtitlesDisplayedStr","SUBTITLES_DISPLAYED_COOKIE_NAME","toLowerCase","language","LANGUAGE_COOKIE_NAME","StoredPreferences","saveVolumePreference","toString","saveSubtitlesPreference","animationLayerManager","ctaLayerManager","playerAPI","cancel","animationFrameHandle","cancelAnimationFrame","intializeAndRun","initializeScenarioElement","runSyncLoop","getCurrentTime","resetObservers","newScenarioElement","resourcesCache","resourcesLoaded","setTotalTime","scenarioElementEnded","withVolume","withMuted","requestAnimationFrame","unstable_batchedUpdates","displayAllCTAsForCTAOnlyElemnt","ctaOnlyScenarioExecutor","videoDrivenScenarioExecutor","animationDrivenScenarioExecutor","allExecutors","withNowPlaying","currentActiveExecutor","setCurrentVideoSnapshotAsPoster","showCachedPoster","loadVideoAndGetDuration","selectedSubtitles","changeIsMuted","withSelectedSubtitles","updateQualityLevels","updateBandwidth","currentCTAs","intializeReusableCTAs","removeCTAs","findCTAsAtTime","displayCTAs","playbackStoppingCTAs","stopsPlayback","hashToCTACount","allElements","countForHash","duplicatedCTAHashes","entries","entry","ctaHashesToDisplay","ctasToRemove","ctasToLoad","currCTA","loadCTAs","ctaToRemove","toRemove","cachedCTAResource","isCTAReusable","ctaWithPoster","posterToShow","ctasAtTime","ScenarioTimeHelper","getTimeFromVideoStart","ctasAtEnd","concat","currentAnimationSources","findAnimationsAtTime","displayAbovePoster","animationsToLoad","animationSources","animationToRemoveSources","animationToLoadSources","currentAnimations","getAnimationRelativeTime","startTimeMillis","endTimeMillis","triggerTypeEndCTA","videoSnapshot","doShowPoster","posterObjectUrl","validate","JsonParseError","JsonParseErrorCode","VALIDATION_FAILED","AnalyticsEndpoint","Field","Regexp","Animation","RawJsonField","remarketingData","StringHashCodeGenerator","validateClickableAreaCustomAttributes","validateClickableButtonStringAttributes","validateClickableButtonBooleanAttributes","dimensionName","validateClickableAreaDimension","CTA","VisibilityRange","ArrayField","PlayerControls","Skin","el","Part","aspectRatioStr","parseAspectRatio","aspectRatioParts","split","allScenarioElementIds","uniqueScenarioElementIds","Set","partId","totalPartsSize","ctaOnlyScenarioElements","allCTAIds","uniqueCTAIds","ScenarioElement","Soundtrack","Video","musicStart","musicEnd","changeMillisecondsToSeconds","Source","Subtitle","startOffset","endOffset","scenarioParts","useDefaultSubtitles","_scenarioPath","ScenarioPath","_volume","FULL_VOLUME","_isMuted","_autoRefreshBeforeReady","_selectedSubtitles","_aspecRatio","_preferredSubtitleLabel","subtitlesLanguage","_isSubtitlesShownWhenAvailable","copy","nowPlaying","findSubtitlesMatchingLabel","findDefaultSubtitles","PastOrCurrentPart","elements","_allElements","_allParts","_futureParts","_pastParts","_currentPart","FULL_LENGTH","newPartIndex","findIndex","currentPartIndex","idx","newPart","containerWidth","containerHeight","parser","UAParser","getBrowser","version","isIE","isDashSupported","cookie","cookieStr","trim","startsWith","documentListeners","windowListeners","getListenersAndTargetForName","targetName","listeners","handler","handlers","handlerIndex","listener","splice","pageUrl","getPageUrl","hash","charCodeAt","supportedBrowsers","minVersion","os","device","specsForBrowser","spec","deviceSpecificSpec","osSpecificSpec","noDeviceSpec","SECONDS_IN_HOUR","SECONDS_IN_MINUTE","hours","floor","minutes","seconds","formattedSeconds","preferredLocale","locale","getBrowserLocaleI18n","en","AUDIO","Blob","Uint8Array","VIDEO","setupDefaultValues","assign","timeout","inline","startPlayback","_ref","elementCallback","_elementCallback","playResult","timeoutId","sendOutput","playError","audio","ArrayIterator","_apply","Function","call","apply","_call","isArray","not","func","throwsError","valueOrFalseIfThrows","isCallableWithoutNew","arePropertyDescriptorsSupported","defineProperty","supportsDescriptors","functionsHaveNames","_forEach","prototype","_reduce","_filter","_some","some","object","force","configurable","enumerable","writable","defineProperties","forceOverride","_toString","isCallable","Value","getter","TypeError","proxy","originalObject","targetObject","originalDescriptor","getOwnPropertyDescriptor","redefine","property","newValue","descriptor","defineByDescriptor","preserveToString","create","properties","Prototype","supportsSubclassing","C","setPrototypeOf","Sub","Subclass","arg","constructor","globals","g","getGlobal","globalIsFinite","isFinite","_indexOf","String","_arrayIndexOfApply","_concat","_strSlice","_push","_pushApply","_shift","shift","_max","_min","_floor","_abs","_exp","exp","_log","_sqrt","sqrt","_hasOwnProperty","hasOwnProperty","noop","OrigMap","origMapDelete","origMapGet","origMapHas","has","origMapSet","Symbol","symbolSpecies","species","numberIsNaN","numberIsFinite","_sign","sign","number","_log1p","NaN","Infinity","isStandardArguments","isLegacyArguments","callee","isArguments","Type","primitive","string","regex","symbol","replacement","original","hasSymbols","$iterator$","iterator","Reflect","$String","domAll","isNullOrUndefined","ES","Call","F","V","IsCallable","RequireObjectCoercible","optMessage","TypeIsObject","ToObject","IsConstructor","ToInt32","ToNumber","ToUint32","ToInteger","ToLength","len","MAX_SAFE_INTEGER","SameValue","SameValueZero","IsIterable","GetIterator","itFn","GetMethod","it","IteratorComplete","iterResult","done","IteratorClose","completionIsThrow","returnMethod","innerResult","innerException","IteratorNext","next","IteratorStep","Construct","newTarget","isES6internal","construct","proto","obj","SpeciesConstructor","O","defaultConstructor","S","CreateHTML","tag","attribute","ToString","p1","IsRegExp","argument","isRegExp","match","defineWellKnownSymbol","sym","search","symbolSearch","originalSearch","searchShim","regexp","searcher","symbolReplace","originalReplace","replaceValue","replaceShim","searchValue","replacer","symbolSplit","originalSplit","limit","splitShim","separator","splitter","symbolMatchExists","stringMatchIgnoresSymbolMatch","symbolMatch","originalMatch","matchShim","matcher","wrapConstructor","keysToSkip","getOwnPropertyNames","defaultSpeciesGetter","addDefaultSpecies","addIterator","impl","implementation","createDataProperty","createDataPropertyOrThrow","emulateES6construct","defaultNewTarget","defaultProto","slots","fromCodePoint","originalFromCodePoint","codePoints","StringShims","RangeError","fromCharCode","join","raw","callSite","cooked","rawString","literalsegments","nextKey","nextSeg","nextSub","stringElements","nextIndex","stringRepeat","repeat","times","half","stringMaxLength","StringPrototypeShims","thisStr","numTimes","searchString","searchStr","endsWith","endPosition","pos","includes","codePointAt","first","second","startsWithRejectsRegex","startsWithHandlesInfinity","re","ws","trimRegexp","trimShim","nonWS","nonWSregex","isBadHexRegex","hasStringTrimBug","iteratorResult","StringIterator","_s","_i","ArrayShims","items","mapFn","mapping","T","nextValue","arrayLike","of","A","array","kind","retval","Foo","fooArr","ArrayPrototypeShims","copyWithin","relativeTarget","relativeStart","relativeEnd","finalItem","count","direction","predicate","list","thisArg","unscopables","originalArrayPrototypeValues","searchElement","getPrototypeOf","arr","arrayFromSwallowsNegativeLengths","arrayFromHandlesIterables","origArrayFrom","int32sAsOne","toLengthsCorrectly","reversed","originalForEach","callbackFn","originalMap","originalFilter","originalSome","every","originalEvery","originalReduce","reduceRight","originalReduceRight","lacksOctalSupport","lacksBinarySupport","trimsNonWhitespace","OrigNumber","binaryRegex","octalRegex","isBinary","isOctal","toPrimitive","valueOf","hasNonWS","isBadHex","NumberShim","primValue","receiver","valueOfSucceeds","MAX_VALUE","MIN_VALUE","NEGATIVE_INFINITY","POSITIVE_INFINITY","maxSafeInteger","MIN_SAFE_INTEGER","EPSILON","isInteger","isSafeInteger","FAKENULL","gpo","spo","isEnumerableOn","propertyIsEnumerable","ensureEnumerable","prop","sliceArgs","desiredArgCount","assignTo","assignReducer","symbols","sourceKeys","getOwnPropertySymbols","ObjectShims","is","preventExtensions","thrower","ES5ObjectShims","magic","checkArgs","polyfill","originalObjectKeys","regexRejectingObjectKeys","regexKeys","cachedWindowNames","originalObjectGetOwnPropertyNames","originalObjectGetOwnPropertyDescriptor","seal","originalObjectSeal","isSealed","originalObjectIsSealed","freeze","originalObjectFreeze","isFrozen","originalObjectIsFrozen","originalObjectPreventExtensions","isExtensible","originalObjectIsExtensible","originalGetProto","desc","hasFlags","regExpFlagsGetter","global","ignoreCase","multiline","unicode","sticky","regExpSupportsFlagsWithRegex","regExpNeedsToSupportSymbolMatch","regexToStringIsGeneric","regexToStringSupportsGenericFlags","flags","origRegExpToString","R","flagsGetter","sourceDesc","legacySourceGetter","sourceGetter","OrigRegExp","RegExpShim","pattern","patternIsRegExp","$input","regexGlobals","input","lastMatch","lastParen","leftContext","rightContext","inverseEpsilon","roundTiesToEven","n","BINARY_32_EPSILON","BINARY_32_MAX_VALUE","BINARY_32_MIN_VALUE","E","LOG2E","LOG10E","numberCLZ","clz","MathShims","acosh","xInvSquared","halfX","asinh","aSquared","atanh","cbrt","negate","clz32","cosh","expm1","sum","hypot","largest","log2","log10","log1p","sinh","tanh","trunc","imul","al","bl","fround","v","withinULPDistance","expected","distance","expm1OfTen","origMathRound","roundHandlesBoundaryConditions","roundDoesNotIncreaseIntegers","num","origImul","thenable","PromiseShim","IsPromise","promise","_promise","makeZeroTimeout","PromiseCapability","capability","resolver","timeouts","messageName","setZeroTimeout","fn","handleMessage","data","Promise$prototype","Promise$prototype$then","makePromiseAsap","P","pr","task","enqueue","setImmediate","process","nextTick","PROMISE_IDENTITY","PROMISE_THROWER","PROMISE_PENDING","PROMISE_FULFILLED","PROMISE_REJECTED","PROMISE_FULFILL_OFFSET","PROMISE_REJECT_OFFSET","PROMISE_CAPABILITY_OFFSET","PROMISE_FAKE_CAPABILITY","enqueuePromiseReactionJob","promiseReactionJob","promiseCapability","handlerResult","fulfillPromise","reactionLength","fulfillReactionHandler0","reactionCapability0","rejectReactions0","rejectPromise","reason","rejectReactionHandler0","createResolvingFunctions","alreadyResolved","resolution","promiseResolveThenableJob","optimizedThen","resolvingFunctions","_promiseAllResolver","remaining","alreadyCalled","performPromiseAll","iteratorRecord","resultCapability","nextPromise","resolveElement","performPromiseRace","iterable","exception","ee","race","rejectFunc","resolveFunc","onRejected","onFulfilled","fulfillReactionHandler","rejectReactionHandler","accept","defer","chain","promiseSupportsSubclassing","promiseIgnoresNonFunctionThenCallbacks","promiseRequiresObjectContext","promiseResolveBroken","p2","getsThenSynchronously","BadResolverPromise","executor","hasBadResolverPromise","origAll","origRace","origResolve","origReject","m","testOrder","preservesInsertionOrder","preservesNumericInsertionOrder","fastkey","skipInsertionOrderCheck","emptyObject","addIterableToMap","MapConstructor","iter","adder","nextItem","addIterableToSet","SetConstructor","collectionShims","empty","MapEntry","prev","isRemoved","Map$prototype","isMap","_es6map","requireMapSlot","MapIterator","_head","isMapIterator","MapShim","_map","_size","_storage","fkey","clear","context","Set$prototype","isSet","_es6set","requireSetSlot","SetShim","decodeKey","charAt","ensureMap","hasFKey","SetIterator","entireSet","isSetIterator","testMap","mapUsesSameValueZero","mapSupportsChaining","testSet","setUsesSameValueZero","setSupportsChaining","origSetAdd","origSetHas","origSetDel","mapSupportsSubclassing","M","mapFailsToSupportSubclassing","mapRequiresNew","setSupportsSubclassing","setFailsToSupportSubclassing","setRequiresNew","OrigSet","newMap","mapIterationThrowsStopIterator","anonymousSetHas","throwUnlessTargetIsObject","ReflectShims","deleteProperty","ownKeys","callAndCatchException","internalGet","internalSet","propertyKey","attributes","objectDotGetPrototypeOf","willCreateCircularPrototype","lastProto","defineOrOverrideReflectProperty","shim","originalReflectGetProto","basic","extensible","dateToString","shimmedDateToString","stringHTMLshims","big","blink","bold","fixed","fontcolor","fontsize","italics","small","strike","sub","sup","shouldOverwrite","output","quotesCount","JSONstringifiesSymbols","JSONstringifyAcceptsObjectSymbol","origStringify","replaceFn","wrappedReplacer","parsedValue","createEvent","initEvent","dispatchEvent","j","exit","events","change","w3","enabled","webkit","moz","ms","Element","ERROR_MSGS","METADATA_KEY","_tagParameterOrProperty","metadataKey","annotationTarget","propertyName","metadata","parameterIndex","paramsOrPropertiesMetadata","isParameterDecorator","INVALID_DECORATOR_OPERATION","hasOwnMetadata","getMetadata","paramOrPropertyMetadata","paramOrPropertyMetadata_1","DUPLICATED_METADATA","defineMetadata","_decorate","decorators","decorate","_param","paramIndex","decorator","tagParameter","TAGGED","tagProperty","TAGGED_PROP","error_msgs_1","metadata_1","decorator_utils_1","LazyServiceIdentifer","_cb","unwrap","serviceIdentifier","targetKey","UNDEFINED_INJECT_ANNOTATION","Metadata","INJECT_TAG","ERRORS_MSGS","PARAM_TYPES","DUPLICATED_INJECTABLE_DECORATOR","DESIGN_PARAM_TYPES","multiInject","MULTI_INJECT_TAG","named","NAMED_TAG","optional","OPTIONAL_TAG","postConstruct","POST_CONSTRUCT","MULTIPLE_POST_CONSTRUCT_METHODS","tagged","metadataValue","NAME_TAG","unmanaged","UNMANAGED_TAG","literal_types_1","id_1","Binding","scope","activated","BindingTypeEnum","Invalid","constraint","implementationType","onActivation","dynamicValue","clone","BindingCount","MultipleBindingsAvailable","NoBindingsAvailable","OnlyOneBindingAvailable","NULL_ARGUMENT","KEY_NOT_FOUND","AMBIGUOUS_MATCH","CANNOT_UNBIND","NOT_REGISTERED","MISSING_INJECTABLE_ANNOTATION","MISSING_INJECT_ANNOTATION","CIRCULAR_DEPENDENCY","NOT_IMPLEMENTED","INVALID_BINDING_TYPE","NO_MORE_SNAPSHOTS_AVAILABLE","INVALID_MIDDLEWARE_RETURN","INVALID_FUNCTION_BINDING","INVALID_TO_SELF_VALUE","ARGUMENTS_LENGTH_MISMATCH","CONTAINER_OPTIONS_MUST_BE_AN_OBJECT","CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE","CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE","CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK","POST_CONSTRUCT_ERROR","CIRCULAR_DEPENDENCY_IN_FACTORY","STACK_OVERFLOW","BindingScopeEnum","Request","Singleton","Transient","ConstantValue","Constructor","DynamicValue","Factory","Instance","Provider","TargetTypeEnum","ClassProperty","ConstructorArgument","Variable","__awaiter","_arguments","generator","fulfilled","step","rejected","__generator","_","sent","trys","ops","verb","op","pop","binding_1","metadata_reader_1","planner_1","resolver_1","binding_to_syntax_1","serialization_1","container_snapshot_1","lookup_1","containerOptions","defaultScope","autoBindInjectable","skipBaseClassChecks","_bindingDictionary","Lookup","_snapshots","_middleware","_metadataReader","MetadataReader","merge","container1","container2","bindingDictionary","getBindingDictionary","bindingDictionary1","bindingDictionary2","copyDictionary","origin","destination","traverse","binding","modules","getHelpers","_getContainerModuleHelpersFactory","_a","modules_1","currentModule","containerModuleHelpers","registry","bindFunction","unbindFunction","isboundFunction","rebindFunction","loadAsync","modules_2","_b","unload","_this","conditionFactory","item","moduleId","condition","removeByCondition","BindingToSyntax","rebind","unbind","getServiceIdentifierAsString","unbindAll","isBound","bound","hasKey","isBoundNamed","isBoundTagged","bindings","request_1","createMockRequest","snapshot","ContainerSnapshot","restore","middleware","createChild","child","applyMiddleware","middlewares","_planAndResolve","curr","applyCustomMetadataReader","metadataReader","_get","getTagged","getNamed","getAll","getAllTagged","getAllNamed","constructorFunction","tempContainer","toSelf","setModuleId","bindingToSyntax","_binding","getRebindFunction","_rebind","mId","_bind","_isBound","_unbind","avoidConstraints","isMultiInject","targetType","defaultArgs","contextInterceptor","plan","ContainerModule","AsyncContainerModule","getMap","delete","updatedEntries","container_1","container_module_1","injectable_1","tagged_1","named_1","inject_1","optional_1","unmanaged_1","multi_inject_1","target_name_1","post_construct_1","constraint_helpers_1","traverseAncerstors","taggedConstraint","namedConstraint","typeConstraint","binding_utils_1","multiBindToService","Context","addPlan","setCurrentRequest","currentRequest","getConstructorMetadata","constructorFunc","compilerGeneratedMetadata","userGeneratedMetadata","getPropertiesMetadata","Plan","parentContext","rootRequest","binding_count_1","exceptions_1","context_1","plan_1","reflection_utils_1","target_1","cntnr","_getActiveBindings","parentRequest","getBindings","activeBindings","isOptional","serviceIdentifierString","msg","listMetadataForTarget","listRegisteredBindingsForServiceIdentifier","_validateActiveBindingCount","_createSubRequests","childRequest","thePlan","addChildRequest","subChildRequest","dependencies","getDependencies","baseClassDependencyCount","getBaseClassDependencyCount","getFunctionName","dependency","injectMetadata","Target","tagMetadata","_createTarget","isStackOverflowExeption","circularDependencyToException","QueryableString","reverseString","reverseSearchString","reverse","equals","compareString","getTargets","constructorName","isBaseClass","serviceIdentifiers","constructorArgsMetadata","constructorTargets","iterations","targets","getConstructorArgsAsTarget","getConstructorArgsAsTargets","propertyTargets","getClassPropsAsTargets","targetMetadata","formatTargetMetadata","isManaged","injectIdentifier","classPropsMetadata","keys_1","baseConstructor","baseTargets","targetMetadataMap","unmanagedCount","dependencyCount","childRequests","requestScope","queryable_string_1","namedOrTagged","metadataItem","hasTag","matchesArray","matchesTag","isNamed","isTagged","getNamedTag","getCustomTags","matchesNamedTag","resolveInstance","constr","resolveRequest","Func","injections","constructorInjections","instance","propertyInjectionsRequests","propertyInjections","injection","_injectProperties","hasMetadata","_postConstruct","instantiation_1","invokeFactory","factoryType","_resolveRequest","targetIsAnArray","targetParentIsNotAnArray","_f","isSingleton","isRequestSingleton","binding_when_on_syntax_1","BindingInSyntax","inRequestScope","BindingWhenOnSyntax","inTransientScope","binding_in_syntax_1","binding_on_syntax_1","binding_when_syntax_1","BindingInWhenOnSyntax","_bindingWhenSyntax","BindingWhenSyntax","_bindingOnSyntax","BindingOnSyntax","_bindingInSyntax","when","whenTargetNamed","whenTargetIsDefault","whenTargetTagged","whenInjectedInto","whenParentNamed","whenParentTagged","whenAnyAncestorIs","ancestor","whenNoAncestorIs","whenAnyAncestorNamed","whenAnyAncestorTagged","whenNoAncestorNamed","whenNoAncestorTagged","whenAnyAncestorMatches","whenNoAncestorMatches","binding_in_when_on_syntax_1","toDynamicValue","toConstructor","toFactory","toFunction","bindingWhenOnSyntax","toAutoFactory","toProvider","toService","service","metaData","idCounter","alreadyDependencyChain","name_1","registeredBindingsList","registeredBindings","services","_createStringArr","req","dependencyChainToString","m_1","namedTag","otherTags","opts","cmp","space","cycles","aobj","bobj","seen","level","indent","colonSeparator","toJSON","out","objectKeys","keyValue","at","ch","escapee","hex","uffff","white","word","reviver","walk","holder","gap","rep","escapable","meta","quote","lastIndex","partial","mind","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","subscribe","bundleIds","bundleId","depsNotFound","numWaiting","pathsNotFound","publish","q","executeCallbacks","loadFile","path","numTries","isCss","async","maxTries","numRetries","beforeCallbackFn","before","pathStripped","rel","onbeforeload","ev","sheet","cssText","defaultPrevented","loadFiles","paths","loadjs","arg1","arg2","deps","reset","isDefined","funcTag","genTag","objectToString","nativeMax","zip","resIndex","arrayFilter","group","isObjectLike","isLength","isObject","isFunction","isArrayLike","iteratee","baseTimes","arrayMap","otherArgs","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","getNative","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","__data__","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseAssignValue","eq","objValue","objectCreate","baseCreate","baseFor","createBaseFor","getRawTag","symToStringTag","toStringTag","baseGetTag","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","typedArrayTags","isPrototype","nativeKeysIn","isProto","assignMergeValue","baseMergeDeep","keysIn","safeGet","baseMerge","srcIndex","customizer","srcValue","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArrayLikeObject","isPlainObject","toPlainObject","mergeFunc","stacked","isCommon","isTyped","identity","overRest","setToString","constant","baseSetToString","arrayBuffer","byteLength","freeExports","nodeType","freeModule","Buffer","allocUnsafe","buffer","isDeep","cloneArrayBuffer","typedArray","byteOffset","assignValue","isNew","coreJsData","baseRest","isIterateeCall","assigner","guard","fromRight","keysFunc","freeGlobal","isKeyable","baseIsNative","getValue","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","nativeCreate","reIsUint","uid","maskSrcKey","exec","IE_PROTO","Ctor","assocIndexOf","getMapData","freeProcess","nodeUtil","require","transform","freeSelf","shortOut","nativeNow","lastCalled","stamp","pairs","LARGE_ARRAY_SIZE","other","baseIsArguments","stubFalse","objectCtorString","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeysIn","createAssigner","copyObject","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","aa","ba","ca","h","l","framesToPop","encodeURIComponent","da","ea","fa","ha","ia","ja","ka","ma","na","oa","pa","extractEvents","eventTypes","qa","phasedRegistrationNames","ra","registrationName","sa","ta","ua","va","wa","xa","currentTarget","la","ya","za","Aa","Ba","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Ca","injectEventPluginOrder","injectEventPluginsByName","Da","stateNode","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","return","Na","dispatchConfig","Oa","_targetInst","Pa","Qa","Ra","Sa","Ta","Ua","animationend","animationiteration","animationstart","transitionend","Va","Wa","Xa","transition","Ya","Za","$a","ab","bb","eb","fb","gb","textContent","hb","ib","z","Interface","isDefaultPrevented","returnValue","kb","eventPool","lb","destructor","jb","getPooled","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","extend","mb","nb","ob","pb","qb","documentMode","rb","sb","tb","ub","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","vb","wb","keyCode","xb","detail","yb","Bb","which","zb","ctrlKey","altKey","metaKey","char","Ab","Cb","Db","Eb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","date","datetime","email","month","password","tel","week","Qb","nodeName","Rb","srcElement","correspondingUseElement","Sb","Tb","Vb","_valueTracker","setValue","stopTracking","Ub","Wb","Xb","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","Yb","D","for","Zb","$b","bc","cc","dc","ec","gc","hc","ic","jc","kc","lc","mc","displayName","$$typeof","_status","_result","nc","_debugOwner","_debugSource","fileName","lineNumber","oc","qc","rc","acceptsBooleans","attributeNamespace","mustUseProperty","vc","wc","toUpperCase","xc","tc","uc","sc","removeAttribute","setAttributeNS","yc","zc","defaultChecked","defaultValue","_wrapperState","initialChecked","Ac","initialValue","controlled","Bc","Cc","Dc","Ec","ownerDocument","activeElement","tabIndex","Fc","Gc","Jc","Kc","Lc","Mc","Nc","Oc","Pc","detachEvent","Qc","Rc","attachEvent","Sc","Tc","Uc","Vc","_isInputEventSupported","Wc","view","Xc","Alt","Control","Meta","Shift","Yc","getModifierState","Zc","$c","ad","bd","cd","dd","screenX","screenY","pageX","pageY","shiftKey","buttons","relatedTarget","fromElement","toElement","movementX","movementY","ed","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","fd","mouseEnter","mouseLeave","pointerEnter","pointerLeave","gd","defaultView","parentWindow","alternate","hd","jd","kd","effectTag","ld","nd","sibling","current","md","od","animationName","elapsedTime","pseudoElement","pd","clipboardData","qd","rd","charCode","sd","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","td","ud","dataTransfer","wd","targetTouches","changedTouches","xd","yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","zd","Ad","Bd","Cd","isInteractive","Dd","isInteractiveTopLevelEventType","Ed","Fd","Gd","targetInst","ancestors","containerInfo","topLevelType","Hd","H","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","firstChild","Rd","nextSibling","Sd","compareDocumentPosition","Td","HTMLIFrameElement","contentDocument","Ud","contentEditable","Vd","Wd","select","Xd","Yd","Zd","$d","ae","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","be","onSelect","children","Children","de","fe","selected","defaultSelected","ge","he","ie","je","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","ke","le","me","ne","oe","namespaceURI","MSApp","execUnsafeLocalFunction","pe","lastChild","nodeValue","qe","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","te","substring","ue","menuitem","area","br","col","embed","hr","img","keygen","param","wbr","ve","we","xe","blur","focus","ye","ze","Ae","Be","autoFocus","Ce","De","Ee","Ge","He","Ie","Je","I","J","Ke","K","L","Le","Me","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Ne","Oe","Pe","Qe","getChildContext","Re","__reactInternalMemoizedMergedChildContext","Se","Te","Ue","Ve","Xe","elementType","pendingProps","firstContextDependency","memoizedState","updateQueue","memoizedProps","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","N","Ye","isReactComponent","$e","af","bf","cf","df","ef","pendingChildren","ff","didError","earliestPendingTime","latestPendingTime","gf","hf","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","jf","nextExpirationTimeToWorkOn","kf","lf","baseState","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","mf","nf","pf","qf","rf","sf","tf","uf","vf","wf","xf","yf","zf","Af","Bf","_context","_currentValue","Cf","Df","Ef","observedBits","Ff","Gf","Hf","If","Jf","documentElement","tagName","Kf","Lf","Mf","defaultProps","Of","ReactCurrentOwner","Pf","refs","Qf","Vf","isMounted","_reactInternalFiber","enqueueSetState","Rf","Sf","Tf","Uf","enqueueReplaceState","enqueueForceUpdate","Wf","shouldComponentUpdate","isPureReactComponent","Xf","contextType","currentDispatcher","readContext","updater","Zf","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","$f","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","ag","bg","_owner","_stringRef","cg","dg","w","B","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","Q","qg","rg","compare","sg","tg","ug","vg","wg","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","xg","getDerivedStateFromError","yg","pendingContext","zg","timedOutAt","fallback","Ag","_ctor","default","Nf","Ze","hydrate","hidden","_calculateChangedBits","unstable_observedBits","Bg","Cg","Hg","Ig","Jg","WeakSet","Kg","Lg","Mg","Og","Pg","Qg","Rg","insertBefore","_reactRootContainer","Sg","wasMultiple","multiple","Fe","Ng","Tg","Ug","WeakMap","Vg","Wg","Xg","componentDidCatch","Yg","componentStack","Zg","$g","ah","bh","dh","U","eh","fh","gh","jh","kh","createElementNS","createTextNode","lh","mh","pendingCommitExpirationTime","nh","maxDuration","pingCache","oh","finishedWork","ph","qh","rh","sh","th","uh","vh","wh","xh","W","yh","zh","X","Ah","Y","Bh","Ch","Z","Dh","Eh","Fh","unstable_now","Gh","Hh","Ih","Jh","Kh","unstable_cancelCallback","unstable_scheduleCallback","Lh","timeoutHandle","Mh","Nh","Oh","nextScheduledRoot","Ph","Qh","Rh","unstable_shouldYield","_onComplete","Sh","firstBatch","_expirationTime","_defer","rangeCount","db","focusedElem","selectionRange","Yf","Vh","__reactInternalSnapshotBeforeUpdate","G","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","Fb","Gb","Hc","ii","Dg","Eg","ji","Ic","Fg","ce","Th","Uh","Wh","Xh","Yh","Zh","$h","ai","_root","_callbacks","_next","_hasChildren","_didComplete","_children","bi","_didCommit","_onCommit","ci","_internalRoot","di","fi","legacy_renderSubtreeIntoContainer","hasAttribute","gi","querySelectorAll","form","commit","unmount","createBatch","ki","createPortal","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","supportsFiber","onCommitFiberRoot","onCommitFiberUnmount","We","overrideProps","findHostInstanceByFiber","bundleType","rendererPackageName","li","mi","checkDCE","forceUpdate","__self","__source","keyPrefix","escape","toArray","only","createRef","PureComponent","createContext","_currentValue2","_threadCount","Consumer","forwardRef","lazy","memo","Fragment","StrictMode","Suspense","cloneElement","createFactory","isValidElement","unstable_ConcurrentMode","unstable_Profiler","exporter","makeExporter","previous","hasOwn","supportsSymbol","toPrimitiveSymbol","iteratorSymbol","supportsCreate","supportsProto","__proto__","downLevel","HashMap","MakeDictionary","functionPrototype","usePolyfill","env","_Map","CreateMapPolyfill","_Set","CreateSetPolyfill","CreateWeakMapPolyfill","IsUndefined","IsArray","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","IsPropertyKey","OrdinaryDefineOwnMetadata","OrdinaryHasMetadata","OrdinaryHasOwnMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","decorated","Create","MetadataKey","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","parentKeys","ownKeys_1","parentKeys_1","IteratorValue","IsSymbol","ToPrimitive","PreferredType","hint","exoticToPrim","OrdinaryToPrimitive","toString_1","toString_2","prototypeProto","cacheSentinel","arraySentinel","selector","_index","_keys","_values","_selector","throw","_cacheKey","_cacheIndex","_find","getKey","getEntry","insert","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","GenRandomBytes","crypto","getRandomValues","msCrypto","byte","__","priorityLevel","performance","_schedMock","MessageChannel","port2","port1","onmessage","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_NormalPriority","unstable_IdlePriority","unstable_LowPriority","unstable_runWithPriority","unstable_wrapCallback","unstable_getCurrentPriorityLevel","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","DateClass","parseCode","__importDefault","mod","__esModule","__importStar","lodash_zip_1","JsonParseError_1","dateUtils","mapperRegister","tryReadField","jsonValue","matchesType","convert","validators","propName","validator","parseValue","cls","prefix","genericTypes","getName","fieldValue","INVALID_TYPE","isDateString","parseDate","arrayElem","typeName","isSimpleType","constructorParams","isRegistrable","clsName","mapperKey","INVALID_MODEL_CLASS","jsonProps","generics","getGenericMetadata","MISSING_ANNOTATION","propNames","innerJson","MISSING_PROPERTY","rawValue","doParse","sparksonId","results","registerStringMapper","mapper","registerNumberMapper","registerBooleanMapper","parseArray","jsonProperty","Registrable","ctor","sid","ValidationHelper_1","After","addValidationRule","valueDate","getTime","Before","Max","MaxLength","Min","MinLength","Rule","customRule","rule","validationRules","DateClass_1","parser_1","ArrayField_1","Field_1","RawJsonField_1","Min_1","Max_1","MinLength_1","MaxLength_1","Regexp_1","After_1","Before_1","Rule_1","Registrable_1","isoRegexp","regExp","year","day","_state","Int32Array","_buffer","ArrayBuffer","_buffer8","_buffer32","Uint32Array","onePassHasher","appendStr","hashAsciiStr","appendAsciiStr","_hex","hexChars","ho","hexOut","_md5cycle","_dataLength","_bufferLength","stateIdentity","buf8","buf32","bufLen","appendByteArray","buflen","buf","dataBitsLen","buffer32Identity","subarray","matches","lo","hi","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SONY","XIAOMI","ZEBRA","FACEBOOK","enumerize","enums","str1","str2","lowerize","rgxMapper","arrays","strMapper","windowsVersionMap","regexes","browser","CHROME","cpu","engine","EDGE","extensions","getResult","_ua","_rgxmap","mergedRegexes","_browser","major","getCPU","_cpu","getDevice","_device","getEngine","_engine","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","$","jQuery","Zepto","support","viewClasses","isArrayBufferView","isView","normalizeName","normalizeValue","iteratorFor","Headers","append","header","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","readAsText","chars","readArrayBufferAsText","formData","decode","oldValue","methods","upcased","credentials","signal","referrer","bytes","decodeURIComponent","Response","bodyInit","ok","statusText","redirectStatuses","redirect","DOMException","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","withCredentials","responseType","setRequestHeader","onreadystatechange","send","__webpack_module_cache__","__webpack_require__","cachedModule","loaded","__webpack_modules__","amdO","definition","globalThis","nmd"],"sourceRoot":""}