{"version":3,"file":"static/js/main.de27f567.js","mappings":"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","sources":["projectContext/ThemeContext.js","provider/Auth.js","../node_modules/lottie-react/compiled/hooks/useLottie.js","../node_modules/lottie-react/compiled/hooks/useLottieInteractivity.js","../node_modules/lottie-react/compiled/components/Lottie.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-router-dom/node_modules/@remix-run/router/history.ts","../node_modules/react-router-dom/node_modules/@remix-run/router/utils.ts","../node_modules/react-router-dom/node_modules/@remix-run/router/router.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router/node_modules/@remix-run/router/history.ts","../node_modules/react-router/node_modules/@remix-run/router/utils.ts","../node_modules/react-router/node_modules/@remix-run/router/router.ts","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","App.js","reportWebVitals.js","index.js"],"sourcesContent":["import { createContext } from 'react';\n\nconst defaultValue = { \n apiURL: 'https://apiv2.writeme.ai/',\n baseURL: 'https://app.writeme.ai/'\n};\n\nexport const ThemeContext = createContext(defaultValue);\n","var _data = null;\nvar _tempData = null;\n\nvar _isLoggedInStat = false;\n\nconst addTokenSession = (data) => {\n return localStorage.setItem(\"REACT_TOKEN_AUTH\", JSON.stringify(data));\n}\n\nconst getTokenSession = () => {\n if (localStorage.getItem(\"REACT_TOKEN_AUTH\") === null || localStorage.getItem(\"REACT_TOKEN_AUTH\") === '') {\n return null\n }\n else {\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n console.log(JSON.stringify(_data));\n return _data.data.accessToken;\n }\n}\n\nconst login = (data) => {\n _data = JSON.parse(JSON.stringify(data));\n _isLoggedInStat = true;\n localStorage.removeItem(\"REACT_TOKEN_AUTH\");\n localStorage.setItem(\"REACT_TOKEN_AUTH\", JSON.stringify(_data));\n return;\n};\n\nconst savePassword = (data) => {\n localStorage.removeItem(\"REACT_TEMP_PASSWORD\");\n localStorage.setItem(\"REACT_TEMP_PASSWORD\", data);\n return;\n};\n\nconst getPassword = () => {\n return localStorage.getItem(\"REACT_TEMP_PASSWORD\");\n};\n\nconst getUserType = () => {\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n return _data.data.login_type;\n};\n\nconst subUser = () =>{\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n return _data.data.admin_id;\n}\n\nconst permissions = ()=>{\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n return _data.data.permissions;\n}\n\nconst quickLogin = () => {\n _isLoggedInStat = true;\n return;\n};\nconst logout = () => {\n localStorage.removeItem(\"REACT_TOKEN_AUTH\");\n localStorage.removeItem('REACT_TEMP_PASSWORD');\n localStorage.removeItem('article-guided');\n window.location.href = \"/login\";\n // localStorage.removeItem(\"visit\");\n // _isLoggedInStat = false;\n // _data = null;\n};\n\nconst getExpirationDate = (jwtToken) => {\n if (!jwtToken) {\n return null;\n }\n\n const jwt = JSON.parse(atob(jwtToken.split(\".\")[1]));\n\n // multiply by 1000 to convert seconds into milliseconds\n return (jwt && jwt.exp && jwt.exp * 1000) || null;\n};\nconst isExpired = (exp) => {\n if (!exp) {\n return false;\n }\n return Date.now() > exp;\n};\n\nconst isLoggedIn = () => {\n if (_isLoggedInStat === false) {\n if (localStorage.getItem(\"REACT_TOKEN_AUTH\") != null) {\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n _isLoggedInStat = true;\n }\n }\n return _isLoggedInStat;\n};\n\nconst getToken = () => {\n // if (isExpired(getExpirationDate(_data.token))) {\n // logout();\n window.location.href = \"/login\";\n // }\n return _data.token;\n};\nconst getName = () => {\n if (isExpired(getExpirationDate(_data.token))) {\n // logout();\n window.location.href = \"/login\";\n }\n return _data.first_name + \" \" + _data.last_name;\n};\nconst getFirstName = () => {\n if (isExpired(getExpirationDate(_data.token))) {\n // logout();\n window.location.href = \"/login\";\n }\n\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n\n return _data.data.f_name;\n};\n\nconst getLastName = () => {\n if (isExpired(getExpirationDate(_data.token))) {\n // logout();\n window.location.href = \"/login\";\n }\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n\n return _data.data.l_name;\n};\nconst getemail = () => {\n if (isExpired(getExpirationDate(_data.token))) {\n // logout();\n window.location.href = \"/login\";\n }\n\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n return _data.data.email;\n};\nconst getPicture = () => {\n // if (isExpired(getExpirationDate(_data.token))) {\n // logout();\n // window.location.href = \"/login\";\n // }\n _data = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH\"));\n return _data.data.pic;\n};\n\nconst saveTempData = (data) => {\n _tempData = data;\n localStorage.removeItem(\"REACT_TOKEN_AUTH_TEMP\");\n localStorage.setItem(\"REACT_TOKEN_AUTH_TEMP\", JSON.stringify(_tempData));\n};\n\nconst savePicture = (pic) => {\n _data.pic = pic;\n localStorage.removeItem(\"REACT_TOKEN_AUTH\");\n localStorage.setItem(\"REACT_TOKEN_AUTH\", JSON.stringify(_data));\n};\n\nconst getTempToken = () => {\n if (_tempData === null)\n if (localStorage.getItem(\"REACT_TOKEN_AUTH_TEMP\") != null) {\n _tempData = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH_TEMP\"));\n }\n return _tempData.token;\n};\nconst getTempData = () => {\n if (_tempData === null)\n if (localStorage.getItem(\"REACT_TOKEN_AUTH_TEMP\") != null) {\n _tempData = JSON.parse(localStorage.getItem(\"REACT_TOKEN_AUTH_TEMP\"));\n }\n return _tempData;\n};\nconst removeTempData = () => {\n localStorage.removeItem(\"REACT_TOKEN_AUTH_TEMP\");\n _tempData = null;\n};\n\nexport {\n // login,\n addTokenSession,\n getTokenSession,\n logout,\n isLoggedIn,\n getToken,\n getName,\n getLastName,\n getFirstName,\n getemail,\n getPicture,\n savePicture,\n saveTempData,\n getTempToken,\n getTempData,\n removeTempData,\n quickLogin,\n savePassword,\n getPassword,\n getUserType,\n subUser,\n permissions\n};","import lottie from \"lottie-web\";\nimport React, { useEffect, useRef, useState, } from \"react\";\nconst useLottie = (props, style) => {\n const { animationData, loop, autoplay, initialSegment, onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy, \n // Specified here to take them out from the 'rest'\n lottieRef, renderer, name, assetsPath, rendererSettings, \n // TODO: find a better way to extract the html props to avoid specifying\n // all the props that we want to exclude (as you can see above)\n ...rest } = props;\n const [animationLoaded, setAnimationLoaded] = useState(false);\n const animationInstanceRef = useRef();\n const animationContainer = useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n const play = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n const stop = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n const pause = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n const setSpeed = (speed) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n const goToAndPlay = (value, isFrame) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n const goToAndStop = (value, isFrame) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n const setDirection = (direction) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n const playSegments = (segments, forceFlag) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n const setSubframe = (useSubFrames) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n const getDuration = (inFrames) => { var _a; return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames); };\n /**\n * Destroy animation\n */\n const destroy = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n const loadAnimation = (forcedConfigs = {}) => {\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n const config = {\n ...props,\n ...forcedConfigs,\n container: animationContainer.current,\n };\n // Save the animation instance\n animationInstanceRef.current = lottie.loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n useEffect(() => {\n const onUnmount = loadAnimation();\n // Clean up on unmount\n return () => onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n useEffect(() => {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n useEffect(() => {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] ||\n animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n useEffect(() => {\n const partialListeners = [\n { name: \"complete\", handler: onComplete },\n { name: \"loopComplete\", handler: onLoopComplete },\n { name: \"enterFrame\", handler: onEnterFrame },\n { name: \"segmentStart\", handler: onSegmentStart },\n { name: \"config_ready\", handler: onConfigReady },\n { name: \"data_ready\", handler: onDataReady },\n { name: \"data_failed\", handler: onDataFailed },\n { name: \"loaded_images\", handler: onLoadedImages },\n { name: \"DOMLoaded\", handler: onDOMLoaded },\n { name: \"destroy\", handler: onDestroy },\n ];\n const listeners = partialListeners.filter((listener) => listener.handler != null);\n if (!listeners.length) {\n return;\n }\n const deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n (listener) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return () => {\n deregisterList.forEach((deregister) => deregister());\n };\n }, [\n onComplete,\n onLoopComplete,\n onEnterFrame,\n onSegmentStart,\n onConfigReady,\n onDataReady,\n onDataFailed,\n onLoadedImages,\n onDOMLoaded,\n onDestroy,\n ]);\n /**\n * Build the animation view\n */\n const View = React.createElement(\"div\", { style: style, ref: animationContainer, ...rest });\n return {\n View,\n play,\n stop,\n pause,\n setSpeed,\n goToAndStop,\n goToAndPlay,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef: animationContainer,\n animationLoaded,\n animationItem: animationInstanceRef.current,\n };\n};\nexport default useLottie;\n","import { useEffect } from \"react\";\n// helpers\nexport function getContainerVisibility(container) {\n const { top, height } = container.getBoundingClientRect();\n const current = window.innerHeight - top;\n const max = window.innerHeight + height;\n return current / max;\n}\nexport function getContainerCursorPosition(container, cursorX, cursorY) {\n const { top, left, width, height } = container.getBoundingClientRect();\n const x = (cursorX - left) / width;\n const y = (cursorY - top) / height;\n return { x, y };\n}\nexport const useInitInteractivity = ({ wrapperRef, animationItem, mode, actions, }) => {\n useEffect(() => {\n const wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n const scrollModeHandler = () => {\n let assignedSegment = null;\n const scrollHandler = () => {\n const currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n const action = actions.find(({ visibility }) => visibility &&\n currentPercent >= visibility[0] &&\n currentPercent <= visibility[1]);\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" &&\n action.visibility &&\n action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n const frameToGo = action.frames[0] +\n Math.ceil(((currentPercent - action.visibility[0]) /\n (action.visibility[1] - action.visibility[0])) *\n action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return () => {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n const cursorModeHandler = () => {\n const handleCursor = (_x, _y) => {\n let x = _x;\n let y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n const pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n const action = actions.find(({ position }) => {\n if (position &&\n Array.isArray(position.x) &&\n Array.isArray(position.y)) {\n return (x >= position.x[0] &&\n x <= position.x[1] &&\n y >= position.y[0] &&\n y <= position.y[1]);\n }\n if (position &&\n !Number.isNaN(position.x) &&\n !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" &&\n action.position &&\n Array.isArray(action.position.x) &&\n Array.isArray(action.position.y) &&\n action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n const xPercent = (x - action.position.x[0]) /\n (action.position.x[1] - action.position.x[0]);\n const yPercent = (y - action.position.y[0]) /\n (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil(((xPercent + yPercent) / 2) *\n (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n const mouseMoveHandler = (ev) => {\n handleCursor(ev.clientX, ev.clientY);\n };\n const mouseOutHandler = () => {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return () => {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n};\nconst useLottieInteractivity = ({ actions, mode, lottieObj, }) => {\n const { animationItem, View, animationContainerRef } = lottieObj;\n useInitInteractivity({\n actions,\n animationItem,\n mode,\n wrapperRef: animationContainerRef,\n });\n return View;\n};\nexport default useLottieInteractivity;\n","import { useEffect } from \"react\";\nimport useLottie from \"../hooks/useLottie\";\nimport useLottieInteractivity from \"../hooks/useLottieInteractivity\";\nconst Lottie = (props) => {\n var _a, _b, _c;\n const { style, interactivity, ...lottieProps } = props;\n /**\n * Initialize the 'useLottie' hook\n */\n const { View, play, stop, pause, setSpeed, goToAndStop, goToAndPlay, setDirection, playSegments, setSubframe, getDuration, destroy, animationContainerRef, animationLoaded, animationItem, } = useLottie(lottieProps, style);\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n useEffect(() => {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play,\n stop,\n pause,\n setSpeed,\n goToAndPlay,\n goToAndStop,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef,\n animationLoaded,\n animationItem,\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View,\n play,\n stop,\n pause,\n setSpeed,\n goToAndStop,\n goToAndPlay,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef,\n animationLoaded,\n animationItem,\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\",\n });\n};\nexport default Lottie;\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","/**\n * @license React\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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(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(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(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}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!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,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({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 ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(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}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!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&&1=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=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(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)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;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}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(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.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(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.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on