{"version":3,"file":"interactive-documents-bundle.js","mappings":"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","sources":["webpack://flippingbooksite/webpack/runtime/chunk loaded","webpack://flippingbooksite/webpack/runtime/create fake namespace object","webpack://flippingbooksite/webpack/runtime/load script","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/analytics.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/service.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/storage/StorageProvider.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/storage/index.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/formatDateForServer.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/index.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/load.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/parseWsDate.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/parsers/paymentInfo.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/throttle.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/try-parse-date.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/wait.ts","webpack://flippingbooksite/./sources/src/components/go-trial-button.ts","webpack://flippingbooksite/./sources/src/pages/fbp-features/interactive-documents/index.ts","webpack://flippingbooksite/./sources/src/services/analytics.ts","webpack://flippingbooksite/./sources/src/services/instance/analytics.ts","webpack://flippingbooksite/./sources/src/services/CTAanalytics.ts","webpack://flippingbooksite/./sources/src/services/instance/cta-analytics.ts","webpack://flippingbooksite/./sources/src/services/instance/siteAntispamService.ts","webpack://flippingbooksite/./sources/src/util/get-login-consumer.ts","webpack://flippingbooksite/./sources/src/util/image.ts","webpack://flippingbooksite/./sources/src/util/is-logged-in.ts","webpack://flippingbooksite/external var \"{\\\"locatorUrl\\\":\\\"https://registry-tc.dev.flippingbook.com/api\\\",\\\"featureFlags\\\":{},\\\"sentryDsn\\\":\\\"https://8fa71d45f6aa4a06be961166e0ee495b@sentry.io/1359544\\\",\\\"sentryEnable\\\":false}\"","webpack://flippingbooksite/webpack/bootstrap","webpack://flippingbooksite/webpack/runtime/amd options","webpack://flippingbooksite/webpack/runtime/compat get default export","webpack://flippingbooksite/webpack/runtime/define property getters","webpack://flippingbooksite/webpack/runtime/ensure chunk","webpack://flippingbooksite/webpack/runtime/get javascript chunk filename","webpack://flippingbooksite/webpack/runtime/get mini-css chunk filename","webpack://flippingbooksite/webpack/runtime/global","webpack://flippingbooksite/webpack/runtime/hasOwnProperty shorthand","webpack://flippingbooksite/webpack/runtime/make namespace object","webpack://flippingbooksite/webpack/runtime/node module decorator","webpack://flippingbooksite/webpack/runtime/runtimeId","webpack://flippingbooksite/webpack/runtime/publicPath","webpack://flippingbooksite/webpack/runtime/css loading","webpack://flippingbooksite/webpack/runtime/jsonp chunk loading","webpack://flippingbooksite/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"flippingbooksite:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import type { IFbAnalytics } from './fb-analytics';\nimport type { Product } from './ProductsList';\nimport { Parametrized } from './service';\nimport type { UserInfo } from './user';\nimport { wait } from './util';\n\ndeclare global {\n    interface Window {\n        fbAnalytics?: IFbAnalytics;\n    }\n}\n\nexport interface IAnalyticsService {\n    event(\n        eventName: string,\n        eventData: IAnalyticsService.EventData,\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\n    ): Promise<void>;\n    gaEvent(eventName: string, properties?: Record<string, unknown>): Promise<void>;\n    identify(user: UserInfo): Promise<void>;\n    clearIdentify(): Promise<void>;\n    alias(user: UserInfo): Promise<void>;\n    formatDate(date: Date): string;\n    pageView(eventData?: IAnalyticsService.EventData): Promise<void>;\n    trackSignup(params: IAnalyticsService.TrackSignupParams): Promise<void>;\n    update(user: UserInfo): Promise<void>;\n    writeToUserProfile(params: IAnalyticsService.EventData): Promise<void>;\n    writeToUserProfileOnce(params: IAnalyticsService.EventData): Promise<void>;\n    incrementUserProfileKey(props: IAnalyticsService.IncrementEventData): Promise<void>;\n    optOut(params: Partial<IAnalyticsService.OptOutParams>): void;\n}\n\nexport namespace IAnalyticsService {\n    export interface TrackSignupParams {\n        user: UserInfo;\n        method: string;\n        product: Product;\n        captchaAttempts?: number;\n        locale: string;\n        pageLocale: string;\n    }\n\n    export interface GtagEventParams {\n        non_interaction?: boolean;\n    }\n\n    export interface EventData {\n        [key: string]: string | number | string[] | number[];\n    }\n\n    export interface IncrementEventData {\n        prop: string;\n        value?: number;\n        /**\n         * @deprecated Use await or .then() instead\n         */\n        callback?: () => void;\n    }\n\n    export interface OptOutParams {\n        ga: boolean;\n        mixpanel: boolean;\n        bing: boolean;\n        fb: boolean;\n    }\n}\n\nconst GA_EVENT_TIMEOUT = 350;\nconst MIXPANEL_LOADED_TIMEOUT = 3000;\nconst MIXPANEL_EVENT_TIMEOUT = 350;\n\nfunction getGAEventCommonParams() {\n    return {\n        page_title: document.title,\n        page_path: window.location.pathname,\n        page_location: window.location.href,\n    };\n}\n\nexport class AnalyticsService extends Parametrized<AnalyticsService.Params> implements IAnalyticsService {\n    protected optOutState: IAnalyticsService.OptOutParams;\n\n    constructor(params: AnalyticsService.Params) {\n        super(params);\n\n        const { bing = false, fb = false, ga = false, mixpanel = false } = params.optOut || {};\n\n        this.optOutState = {\n            bing,\n            fb,\n            ga,\n            mixpanel,\n        };\n    }\n\n    async event(\n        eventName: string,\n        eventData: IAnalyticsService.EventData,\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\n    ): Promise<void> {\n        const gaId = this.getGaId();\n\n        // Track with mixpanel\n        const mixpanelPromise = this.mixpanelTrack(eventName, {\n            'GA Client ID': gaId,\n            ...eventData,\n        });\n\n        const fbAnalyticsPromise = this.withFbAnalytics((fbAnalytics) =>\n            fbAnalytics.send(eventName, {\n                'GA Client ID': gaId,\n                ...eventData,\n            }),\n        );\n\n        // Google Analytics\n        void this.gaEvent(eventName, {\n            category: 'mixpanel',\n            ...eventData,\n            ...gtagEventParams,\n        });\n\n        // Bing Ads\n        if (!this.optOutState.bing) {\n            const bing = 'uetq' in window ? uetq : [];\n            bing.push({\n                el: eventName, // Event label\n                ev: eventData.value || 0, // Event value\n            });\n        }\n\n        await Promise.allSettled([mixpanelPromise, fbAnalyticsPromise]);\n    }\n\n    private mixpanelTrack(eventName: string, properties?: Record<string, unknown>) {\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.track(eventName, properties, resolve)),\n            ]);\n        });\n    }\n\n    // Google Analytics v4\n    gaEvent(eventName: string, properties?: Record<string, unknown>): Promise<void> {\n        return new Promise((resolve) => {\n            const timeout = setTimeout(() => {\n                clearTimeout(timeout);\n                resolve();\n            }, GA_EVENT_TIMEOUT);\n\n            const opts = {\n                ...getGAEventCommonParams(),\n                non_interaction: false,\n                event_callback: () => {\n                    clearTimeout(timeout);\n                    resolve();\n                },\n                ...properties,\n            };\n\n            void this.withGtag((gtag) => gtag('event', eventName, opts));\n        });\n    }\n\n    formatDate(date: Date): string {\n        return `${date.getUTCFullYear()}-${date.getUTCMonth() + 1}-${date.getUTCDate()}`;\n    }\n\n    pageView(eventData?: IAnalyticsService.EventData) {\n        return this.withGtag((gtag) => {\n            const commonParams = getGAEventCommonParams();\n\n            gtag('set', commonParams);\n            gtag('event', 'page_view', {\n                ...commonParams,\n                ...(eventData && {\n                    ...eventData,\n                }),\n            });\n        });\n    }\n\n    private gaIdentify(user: UserInfo) {\n        return this.withGtag((gtag) => {\n            gtag('set', {\n                user_id: user.Id,\n                dimension2: 'Member',\n            });\n\n            return this.gaEvent('Registration Tracking', {\n                non_interaction: true,\n            });\n        });\n    }\n\n    private mixpanelSetBaseFields(user: UserInfo) {\n        return this.writeToUserProfileOnce({\n            ssouid: user.Id,\n            $email: user.Email,\n            ...(user.FirstName && {\n                $first_name: user.FirstName,\n            }),\n            ...(user.LastName && {\n                $last_name: user.LastName,\n            }),\n        });\n    }\n\n    private mixpanelIdentify(user: UserInfo) {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.identify(String(user.Id));\n            return this.mixpanelSetBaseFields(user);\n        });\n    }\n\n    private mixpanelAlias(user: UserInfo) {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.alias(String(user.Id));\n            return this.mixpanelSetBaseFields(user);\n        });\n    }\n\n    private fbAnalyticsIdentify(user: UserInfo) {\n        return this.withFbAnalytics((fbAnalytics) => fbAnalytics.setSsoId(user.Id));\n    }\n\n    async identify(user: UserInfo) {\n        await Promise.all([this.mixpanelIdentify(user), this.gaIdentify(user), this.fbAnalyticsIdentify(user)]);\n    }\n\n    private clearGAIdentify() {\n        return this.withGtag((gtag) => {\n            gtag('set', {\n                dimension2: 'Guest',\n            });\n\n            return this.gaEvent('Registration Tracking', {\n                non_interaction: true,\n            });\n        });\n    }\n\n    private clearMixpanelIdentify() {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.reset();\n        });\n    }\n\n    private clearFbAnalyticsIdentify() {\n        return this.withFbAnalytics((fbAnalytics) => {\n            fbAnalytics.clear();\n        });\n    }\n\n    async clearIdentify() {\n        await Promise.all([this.clearMixpanelIdentify(), this.clearGAIdentify(), this.clearFbAnalyticsIdentify()]);\n    }\n\n    async alias(user: UserInfo) {\n        await Promise.all([this.mixpanelAlias(user), this.gaIdentify(user)]);\n    }\n\n    update(user: UserInfo) {\n        return this.writeToUserProfile({\n            ssouid: user.Id,\n            $email: user.Email,\n            ...(user.FirstName && {\n                $first_name: user.FirstName,\n            }),\n            ...(user.LastName && {\n                $last_name: user.LastName,\n            }),\n        });\n    }\n\n    async trackSignup(params: IAnalyticsService.TrackSignupParams) {\n        const { user, product, method, locale, pageLocale, captchaAttempts = 0 } = params;\n\n        await this.event('First Registration', {\n            'Registration Method': method,\n            InitialProduct: product,\n            ssouid: String(user.Id),\n            'Captcha Tries Count': String(captchaAttempts),\n            'Previous Page Localization':\n                locale === pageLocale ? `Full ${locale.toUpperCase()}` : `Partly ${locale.toUpperCase()}`,\n        });\n\n        await this.identify(user);\n    }\n\n    writeToUserProfile(params: IAnalyticsService.EventData): Promise<void> {\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.people.set(params, resolve)),\n            ]);\n        });\n    }\n\n    private async getLoadedMixpanel() {\n        if ('mixpanelLoaded' in window) {\n            return Promise.race([wait(MIXPANEL_LOADED_TIMEOUT), mixpanelLoaded.promise]);\n        }\n\n        return undefined;\n    }\n\n    writeToUserProfileOnce(params: IAnalyticsService.EventData): Promise<void> {\n        return this.withMixpanel(async (mixpanel) => {\n            const loadedMixpanel = await this.getLoadedMixpanel();\n\n            const properties = Object.keys(params).reduce<IAnalyticsService.EventData>((acc, propertyName) => {\n                const propertyValueFromMixPanel = loadedMixpanel\n                    ? loadedMixpanel.get_property(propertyName)\n                    : undefined;\n\n                return {\n                    ...acc,\n                    [propertyName]:\n                        propertyValueFromMixPanel === undefined ? params[propertyName] : propertyValueFromMixPanel,\n                };\n            }, {});\n\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => (loadedMixpanel || mixpanel).people.set_once(properties, resolve)),\n            ]);\n        });\n    }\n\n    incrementUserProfileKey(props: IAnalyticsService.IncrementEventData): Promise<void> {\n        const { prop, value, callback = () => {} } = props;\n\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.people.increment(prop, value, resolve)),\n            ]).then(() => callback());\n        });\n    }\n\n    private withGtag(cb: (gtag: Gtag.Gtag) => void | Promise<void>): Promise<void> {\n        if (!this.optOutState.ga && this.hasGtag()) {\n            return Promise.resolve(cb(gtag));\n        }\n        return Promise.resolve();\n    }\n\n    private withMixpanel(cb: (mixpanel: Mixpanel) => void | Promise<void>): Promise<void> {\n        if (!this.optOutState.mixpanel && 'mixpanel' in window) {\n            return Promise.resolve(cb(mixpanel));\n        }\n        return Promise.resolve();\n    }\n\n    private withFbAnalytics(cb: (fbAnalytics: IFbAnalytics) => void | Promise<void>): Promise<void> {\n        const fb = window?.fbAnalytics;\n\n        if (fb) {\n            return Promise.resolve(cb(fb));\n        }\n        return Promise.resolve();\n    }\n\n    private getGaId() {\n        if ('gaGlobal' in window && !!gaGlobal) {\n            try {\n                return JSON.parse(gaGlobal.vid) as string;\n            } catch {\n                // skip\n            }\n        }\n\n        if (document && 'cookie' in document) {\n            const gaCookie = document.cookie\n                .split(';')\n                .map((c) => c.replace(/\\s/g, '').split('=', 2))\n                .find((c) => c[0] === '_ga');\n            if (gaCookie) {\n                const pattern = 'GAx.y.';\n                return gaCookie[1].substring(pattern.length);\n            }\n        }\n\n        return '';\n    }\n\n    private hasGtag() {\n        return typeof gtag === 'function';\n    }\n\n    optOut(params: Partial<IAnalyticsService.OptOutParams>) {\n        this.optOutState = {\n            ...this.optOutState,\n            ...params,\n        };\n    }\n}\n\nexport namespace AnalyticsService {\n    export interface Params {\n        optOut?: Partial<IAnalyticsService.OptOutParams>;\n    }\n}\n","import { readonly } from './types';\n\nexport interface IService {\n    listen(cb: () => void): void;\n    unlisten(cb: () => void): void;\n}\n\nexport abstract class Listenable {\n    private readonly listeners = new Set<() => void>();\n\n    listen(cb: () => void) {\n        this.listeners.add(cb);\n    }\n\n    unlisten(cb: () => void) {\n        this.listeners.delete(cb);\n    }\n\n    protected notify() {\n        this.listeners.forEach((l) => l());\n    }\n}\n\nexport abstract class Parametrized<P> {\n    protected params: P;\n\n    constructor(params: P) {\n        this.params = params;\n    }\n}\n\nexport abstract class ListenableParametrized<P> extends Listenable {\n    protected params: P;\n\n    constructor(params: P) {\n        super();\n        this.params = params;\n    }\n}\n\nexport interface IServiceDataStorage<T> extends IService {\n    getData(): Readonly<T> | null;\n    updateData(update: T): Readonly<T>;\n    overwriteData(newData: T | null): Readonly<T> | null;\n}\n\nexport class ServiceDataStorage<T> extends Listenable implements IServiceDataStorage<T> {\n    private data: Readonly<T> | null = null;\n\n    getData(): Readonly<T> | null {\n        return this.data === null ? null : readonly(this.data);\n    }\n\n    updateData(update: T): Readonly<T> {\n        this.data = {\n            ...(this.data || {}),\n            ...update,\n        };\n        this.notify();\n        return readonly(this.data);\n    }\n\n    overwriteData(newData: T | null): Readonly<T> | null {\n        this.data = newData;\n        this.notify();\n        return this.data === null ? null : readonly(this.data);\n    }\n}\n\nexport abstract class AbstractService<T extends object, P = Record<string, unknown>>\n    extends ListenableParametrized<P & { serviceStorage?: IServiceDataStorage<T> }>\n    implements IService\n{\n    protected storage: IServiceDataStorage<T>;\n\n    constructor(params: P & { serviceStorage?: IServiceDataStorage<T> }) {\n        super(params);\n\n        this.storage = params.serviceStorage ?? new ServiceDataStorage<T>();\n        this.storage.listen(() => this.notify());\n    }\n\n    protected get data(): Readonly<T> | null {\n        return this.storage.getData();\n    }\n\n    protected updateData(update: T): Readonly<T> {\n        return this.storage.updateData(update);\n    }\n\n    protected overwriteData(newData: T | null): Readonly<T> | null {\n        return this.storage.overwriteData(newData);\n    }\n}\n","import type { IStorageProvider } from './IStorageProvider';\n\ntype StorageType = 'sessionStorage' | 'localStorage';\n\nclass RealStorage implements IStorageProvider {\n    private baseObj: Storage;\n\n    constructor(baseObj: Storage) {\n        this.baseObj = baseObj;\n    }\n\n    get(key: string) {\n        return this.baseObj.getItem(key);\n    }\n\n    set(key: string, value: string) {\n        return this.baseObj.setItem(key, value);\n    }\n\n    remove(key: string) {\n        return this.baseObj.removeItem(key);\n    }\n\n    clear() {\n        return this.baseObj.clear();\n    }\n\n    getJSON<T>(key: string): T | null {\n        const val = this.get(key);\n        if (val) {\n            return JSON.parse(val) as T;\n        }\n        return null;\n    }\n\n    setJSON(key: string, value: unknown) {\n        return this.set(key, JSON.stringify(value));\n    }\n}\n\nclass ObjectStorage implements IStorageProvider {\n    private data: { [id: string]: string } = {};\n\n    get(key: string) {\n        return this.data[key];\n    }\n\n    set(key: string, value: string) {\n        this.data[key] = value;\n    }\n\n    remove(key: string) {\n        delete this.data[key];\n    }\n\n    clear() {\n        this.data = {};\n    }\n\n    getJSON<T>(key: string): T | null {\n        const val = this.get(key);\n        if (val) {\n            return JSON.parse(val) as T;\n        }\n        return null;\n    }\n\n    setJSON(key: string, value: unknown) {\n        return this.set(key, JSON.stringify(value));\n    }\n}\n\nconst isStorageSupported = (storage: StorageType) => {\n    try {\n        window[storage].setItem('test-storage-supported', '1');\n        window[storage].removeItem('test-storage-supported');\n        return true;\n    } catch {\n        return false;\n    }\n};\n\nconst getStorage = (storage: StorageType) => {\n    return isStorageSupported(storage) ? new RealStorage(window[storage]) : new ObjectStorage();\n};\n\nexport const localStorage: IStorageProvider = getStorage('localStorage');\nexport const sessionStorage: IStorageProvider = getStorage('sessionStorage');\nexport const objectStorage: IStorageProvider = new ObjectStorage();\n","export { IStorageProvider } from './IStorageProvider';\nexport { localStorage, sessionStorage, objectStorage } from './StorageProvider';\n","export function formatDateForServer(date: Date): string {\n    return date.toISOString();\n}\n","import parseWsDate from './parseWsDate';\n\nexport { loadCss, loadJs } from './load';\nexport { parsePaymentInfo } from './parsers/paymentInfo';\nexport { formatDateForServer } from './formatDateForServer';\nexport { wait } from './wait';\nexport { throttle } from './throttle';\n\nexport { parseWsDate };\n","const EXTERNAL_URL_REGEX = /^https?:/;\n\nconst contentUrl = (contentRoot: string, src: string) =>\n    EXTERNAL_URL_REGEX.test(src) ? src : contentRoot + (src.charAt(0) === '/' ? src : `/${src}`);\n\nexport const loadJs = (contentRoot: string) => (src: string) =>\n    new Promise<void>((resolve, reject) => {\n        const scriptTag = document.createElement('script');\n        scriptTag.addEventListener('load', () => resolve());\n        // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n        scriptTag.addEventListener('error', () => reject());\n        scriptTag.setAttribute('src', contentUrl(contentRoot, src));\n        document.head.appendChild(scriptTag);\n    });\n\nexport const loadCss = (contentRoot: string) => (src: string) =>\n    new Promise<void>((resolve, reject) => {\n        const linkTag = document.createElement('link');\n        linkTag.setAttribute('rel', 'stylesheet');\n        linkTag.addEventListener('load', () => resolve());\n        // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n        linkTag.addEventListener('error', () => reject());\n        linkTag.setAttribute('href', contentUrl(contentRoot, src));\n        document.head.appendChild(linkTag);\n    });\n","const parseWsDate = (wsDate: string | Date | null): Date | null => {\n    if (!wsDate) {\n        return null;\n    }\n    if (wsDate instanceof Date) {\n        return wsDate;\n    }\n    try {\n        return new Date(parseInt(wsDate.substring(6), 10));\n    } catch {\n        return null;\n    }\n};\n\nexport default parseWsDate;\n","import type { PaymentInfo as PaymentInfoJson } from '../../apis/payments';\nimport type { PaymentInfo } from '../../subscriptions';\nimport { tryParseDate } from '../try-parse-date';\n\nexport const parsePaymentInfo = (payment: PaymentInfoJson): PaymentInfo => {\n    return {\n        ...payment,\n        LastUpdate: tryParseDate(payment.LastUpdate ? payment.LastUpdate : ''),\n        Items: payment.Items.map(parsePaymentInfo),\n    };\n};\n","export const throttle = <T extends unknown[]>(callback: (...args: T) => unknown, delay?: number) => {\n    let shouldWait = false;\n\n    return (...args: T) => {\n        if (!shouldWait) {\n            callback(...args);\n\n            shouldWait = true;\n\n            setTimeout(() => {\n                shouldWait = false;\n            }, delay);\n        }\n    };\n};\n","export function tryParseDate(dateString: string): Date | null {\n    if (!Number.isNaN(Date.parse(dateString))) {\n        return new Date(dateString);\n    }\n    return null;\n}\n","export const wait = (timeout: number) => new Promise<void>((resolve) => setTimeout(resolve, timeout));\n","import { BemBlock, BemElement } from '../pages/bem';\r\nimport type { CTAAnalyticsService } from '../services/CTAanalytics';\r\nimport { ctaAnalytics } from '../services/instance/cta-analytics';\r\nimport { serviceLocator } from '../services/instance/serviceLocator';\r\nimport { siteAntispamService } from '../services/instance/siteAntispamService';\r\nimport { getLoginConsumer } from '../util/get-login-consumer';\r\nimport { isLoggedIn } from '../util/is-logged-in';\r\nimport { runWithNewTask } from '../util/run-with-new-task';\r\n\r\nfunction goToUrlOnNextTask(url: string) {\r\n    // transition to the page should be performed after all other events\r\n    // Example: sending analytics\r\n    setTimeout(() => {\r\n        window.location.href = url;\r\n    }, 0);\r\n}\r\n\r\nasync function getLink(product: string, direction: string | null) {\r\n    const loggedIn = isLoggedIn();\r\n\r\n    const [baseRegisterUrl] = await serviceLocator.resolve({\r\n        subsystem: 'generic',\r\n        service: 'logon-register-ui',\r\n    });\r\n    const consumer = getLoginConsumer();\r\n    const userDetachedContext = siteAntispamService.getUserDetachedContext();\r\n    const registerUrl = `${baseRegisterUrl}?r=${consumer}&t=both&asc=${userDetachedContext}`;\r\n\r\n    if (product === 'fb-online') {\r\n        return !loggedIn ? `${registerUrl}&products=FBOnline` : '/account/online';\r\n    }\r\n\r\n    if (product === 'fb-publisher' && direction === 'auto') {\r\n        return !loggedIn\r\n            ? `${registerUrl}&products=Publisher2&resume-url=${window.encodeURIComponent(\r\n                  `${window.location.origin}/downloads?autostart=true`,\r\n              )}`\r\n            : '/downloads?autostart=true';\r\n    }\r\n\r\n    if (product === 'fb-publisher' && direction === 'account') {\r\n        return '/account/software';\r\n    }\r\n\r\n    if (product === 'fb-publisher') {\r\n        return '/downloads';\r\n    }\r\n\r\n    if (product === 'fb-server') {\r\n        return '/automation';\r\n    }\r\n\r\n    if (loggedIn) {\r\n        return '/account/autonav';\r\n    }\r\n\r\n    return '/account/signup';\r\n}\r\n\r\nexport class GoTrialButton extends BemElement<GoTrialButton.Params> {\r\n    private direction = this.el.getAttribute('data-direction');\r\n    private product = this.el.getAttribute('data-product') || 'fb-online';\r\n\r\n    public onDescribe() {\r\n        this.el.addEventListener('click', (ev) => {\r\n            void this.onLinkClick(ev);\r\n        });\r\n    }\r\n\r\n    private sendAnalytics = () => {\r\n        return ctaAnalytics.send(this.params.position);\r\n    };\r\n\r\n    private onLinkClick = async (ev: Event) => {\r\n        ev.preventDefault();\r\n        ev.stopPropagation();\r\n\r\n        await runWithNewTask(() => this.sendAnalytics());\r\n\r\n        const newLink = await getLink(this.product, this.direction);\r\n        goToUrlOnNextTask(newLink);\r\n    };\r\n}\r\nexport namespace GoTrialButton {\r\n    export interface Params {\r\n        position: CTAAnalyticsService.Position;\r\n    }\r\n}\r\n\r\nexport const GoTrialButtonWrapper = (blockName: string) =>\r\n    class GoTrialButtonWrapper extends BemBlock<GoTrialButton.Params> {\r\n        protected blockName(): string {\r\n            return blockName;\r\n        }\r\n\r\n        onDescribe() {\r\n            this.describeElement('go-trial', GoTrialButton, this.params);\r\n        }\r\n    };\r\n","import { BasePage } from '../../../components/base-page';\r\nimport { GoTrialButtonWrapper } from '../../../components/go-trial-button';\r\nimport { runWithNewTask } from '../../../util/run-with-new-task';\r\n\r\nimport './styles/index.css';\r\n\r\nclass InteractiveDocumentsPage extends BasePage {\r\n    protected blockName(): string {\r\n        return 'S-Interactive-Documents';\r\n    }\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n\r\n        void runWithNewTask(() =>\r\n            this.describeBlock('cta', GoTrialButtonWrapper(`${this.blockName()}-CTA`), {\r\n                position: 'bottom',\r\n            }),\r\n        );\r\n    }\r\n}\r\n\r\nexport { InteractiveDocumentsPage as page };\r\n","import { AnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\nimport type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\n\r\nconst release = process.env.BUILD_DATE || 'local';\r\n\r\nexport class SiteAnalyticsService extends AnalyticsService implements IAnalyticsService {\r\n    override gaEvent(eventName: string, properties?: Record<string, unknown>) {\r\n        return super.gaEvent(eventName, {\r\n            area: 'website',\r\n            release,\r\n            ...properties,\r\n        });\r\n    }\r\n\r\n    override event(\r\n        eventName: string,\r\n        eventData: IAnalyticsService.EventData,\r\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\r\n    ) {\r\n        return super.event(\r\n            eventName,\r\n            {\r\n                release,\r\n                ...eventData,\r\n            },\r\n            gtagEventParams,\r\n        );\r\n    }\r\n}\r\n","import type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\n\r\nimport { SiteAnalyticsService } from '../analytics';\r\n\r\nexport const analytics: IAnalyticsService = new SiteAnalyticsService({});\r\n","import type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\nimport { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class CTAAnalyticsService extends Parametrized<CTAAnalyticsService.Params> {\r\n    send(position: CTAAnalyticsService.Position) {\r\n        return this.params.analytics.gaEvent('button_click_trial', {\r\n            category: 'button',\r\n            button_location: position,\r\n        });\r\n    }\r\n}\r\n\r\nexport namespace CTAAnalyticsService {\r\n    export type Position = 'header' | 'mobile-menu' | 'top' | 'middle' | 'bottom';\r\n\r\n    export interface Params {\r\n        analytics: IAnalyticsService;\r\n    }\r\n}\r\n","import { CTAAnalyticsService } from '../CTAanalytics';\r\n\r\nimport { analytics } from './analytics';\r\n\r\nexport const ctaAnalytics = new CTAAnalyticsService({\r\n    analytics,\r\n});\r\n","export const siteAntispamService = {\r\n    getUserDetachedContext: () => window.__flippingbook_user_detached_context__,\r\n};\r\n","export function getLoginConsumer(): string {\r\n    return Mediaparts?.Bootstrap?.Params?.loginConsumer || 'site';\r\n}\r\n","function waitForImageLoad(image: HTMLImageElement) {\r\n    return new Promise<void>((resolve) => {\r\n        if (image.complete) {\r\n            resolve();\r\n            return;\r\n        }\r\n\r\n        const handleImageLoad = () => {\r\n            image.removeEventListener('load', handleImageLoad);\r\n            resolve();\r\n        };\r\n\r\n        image.addEventListener('load', handleImageLoad);\r\n    });\r\n}\r\n\r\nfunction getImageLoadList(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const selector = params.classNames.map((c) => `.${c}`).join(', ');\r\n    const container = params.container || document;\r\n    const imgElements = Array.from(container.querySelectorAll<HTMLImageElement>(selector));\r\n\r\n    return imgElements.map((imgElement) => waitForImageLoad(imgElement));\r\n}\r\n\r\nexport function waitForAllImagesLoad(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const loadList = getImageLoadList(params);\r\n    return Promise.all(loadList);\r\n}\r\n\r\nexport function waitForAnyImagesLoad(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const loadList = getImageLoadList(params);\r\n    return Promise.race(loadList);\r\n}\r\n\r\nexport function setLoadedClassForImage() {\r\n    const imgElements = Array.from(document.querySelectorAll<HTMLImageElement>('img'));\r\n    const loadedClassName = 'loaded';\r\n\r\n    imgElements.forEach((imgElement) => {\r\n        if (imgElement.complete) {\r\n            imgElement.classList.add(loadedClassName);\r\n            return;\r\n        }\r\n\r\n        const handleImageLoad = () => {\r\n            imgElement.removeEventListener('load', handleImageLoad);\r\n            imgElement.classList.add(loadedClassName);\r\n        };\r\n\r\n        imgElement.addEventListener('load', handleImageLoad);\r\n    });\r\n}\r\n","import { localStorage, sessionStorage } from '@flippingbook/web.utils/dist/storage';\r\n\r\nexport function isLoggedIn() {\r\n    return Boolean(\r\n        (flippingbook.user && flippingbook.user.loggedIn) ||\r\n            sessionStorage.get('PA.TokenService.Token') ||\r\n            localStorage.get('FlippingBook.PA.DefaultProduct'),\r\n    );\r\n}\r\n","module.exports = {\"locatorUrl\":\"https://registry-tc.dev.flippingbook.com/api\",\"featureFlags\":{},\"sentryDsn\":\"https://8fa71d45f6aa4a06be961166e0ee495b@sentry.io/1359544\",\"sentryEnable\":false};","// 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// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// 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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-bundle.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-bundle.css\";\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};","__webpack_require__.j = 1596;","__webpack_require__.p = \"/content/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t952: 0,\n\t1392: 0,\n\t1596: 0,\n\t8571: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"957\":1,\"1597\":1,\"2989\":1,\"5515\":1,\"6783\":1,\"9974\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t952: 0,\n\t1392: 0,\n\t1596: 0,\n\t8571: 0,\n\t4514: 0,\n\t5949: 0,\n\t5908: 0,\n\t7952: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(59(08|49)|1597|4514|7952|9974)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkflippingbooksite\"] = globalThis[\"webpackChunkflippingbooksite\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4514,5949,5908,7952,8351,4829], () => (__webpack_require__(78671)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","MIXPANEL_EVENT_TIMEOUT","getGAEventCommonParams","page_title","document","title","page_path","window","location","pathname","page_location","href","AnalyticsService","Parametrized","constructor","params","super","bing","fb","ga","mixpanel","optOut","this","optOutState","event","eventName","eventData","gtagEventParams","gaId","getGaId","mixpanelPromise","mixpanelTrack","fbAnalyticsPromise","withFbAnalytics","fbAnalytics","send","gaEvent","category","uetq","push","el","ev","value","Promise","allSettled","properties","withMixpanel","race","wait","resolve","track","timeout","setTimeout","clearTimeout","opts","non_interaction","event_callback","withGtag","gtag","formatDate","date","getUTCFullYear","getUTCMonth","getUTCDate","pageView","commonParams","gaIdentify","user","user_id","Id","dimension2","mixpanelSetBaseFields","writeToUserProfileOnce","ssouid","$email","Email","FirstName","$first_name","LastName","$last_name","mixpanelIdentify","identify","String","mixpanelAlias","alias","fbAnalyticsIdentify","setSsoId","all","clearGAIdentify","clearMixpanelIdentify","reset","clearFbAnalyticsIdentify","clear","clearIdentify","update","writeToUserProfile","trackSignup","product","method","locale","pageLocale","captchaAttempts","InitialProduct","toUpperCase","people","set","getLoadedMixpanel","mixpanelLoaded","promise","async","loadedMixpanel","Object","keys","reduce","acc","propertyName","propertyValueFromMixPanel","get_property","undefined","set_once","incrementUserProfileKey","props","prop","callback","increment","then","cb","hasGtag","gaGlobal","JSON","parse","vid","gaCookie","cookie","split","map","c","replace","find","pattern","substring","length","Listenable","listeners","Set","listen","add","unlisten","delete","notify","forEach","l","ListenableParametrized","ServiceDataStorage","data","getData","readonly","updateData","overwriteData","newData","storage","serviceStorage","RealStorage","baseObj","get","key","getItem","setItem","remove","removeItem","getJSON","val","setJSON","stringify","ObjectStorage","getStorage","isStorageSupported","localStorage","sessionStorage","objectStorage","toISOString","parseWsDate","loadCss","loadJs","parsePaymentInfo","formatDateForServer","throttle","EXTERNAL_URL_REGEX","contentUrl","contentRoot","src","test","charAt","reject","scriptTag","createElement","addEventListener","setAttribute","head","appendChild","linkTag","wsDate","Date","parseInt","payment","LastUpdate","tryParseDate","Items","delay","shouldWait","args","dateString","Number","isNaN","GoTrialButton","B","direction","getAttribute","sendAnalytics","position","onLinkClick","preventDefault","stopPropagation","newLink","loggedIn","baseRegisterUrl","subsystem","service","registerUrl","getUserDetachedContext","encodeURIComponent","origin","getLink","url","onDescribe","GoTrialButtonWrapper","blockName","describeElement","InteractiveDocumentsPage","describeBlock","release","SiteAnalyticsService","area","CTAAnalyticsService","analytics","button_location","ctaAnalytics","siteAntispamService","__flippingbook_user_detached_context__","getLoginConsumer","Mediaparts","Bootstrap","Params","loginConsumer","setLoadedClassForImage","imgElements","Array","from","querySelectorAll","loadedClassName","imgElement","complete","classList","handleImageLoad","removeEventListener","isLoggedIn","Boolean","flippingbook","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","call","m","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","t","mode","ns","create","def","current","indexOf","getOwnPropertyNames","definition","o","defineProperty","enumerable","f","e","chunkId","promises","u","miniCssF","g","globalThis","Function","prototype","hasOwnProperty","done","script","needAttach","scripts","getElementsByTagName","s","charset","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","type","target","Symbol","toStringTag","nmd","paths","children","p","loadStylesheet","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","oldTag","nonce","errorType","realHref","err","Error","name","code","request","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}