{"version":3,"sources":["webpack:///./node_modules/quasar/src/components/form/QForm.js","webpack:///./src/components/contents/Overdraft/NotEligible.vue?a481","webpack:///./node_modules/quasar/src/composables/private/use-ratio.js","webpack:///./node_modules/quasar/src/components/img/QImg.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/dispatchRequest.js","webpack:///./src/assets/info.svg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/buildURL.js","webpack:///./src/components/base/AppInputDate/Date.vue","webpack:///./src/components/base/AppInputDate/Date.vue?1148","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./src/assets/confirm-repayment.svg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/buildFullPath.js","webpack:///./src/components/base/Modal/Modal.vue","webpack:///./src/components/base/Modal/Modal.vue?cba0","webpack:///./src/components/base/AppInputDate/Date.vue?8608","webpack:///./node_modules/lottie-vuejs/node_modules/axios/index.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/adapters/xhr.js","webpack:///./src/assets/green-check.svg","webpack:///./src/components/reusables/EmptyPlaceholder.vue","webpack:///./src/components/reusables/EmptyPlaceholder.vue?bbd0","webpack:///./src/components/contents/Overdraft/modals/badge.vue","webpack:///./node_modules/lottie-vuejs/src/LottieAnimation.vue","webpack:///./node_modules/lottie-vuejs/src/LottieAnimation.vue?bcdf","webpack:///./src/components/contents/Overdraft/modals/badge.vue?28e6","webpack:///./src/components/reusables/NewPagination.vue","webpack:///./node_modules/quasar/src/components/pagination/QPagination.js","webpack:///./src/components/reusables/NewPagination.vue?b0cb","webpack:///./src/components/base/AppInput/Input.vue","webpack:///./node_modules/quasar/src/components/popup-proxy/QPopupProxy.js","webpack:///./src/components/base/AppInput/Input.vue?1d4f","webpack:///./src/components/base/AppSelect/Select.vue","webpack:///./src/components/base/AppSelect/Select.vue?a354","webpack:///./src/components/reusables/Table/DataTable.vue","webpack:///./src/components/reusables/Table/itemsCount.vue","webpack:///./src/components/reusables/Table/itemsCount.vue?5e89","webpack:///./src/components/reusables/Table/DataTable.vue?9ec9","webpack:///./node_modules/quasar/src/components/badge/QBadge.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/quasar/src/components/toolbar/QToolbar.js","webpack:///./src/components/reusables/badges.vue?09bf","webpack:///./src/components/contents/Overdraft/modals/borrow.vue?2335","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/Cancel.js","webpack:///./src/components/reusables/Table/DataTable.vue?17d4","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/defaults.js","webpack:///./src/components/reusables/TableSearch.vue","webpack:///./src/components/reusables/TableSearch.vue?d65a","webpack:///./src/helpers/money.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/settle.js","webpack:///./src/assets/white-plus.svg","webpack:///./src/components/contents/Overdraft/modals/badge.vue?56be","webpack:///./node_modules/lottie-web/build/player/lottie.js","webpack:///./src/components/contents/Overdraft/modals/status.vue","webpack:///./src/components/contents/Overdraft/modals/status.vue?ce49","webpack:///./node_modules/quasar/src/components/page/QPage.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/axios.js","webpack:///./src/helpers/utils.js","webpack:///./src/services/overdraft.http.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/cookies.js","webpack:///./src/components/base/AppSelect/Select.vue?f0ca","webpack:///./node_modules/quasar/src/components/table/QTr.js","webpack:///./src/components/contents/Overdraft/index.vue?aba1","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/combineURLs.js","webpack:///./src/assets/red-times.svg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/utils.js","webpack:///./src/components/contents/Overdraft/OverdraftOverview.vue?76a3","webpack:///./src/components/reusables/EmptyPlaceholder.vue?64e9","webpack:///./src/components/contents/Overdraft/modals/confirm.vue","webpack:///./src/components/contents/Overdraft/modals/confirm.vue?51b2","webpack:///./src/components/reusables/badges.vue","webpack:///./src/components/reusables/badges.vue?d318","webpack:///./node_modules/quasar/src/components/table/QTd.js","webpack:///./src/components/contents/Overdraft/card/index.vue?e3e0","webpack:///./src/assets/overdraft-repay-info.svg","webpack:///./src/components/contents/Overdraft/modals/status.vue?ced5","webpack:///./src/components/reusables/TableSearch.vue?2aa6","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/createError.js","webpack:///./src/components/contents/Overdraft/modals/confirm.vue?180b","webpack:///./src/components/contents/Overdraft/OverdraftTable.vue?4ca6","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./src/views/Overdraft/index.vue","webpack:///./src/components/contents/Overdraft/index.vue","webpack:///./src/components/contents/Overdraft/OverdraftOverview.vue","webpack:///./src/components/contents/Overdraft/card/index.vue","webpack:///./src/components/contents/Overdraft/card/index.vue?c707","webpack:///./src/components/contents/Overdraft/modals/borrow.vue","webpack:///./src/components/contents/Overdraft/modals/borrow.vue?f438","webpack:///./src/components/contents/Overdraft/OverdraftOverview.vue?67bd","webpack:///./src/components/contents/Overdraft/OverdraftTable.vue","webpack:///./src/components/contents/Overdraft/modals/filter.vue","webpack:///./src/components/contents/Overdraft/modals/filter.vue?2246","webpack:///./src/components/contents/Overdraft/OverdraftTable.vue?8c8e","webpack:///./src/components/contents/Overdraft/NotEligible.vue","webpack:///./src/components/contents/Overdraft/NotEligible.vue?577b","webpack:///./src/components/contents/Overdraft/index.vue?71ac","webpack:///./src/views/Overdraft/index.vue?ee25","webpack:///./src/components/reusables/Table/itemsCount.vue?f139","webpack:///./src/assets/overdraft-eligibility.svg"],"names":["defineComponent","name","props","autofocus","Boolean","noErrorFocus","noResetFocus","greedy","onSubmit","Function","emits","setup","slots","emit","vm","getCurrentInstance","rootRef","ref","validateIndex","registeredComponents","validate","shouldFocus","promises","focus","emitEvent","res","i","length","comp","valid","then","push","error","Promise","resolve","index","all","errors","filter","r","resetValidation","forEach","submit","evt","stopAndPrevent","val","target","reset","nextTick","addFocusFn","value","querySelector","Array","prototype","find","call","querySelectorAll","el","tabIndex","provide","formKey","bindComponent","vmProxy","unbindComponent","indexOf","splice","onMounted","Object","assign","proxy","getValidationComponents","h","class","onReset","hSlot","default","useRatioProps","ratio","String","Number","naturalRatio","computed","isNaN","paddingBottom","crossoriginValues","loadingValues","fitValues","defaultRatio","src","srcset","sizes","alt","crossorigin","type","validator","includes","draggable","loading","width","height","initialRatio","placeholderSrc","fit","position","imgClass","imgStyle","noSpinner","noNativeMenu","noTransition","spinnerColor","spinnerSize","attrs","ratioStyle","useRatio","loadTimer","images","isLoading","hasError","classes","style","objectFit","objectPosition","getCurrentSrc","addImage","imgProps","clearTimeout","onLoad","naturalHeight","naturalWidth","waitForCompleteness","count","complete","onReady","setTimeout","img","currentSrc","onError","err","getContainer","key","child","getImage","data","getContent","QSpinner","color","size","watch","onBeforeUnmount","content","Transition","role","utils","transformData","isCancel","defaults","throwIfCancellationRequested","config","cancelToken","throwIfRequested","module","exports","headers","transformRequest","merge","common","method","adapter","response","transformResponse","reason","reject","Cancel","CancelToken","executor","TypeError","resolvePromise","this","promise","token","message","source","cancel","c","encode","encodeURIComponent","replace","url","params","paramsSerializer","serializedParams","isURLSearchParams","toString","parts","isArray","v","isDate","toISOString","isObject","JSON","stringify","join","hashmarkIndex","slice","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","$props","label","_hoisted_3","_toDisplayString","subLabel","_createVNode","_component_q_input","_mergeProps","placeholder","placelabel","outlined","input-class","_ctx","$attrs","id","min","max","__exports__","render","QInput","ignoreDuplicateOf","parsed","split","line","trim","substr","toLowerCase","concat","callback","arr","apply","code","request","isAxiosError","toJSON","description","number","fileName","lineNumber","columnNumber","stack","isAbsoluteURL","combineURLs","baseURL","requestedURL","show","_createBlock","_component_q_dialog","model-value","onHide","_cache","$event","$emit","persistent","_component_q_card","_normalizeClass","cardClass","_normalizeStyle","toolbar","_component_q_toolbar","headerStyle","backButton","_component_q_btn","onClick","icon","unelevated","flat","ripple","title","closeBtnClass","round","dense","$options","closePopup","backgroundColor","_component_q_separator","separatorClass","_component_q_card_section","contentClasses","_renderSlot","$slots","defaut","methods","QDialog","QCard","QToolbar","QBtn","QSeparator","QCardSection","ClosePopup","__webpack_amd_options__","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","isFormData","XMLHttpRequest","auth","username","password","Authorization","btoa","fullPath","open","toUpperCase","timeout","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","setRequestHeader","isUndefined","e","onDownloadProgress","addEventListener","onUploadProgress","upload","abort","send","_component_q_img","imageHeight","imageSource","_hoisted_4","QImg","_component_Modal","showModal","onClosecard","padding","_component_LottiePlayer","path","loop","autoPlay","speed","_hoisted_5","_hoisted_6","_component_AppButton","btnLabel","required","loopDelayMin","loopDelayMax","rendererSettings","scaleMode","clearCanvas","progressiveLoad","hideOnTransparent","anim","mounted","init","axios","get","overflow","margin","jsonData","loadJsonData","destroy","lottie","loadAnimation","container","$refs","lavContainer","renderer","autoplay","animationData","setSpeed","executeLoop","getRandomInt","Math","ceil","floor","random","play","stop","newVal","oldVal","components","Modal","AppButton","LottiePlayer","success","_component_q_pagination","$data","current","pageNumber","direction-links","outline","active-color","ellipses","max-pages","maxPages","currentPage","useDarkProps","modelValue","textColor","activeColor","activeTextColor","inputStyle","inputClass","disable","input","iconPrev","iconNext","iconFirst","iconLast","toFn","boundaryLinks","boundaryNumbers","directionLinks","rounded","glossy","$q","isDark","useDark","newPage","model","set","parseInt","between","getBool","otherwise","inputPlaceholder","__boundaryLinks","__boundaryNumbers","__directionLinks","__ellipses","icons","ico","iconSet","pagination","first","prev","next","last","lang","rtl","reverse","btnProps","activeBtnProps","setByOffset","offset","updateModel","getBtn","page","to","contentStart","contentEnd","contentMiddle","unshift","dark","borderless","onKeyup","isKeyCode","onBlur","pgFrom","pgTo","ellipsesStart","ellipsesEnd","boundaryStart","boundaryEnd","minWidth","active","btn","QPagination","bg-color","_createSlots","_","phone","selectedCountry","_component_q_menu","_Fragment","_renderList","countries","country","_component_q_list","_component_q_item","clickable","_hoisted_7","_hoisted_9","prepend","appendAction","verifyCode","showPassword","date","_component_q_popup_proxy","cover","transition-show","transition-hide","_component_q_date","_hoisted_10","countryCode","autoSuggest","showSomething","inputListeners","$listeners","event","item","useAnchorProps","breakpoint","showing","popupRef","canShow","useAnchor","getType","screen","onShow","hide","toggle","def","popupProps","maxHeight","component","QMenu","contextMenu","noParentEvent","separateClosePopup","QList","QItem","QPopupProxy","QDate","_component_q_select","options","QSelect","_component_q_table","rows","columns","row-key","onRowClick","rows-per-page-options","selected-rows-label","getSelectedString","selection","selected","setSelected","onSelection","details","top","_withCtx","header","showItemsCount","_component_itemsCount","totalCount","showSearchBar","_component_TableSearch","onTextInput","showActionButtons","shiftSize","body","no-data","_$props$emptyStateDat","_$props$emptyStateDat2","_$props$emptyStateDat3","_$props$emptyStateDat4","emptyStateIsImage","_component_EmptyPlaceholder","emptyStateData","_hoisted_8","canBePaginated","_component_Pagination","limit","onChangePage","itemsCount","TableSearch","EmptyPlaceholder","Pagination","clearFilter","filterSize","canBeFiltered","selectedRows","table__top","document","paddingLeft","paddingRight","QTable","QCheckbox","alignValues","floating","transparent","multiLine","align","verticalAlign","text","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","prop","deepMerge","axiosKeys","otherKeys","keys","InterceptorManager","handlers","use","fulfilled","rejected","eject","fn","test","inset","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","isString","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","parse","maxContentLength","validateStatus","_component_q_icon","inputVal","QIcon","currency","formatMoney","showCurrency","toBasicUnit","figure","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","currencyDisplay","format","global","factory","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","len","attr","hasOwnProperty","getDescriptor","object","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","createTypedArrayFactory","Float32Array","Int16Array","Uint8ClampedArray","createSizedArray","_typeof$6","obj","Symbol","iterator","constructor","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","_shouldRoundValues","bmPow","pow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","abs","tOfVal","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","styleDiv","element","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","s","g","b","f","p","q","t","RGBtoHSV","d","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","createWorker","Worker","Blob","blob","URL","createObjectURL","setupWorker","dataFunctionManager","completeLayers","layers","comps","layerData","j","jLen","k","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","completeChars","chars","assets","findComp","__used","ks","it","o","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","checkChars","charData","ip","op","st","sr","a","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","completeData","__complete","moduleOb","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","loadAsset","errorCallback","load","payload","animation","onComplete","createProcess","processId","origin","loadData","completeAnimation","ImagePreloader","proxyImage","canvas","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","intervalId","setInterval","box","getBBox","_imageLoaded","clearInterval","bind","createImageData","ob","setAttributeNS","_elementHelper","append","appendChild","createImgData","crossOrigin","createFootageData","footageData","_footageLoaded","loadAssets","cb","_createImageData","setPath","setAssetsPath","getAsset","loadedImages","loadedFootages","setCacheType","elementHelper","ImagePreloaderFactory","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","removeEventListener","markerParser","parsePayloadLines","lines","keysCount","Error","_markers","markers","_marker","markerData","time","tm","duration","dr","cm","__","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","wrapper","animType","RendererClass","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","trigger","setData","wrapperAttributes","attributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setDirection","setSegment","end","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","getRegisteredAnimations","lenAnims","animations","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","searchAnimations","standalone","animElements","getElementsByClassName","getElementsByTagName","innerText","div","freeze","unfreeze","BezierFactory","getBezierEasing","beziers","str","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","_p","_mSampleValues","_precomputed","x","mY1","mY2","_precompute","_getTForX","_calcSampleValues","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","pooling","_double","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","create","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","BezierData","segmentLength","PointData","partial","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","getPointInSegment","percent","t1","u1","ptX","ptY","bezierSegmentPoints","getNewSegment","startPerc","endPerc","t0","u0","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","y","n","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quatStart","createQuaternion","quatEnd","quaternionToEuler","slerp","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c1","cos","c2","c3","s1","s2","s3","w","z","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shapesEqual","shape1","shape2","ShapeProperty","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","getShapeProp","dataProp","getConstructorFunction","getKeyframedConstructorFunction","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","l","m","translate","tx","tz","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_a","_b","_c","_d","_e","_f","_typeof$3","setLocation","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","bodymovin","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShapeInCollection","lastShape","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","applyToMatrix","mat","rz","ry","rx","px","py","pz","forceRender","_isDirty","precalculateMatrix","pre","appliedTransformations","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","TransformProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","rotatedVector","getProjectingAngle","cur","prevIndex","nextIndex","prevPoint","nextPoint","pVector","zigZagCorner","frequency","pointType","prevDist","nextDist","zigZagSegment","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","right","mid","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styleName","styles","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","root","p10","p11","p20","p21","bounds","bottom","other","shapeSegmentInverted","pointsType","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","maxWaitingTime","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","CANCEL_TAG_CODE_POINT","A_TAG_CODE_POINT","Z_TAG_CODE_POINT","VARIATION_SELECTOR_16_CODE_POINT","ZERO_WIDTH_JOINER_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","parentNode","fontFamily","node","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","parent","checkLoadedFonts","loadedCount","loaded","fOrigin","monoCase","sansCase","removeChild","Date","now","checkLoadedFontsBinded","setIsLoadedBinded","createHelper","helper","engine","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measure","getComputedTextLength","measureText","list","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","fPath","rel","sc","found","ch","getCharData","_char","charCodeAt","console","warn","_warned","_char2","fontName","getFontByName","doubleSize","singleSize","fName","getCodePoint","string","codePoint","second","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isVariationSelector","isRegionalCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","setIsLoaded","Font","typekitLoaded","fontPrototype","SlotManager","slotFactory","RenderableElement","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","mode","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","createFilter","filId","skipCoordinates","fil","createAlphaToLuminanceFilter","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","_prototype","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","shouldBreakProcess","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","diff","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","renderNoop","styleData","itemData","pathStringTransformed","redraw","iterations","lLen","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","GradientConstructor","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","shapeProperty","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","add","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getTextSelectorProp","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","animatorSelector","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","ariaLabel","titleElement","titleId","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","className","focusable","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","createLumaSvgFilter","_svg","loadLuma","getLuma","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","tmpDOMElement","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","defineProperty","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","nodecrypto","chunks","digits","rngname","startdenom","significance","seedrandom","seed","entropy","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","int32","quick","S","pass","is_math_call","state","copy","keylen","me","result","typ","smear","stringseed","randomBytes","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","frames","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","rndm","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","yaw","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","MaskManager","_masksInterfaces","maskFunction","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","arrValue","defaultGetter","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","propMatrix","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","_registerMaskInterface","_registerEffectsInterface","anchorPointDescriptor","defineProperties","anchor_point","startTime","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","_propertyGroup","effectsData","createGroupInterface","groupInterface","mn","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","contentsInterfaceFactory","interfaces","transformInterfaceFactory","cix","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","start","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","parentGroupWrapper","_sourceText","sourceText","stringValue","fillColor","_typeof","outlineInterfaceFactory","currentPropertyName","currentProperty","propertyNameIndex","dataInterfaceFactory","outlineInterface","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","endFrame","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","getShapeValueAtTime","shapeValue","lastTime","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","unitVector","tangentOnPath","normalOnPath","propertyGetShapeProp","trims","initialize$1","addDecorator","calculateExpression","getExpressionValue","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","titleColor","styleFn","$layout","inject","layoutKey","pageContainerKey","space","footer","isContainer","containerHeight","minHeight","Axios","mergeConfig","createInstance","defaultConfig","instance","extend","instanceConfig","spread","groupBy","xs","reduce","rv","snakeCaseToTitle","map","word","purposeCase","capitalizeFirstLetter","formatDate","_date","subtotal","total","quantity","price","calculateDiscount","discount_selected","discount","_subtotal","grandTotal","shipping_fee","vat","discountAmount","truncateLengthyText","maxLength","Overdraft","api","http","createOverdraft","post","getOverdrafts","filterOverdrafts","range","from","getOverdraftsOverview","getOverdraftLevels","getSingleOverdraft","reference","repayOverdraft","getOverdraftTransaction","fns","write","expires","domain","secure","cookie","isNumber","toGMTString","match","RegExp","remove","noHover","__trClass","relativeURL","FormData","ArrayBuffer","isView","isFunction","pipe","URLSearchParams","product","assignValue","arguments","thisArg","border","btnLabel1","btnLabel2","_component_q_badge","_$props$status","QBadge","autoWidth","vnode","colsMap","row","__tdClass","__tdStyle","enhanceError","dispatchRequest","interceptors","chain","interceptor","getUri","normalizedName","_component_Overdraft","_component_q_page","_$data$overviewData","eligible","_component_OverdraftOverview","applyForOverdraft","isEmptyStateButtonClicked","overviewData","onFetchData","getAllOverdraftsOverview","_component_OverdraftTable","onCurrentPage","updateTable","onFilterTables","filterTables","overviewTable","onApplyForOverdraft","noEligible","_component_NotEligible","percentage","gamificationPoint","CTALink","_component_OverdraftCard","showInfo","showAmount","_$props$overviewData","eligibleAmount","borrowButton","_$props$overviewData2","borderRadius","pendingOverdraftAmount","openBorrowModal","_$props$overviewData3","_$props$overviewData4","_$props$overviewData5","pendingOverdraftInterestAmount","showDate","_$props$overviewData6","pendingOverdraftDueDate","hideRepayButtonOrLink","_$props$overviewData7","repayButtonOrLink","confirmRepayModal","showBadge","_$props$overviewData8","nextLevelBadgeImageUrl","badgeImage","_$props$overviewData9","showPercentBar","_$props$overviewData10","rangePoint","rangePointTotal","_$props$overviewData11","showCTA","learnmore","_component_BorrowModal","borrowModal","_$props$overviewData12","onCloseCard","onButtonAction","borrowFunds","borrowModalComponentKey","_component_StatusModal","sucessBorrowModal","statusImage","_imports_0","subtitle","$setup","successAmount","_component_ConfirmModal","onButtonOneAction","onButtonTwoAction","repayNow","_imports_1","_$props$overviewData13","_$props$overviewData14","_imports_2","_hoisted_11","repayModal","repayFailedModal","_imports_3","_component_BadgeModal","levelUpdateModal","_$props$overviewData15","badgeImages","_$props$overviewData16","_hoisted_13","_hoisted_14","pointUpdateModal","toOverdraftBadges","repayResize","_component_q_linear_progress","_hoisted_12","$router","QLinearProgress","_component_AppInput","step","rules","checkMinAmount","checkEligibleAmount","lazy-rules","form","overdraftBreakdown","interest","paybackAmount","_hoisted_15","paybackDate","_hoisted_16","_hoisted_17","_component_q_checkbox","terms","_hoisted_18","submitForm","disabled","bottonState1","bottonState2","AppInput","mixins","authRulesMixin","amountRule1","amountRule2","amountRule3","some","addToDate","days","formattedAmount","OverdraftCard","BorrowModal","ConfirmModal","StatusModal","BadgeModal","immediate","deep","handler","created","overdraftService","OverdraftService","$api2","borrowFundsTest","$mixpanel","track","email","$store","getters","showMessage","_this$overviewData","overdraftReference","repayNowTest","_component_DataTable","onFilterTable","onOpenFilter","showFilterModal","onPaginationAction","paginationAction","buttons","_component_q_tr","_component_q_td","_component_Badges","mapDisbursed","createdAt","dueDate","text-color","new","_component_FilterModal","filterOverdraft","onCloseFilter","_component_q_form","_withModifiers","filterData","_component_AppSelect","dates","popup-content-class","query","_component_AppInputDate","filterButtonState","AppSelect","AppInputDate","_this$query","_this$query2","_this$query3","_this$query4","QForm","DataTable","Badges","FilterModal","field","sortable","requestDate","rowsPerPage","scrollTo","QTr","QTd","innerCardResize","OverdraftOverview","OverdraftTable","NotEligible","triggerMixpanel","eligibleStatus","isEligible","getAllOverdrafts","overdraftsData","_event$status","rangeValue","_event$range","statusVal","QPage"],"mappings":"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","file":"js/chunk-7992842e.b5535256.js","sourcesContent":["import { h, defineComponent, ref, onMounted, getCurrentInstance, nextTick, provide } from 'vue'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { formKey } from '../../utils/private/symbols.js'\n\nexport default defineComponent({\n name: 'QForm',\n\n props: {\n autofocus: Boolean,\n noErrorFocus: Boolean,\n noResetFocus: Boolean,\n greedy: Boolean,\n\n onSubmit: Function\n },\n\n emits: [ 'reset', 'validation-success', 'validation-error' ],\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const rootRef = ref(null)\n\n let validateIndex = 0\n const registeredComponents = []\n\n function validate (shouldFocus) {\n const promises = []\n const focus = typeof shouldFocus === 'boolean'\n ? shouldFocus\n : props.noErrorFocus !== true\n\n validateIndex++\n\n const emitEvent = (res, ref) => {\n emit('validation-' + (res === true ? 'success' : 'error'), ref)\n }\n\n for (let i = 0; i < registeredComponents.length; i++) {\n const comp = registeredComponents[ i ]\n const valid = comp.validate()\n\n if (typeof valid.then === 'function') {\n promises.push(\n valid.then(\n valid => ({ valid, comp }),\n error => ({ valid: false, comp, error })\n )\n )\n }\n else if (valid !== true) {\n if (props.greedy === false) {\n emitEvent(false, comp)\n\n if (focus === true && typeof comp.focus === 'function') {\n comp.focus()\n }\n\n return Promise.resolve(false)\n }\n\n promises.push({ valid: false, comp })\n }\n }\n\n if (promises.length === 0) {\n emitEvent(true)\n return Promise.resolve(true)\n }\n\n const index = validateIndex\n\n return Promise.all(promises).then(\n res => {\n if (index === validateIndex) {\n const errors = res.filter(r => r.valid !== true)\n\n if (errors.length === 0) {\n emitEvent(true)\n return true\n }\n\n const { valid, comp } = errors[ 0 ]\n\n emitEvent(false, comp)\n\n if (\n focus === true\n && valid !== true\n && typeof comp.focus === 'function'\n ) {\n comp.focus()\n }\n\n return false\n }\n }\n )\n }\n\n function resetValidation () {\n validateIndex++\n\n registeredComponents.forEach(comp => {\n typeof comp.resetValidation === 'function' && comp.resetValidation()\n })\n }\n\n function submit (evt) {\n evt !== void 0 && stopAndPrevent(evt)\n\n validate().then(val => {\n if (val === true) {\n if (props.onSubmit !== void 0) {\n emit('submit', evt)\n }\n else if (evt !== void 0 && evt.target !== void 0 && typeof evt.target.submit === 'function') {\n evt.target.submit()\n }\n }\n })\n }\n\n function reset (evt) {\n evt !== void 0 && stopAndPrevent(evt)\n\n emit('reset')\n\n nextTick(() => { // allow userland to reset values before\n resetValidation()\n if (props.autofocus === true && props.noResetFocus !== true) {\n focus()\n }\n })\n }\n\n function focus () {\n addFocusFn(() => {\n if (rootRef.value === null) { return }\n\n const target = rootRef.value.querySelector('[autofocus], [data-autofocus]')\n || Array.prototype.find.call(rootRef.value.querySelectorAll('[tabindex]'), el => el.tabIndex > -1)\n\n target !== null && target !== void 0 && target.focus()\n })\n }\n\n provide(formKey, {\n bindComponent (vmProxy) {\n registeredComponents.push(vmProxy)\n },\n\n unbindComponent (vmProxy) {\n const index = registeredComponents.indexOf(vmProxy)\n if (index > -1) {\n registeredComponents.splice(index, 1)\n }\n }\n })\n\n onMounted(() => {\n props.autofocus === true && focus()\n })\n\n // expose public methods\n Object.assign(vm.proxy, {\n validate,\n resetValidation,\n submit,\n reset,\n focus,\n getValidationComponents: () => registeredComponents\n })\n\n return () => h('form', {\n class: 'q-form',\n ref: rootRef,\n onSubmit: submit,\n onReset: reset\n }, hSlot(slots.default))\n }\n})\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./NotEligible.vue?vue&type=style&index=0&id=71f0caa4&lang=scss&scoped=true\"","import { computed } from 'vue'\n\nexport const useRatioProps = {\n ratio: [ String, Number ]\n}\n\nexport default function (props, naturalRatio) {\n // return ratioStyle\n return computed(() => {\n const ratio = Number(\n props.ratio || (naturalRatio !== void 0 ? naturalRatio.value : void 0)\n )\n\n return isNaN(ratio) !== true && ratio > 0\n ? { paddingBottom: `${ 100 / ratio }%` }\n : null\n })\n}\n","import { h, defineComponent, ref, computed, watch, onMounted, onBeforeUnmount, Transition } from 'vue'\n\nimport QSpinner from '../spinner/QSpinner.js'\nimport useRatio, { useRatioProps } from '../../composables/private/use-ratio.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nconst crossoriginValues = [ 'anonymous', 'use-credentials' ]\nconst loadingValues = [ 'eager', 'lazy' ]\nconst fitValues = [ 'cover', 'fill', 'contain', 'none', 'scale-down' ]\nconst defaultRatio = 16 / 9\n\nexport default defineComponent({\n name: 'QImg',\n\n props: {\n ...useRatioProps,\n\n src: String,\n srcset: String,\n sizes: String,\n\n alt: String,\n crossorigin: {\n type: String,\n validator: val => crossoriginValues.includes(val)\n },\n draggable: Boolean,\n\n loading: {\n type: String,\n default: 'lazy',\n validator: val => loadingValues.includes(val)\n },\n width: String,\n height: String,\n initialRatio: {\n type: [ Number, String ],\n default: defaultRatio\n },\n\n placeholderSrc: String,\n\n fit: {\n type: String,\n default: 'cover',\n validator: val => fitValues.includes(val)\n },\n position: {\n type: String,\n default: '50% 50%'\n },\n\n imgClass: String,\n imgStyle: Object,\n\n noSpinner: Boolean,\n noNativeMenu: Boolean,\n noTransition: Boolean,\n\n spinnerColor: String,\n spinnerSize: String\n },\n\n emits: [ 'load', 'error' ],\n\n setup (props, { slots, attrs, emit }) {\n const naturalRatio = ref(props.initialRatio)\n const ratioStyle = useRatio(props, naturalRatio)\n\n let loadTimer\n\n const images = [\n ref(null),\n ref(props.placeholderSrc !== void 0 ? { src: props.placeholderSrc } : null)\n ]\n\n const position = ref(0)\n\n const isLoading = ref(false)\n const hasError = ref(false)\n\n const classes = computed(() =>\n `q-img q-img--${ props.noNativeMenu === true ? 'no-' : '' }menu`\n )\n\n const style = computed(() => ({\n width: props.width,\n height: props.height\n }))\n\n const imgClass = computed(() =>\n `q-img__image ${ props.imgClass !== void 0 ? props.imgClass + ' ' : '' }`\n + `q-img__image--with${ props.noTransition === true ? 'out' : '' }-transition`\n )\n\n const imgStyle = computed(() => ({\n ...props.imgStyle,\n objectFit: props.fit,\n objectPosition: props.position\n }))\n\n watch(() => getCurrentSrc(), addImage)\n\n function getCurrentSrc () {\n return props.src || props.srcset || props.sizes\n ? {\n src: props.src,\n srcset: props.srcset,\n sizes: props.sizes\n }\n : null\n }\n\n function addImage (imgProps) {\n clearTimeout(loadTimer)\n hasError.value = false\n\n if (imgProps === null) {\n isLoading.value = false\n images[ 0 ].value = null\n images[ 1 ].value = null\n return\n }\n\n isLoading.value = true\n images[ position.value ].value = imgProps\n }\n\n function onLoad ({ target }) {\n // if component has been already destroyed\n if (loadTimer === null) { return }\n\n clearTimeout(loadTimer)\n\n naturalRatio.value = target.naturalHeight === 0\n ? 0.5\n : target.naturalWidth / target.naturalHeight\n\n waitForCompleteness(target, 1)\n }\n\n function waitForCompleteness (target, count) {\n // protect against running forever\n if (loadTimer === null || count === 1000) { return }\n\n if (target.complete === true) {\n onReady(target)\n }\n else {\n loadTimer = setTimeout(() => {\n waitForCompleteness(target, count + 1)\n }, 50)\n }\n }\n\n function onReady (img) {\n // if component has been already destroyed\n if (loadTimer === null) { return }\n\n position.value = position.value === 1 ? 0 : 1\n images[ position.value ].value = null\n isLoading.value = false\n hasError.value = false\n emit('load', img.currentSrc || img.src)\n }\n\n function onError (err) {\n clearTimeout(loadTimer)\n isLoading.value = false\n hasError.value = true\n images[ 0 ].value = null\n images[ 1 ].value = null\n emit('error', err)\n }\n\n function getContainer (key, child) {\n return h(\n 'div',\n { class: 'q-img__container absolute-full', key },\n child\n )\n }\n\n function getImage (index) {\n const img = images[ index ].value\n\n const data = {\n key: 'img_' + index,\n ...attrs,\n class: imgClass.value,\n style: imgStyle.value,\n crossorigin: props.crossorigin,\n height: props.height,\n width: props.width,\n loading: props.loading,\n 'aria-hidden': 'true',\n draggable: props.draggable,\n ...img\n }\n\n if (position.value === index) {\n data.class += ' q-img__image--waiting'\n Object.assign(data, { onLoad, onError })\n }\n else {\n data.class += ' q-img__image--loaded'\n }\n\n return getContainer('img' + index, h('img', data))\n }\n\n function getContent () {\n if (isLoading.value !== true) {\n return h('div', {\n key: 'content',\n class: 'q-img__content absolute-full q-anchor--skip'\n }, hSlot(slots[ hasError.value === true ? 'error' : 'default' ]))\n }\n\n return h('div', {\n key: 'loading',\n class: 'q-img__loading absolute-full flex flex-center'\n }, (\n slots.loading !== void 0\n ? slots.loading()\n : (\n props.noSpinner === true\n ? void 0\n : [\n h(QSpinner, {\n color: props.spinnerColor,\n size: props.spinnerSize\n })\n ]\n )\n ))\n }\n\n if (__QUASAR_SSR_SERVER__ !== true) {\n if (__QUASAR_SSR_CLIENT__ && isRuntimeSsrPreHydration.value === true) {\n onMounted(() => {\n addImage(getCurrentSrc())\n })\n }\n else {\n addImage(getCurrentSrc())\n }\n\n onBeforeUnmount(() => {\n clearTimeout(loadTimer)\n loadTimer = null\n })\n }\n\n return () => {\n const content = []\n\n if (ratioStyle.value !== null) {\n content.push(\n h('div', { key: 'filler', style: ratioStyle.value })\n )\n }\n\n if (hasError.value !== true) {\n if (images[ 0 ].value !== null) {\n content.push(getImage(0))\n }\n\n if (images[ 1 ].value !== null) {\n content.push(getImage(1))\n }\n }\n\n content.push(\n h(Transition, { name: 'q-transition--fade' }, getContent)\n )\n\n return h('div', {\n class: classes.value,\n style: style.value,\n role: 'img',\n 'aria-label': props.alt\n }, content)\n }\n }\n})\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","module.exports = __webpack_public_path__ + \"img/info.5a3d839e.svg\";","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","\n
\n \n \n
\n\n\n\n\n\n","import { render } from \"./Date.vue?vue&type=template&id=38e9194c&scoped=true\"\nimport script from \"./Date.vue?vue&type=script&lang=js\"\nexport * from \"./Date.vue?vue&type=script&lang=js\"\n\nimport \"./Date.vue?vue&type=style&index=0&id=38e9194c&scoped=true&lang=css\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-38e9194c\"]])\n\nexport default __exports__\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QInput});\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","module.exports = __webpack_public_path__ + \"img/confirm-repayment.ebd406a4.svg\";","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","\n \n \n \n
\n \n \n {{ title }}\n \n
\n
\n \n
\n \n \n \n \n \n \n \n\n\n\n","import { render } from \"./Modal.vue?vue&type=template&id=7a52a545\"\nimport script from \"./Modal.vue?vue&type=script&lang=js\"\nexport * from \"./Modal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QToolbar from 'quasar/src/components/toolbar/QToolbar.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QSeparator from 'quasar/src/components/separator/QSeparator.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';import ClosePopup from 'quasar/src/directives/ClosePopup.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QDialog,QCard,QToolbar,QBtn,QSeparator,QCardSection});qInstall(script, 'directives', {ClosePopup});\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./Date.vue?vue&type=style&index=0&id=38e9194c&scoped=true&lang=css\"","module.exports = require('./lib/axios');","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","module.exports = __webpack_public_path__ + \"img/green-check.0e02e683.svg\";","\n
\n
\n \n
{{ message }}
\n
{{ description }}
\n
\n\n \n
\n\n\n\n\n\n","import { render } from \"./EmptyPlaceholder.vue?vue&type=template&id=8dafecbe&scoped=true\"\nimport script from \"./EmptyPlaceholder.vue?vue&type=script&lang=js\"\nexport * from \"./EmptyPlaceholder.vue?vue&type=script&lang=js\"\n\nimport \"./EmptyPlaceholder.vue?vue&type=style&index=0&id=8dafecbe&lang=scss&scoped=true\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8dafecbe\"]])\n\nexport default __exports__\nimport QImg from 'quasar/src/components/img/QImg.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QImg});\n","\n \n
\n\n\n\n\n\n","import { render } from \"./Select.vue?vue&type=template&id=c2001d6c&scoped=true\"\nimport script from \"./Select.vue?vue&type=script&lang=js\"\nexport * from \"./Select.vue?vue&type=script&lang=js\"\n\nimport \"./Select.vue?vue&type=style&index=0&id=c2001d6c&scoped=true&lang=css\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c2001d6c\"]])\n\nexport default __exports__\nimport QSelect from 'quasar/src/components/select/QSelect.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QSelect});\n","\n
\n $emit('onSelection', details)\"\n >\n \n
\n
{{ header }}
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n\n \n \n \n \n \n \n \n
\n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n\n\n\n\n\n","\n
\n {{ title }}: {{ count }}\n
\n\n\n\n\n","import { render } from \"./itemsCount.vue?vue&type=template&id=52795716&scoped=true\"\nimport script from \"./itemsCount.vue?vue&type=script&lang=js\"\nexport * from \"./itemsCount.vue?vue&type=script&lang=js\"\n\nimport \"./itemsCount.vue?vue&type=style&index=0&id=52795716&scoped=true&lang=css\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-52795716\"]])\n\nexport default __exports__","import { render } from \"./DataTable.vue?vue&type=template&id=526182ce\"\nimport script from \"./DataTable.vue?vue&type=script&lang=js\"\nexport * from \"./DataTable.vue?vue&type=script&lang=js\"\n\nimport \"./DataTable.vue?vue&type=style&index=0&id=526182ce&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QTable from 'quasar/src/components/table/QTable.js';\nimport QCheckbox from 'quasar/src/components/checkbox/QCheckbox.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QTable,QCheckbox});\n","import { h, defineComponent, computed } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nconst alignValues = [ 'top', 'middle', 'bottom' ]\n\nexport default defineComponent({\n name: 'QBadge',\n\n props: {\n color: String,\n textColor: String,\n\n floating: Boolean,\n transparent: Boolean,\n multiLine: Boolean,\n outline: Boolean,\n rounded: Boolean,\n\n label: [ Number, String ],\n\n align: {\n type: String,\n validator: v => alignValues.includes(v)\n }\n },\n\n setup (props, { slots }) {\n const style = computed(() => {\n return props.align !== void 0\n ? { verticalAlign: props.align }\n : null\n })\n\n const classes = computed(() => {\n const text = props.outline === true\n ? props.color || props.textColor\n : props.textColor\n\n return 'q-badge flex inline items-center no-wrap'\n + ` q-badge--${ props.multiLine === true ? 'multi' : 'single' }-line`\n + (props.outline === true\n ? ' q-badge--outline'\n : (props.color !== void 0 ? ` bg-${ props.color }` : '')\n )\n + (text !== void 0 ? ` text-${ text }` : '')\n + (props.floating === true ? ' q-badge--floating' : '')\n + (props.rounded === true ? ' q-badge--rounded' : '')\n + (props.transparent === true ? ' q-badge--transparent' : '')\n })\n\n return () => h('div', {\n class: classes.value,\n style: style.value,\n role: 'alert',\n 'aria-label': props.label\n }, props.label !== void 0 ? props.label : hSlot(slots.default))\n }\n})\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","import { h, defineComponent, computed } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\n name: 'QToolbar',\n\n props: {\n inset: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-toolbar row no-wrap items-center'\n + (props.inset === true ? ' q-toolbar--inset' : '')\n )\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./badges.vue?vue&type=style&index=0&id=49543828&scoped=true&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./borrow.vue?vue&type=style&index=0&id=8aa21932&lang=scss&scoped=true\"","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./DataTable.vue?vue&type=style&index=0&id=526182ce&lang=scss\"","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","\n
\n \n \n
\n\n\n\n\n\n","import { render } from \"./TableSearch.vue?vue&type=template&id=0b4d885c\"\nimport script from \"./TableSearch.vue?vue&type=script&lang=js\"\nexport * from \"./TableSearch.vue?vue&type=script&lang=js\"\n\nimport \"./TableSearch.vue?vue&type=style&index=0&id=0b4d885c&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QIcon});\n","// @ts-check\nconst currency = \"NGN\";\n\n/**\n * @param {number | string} number\n * @param {{showCurrency?: Boolean, toBasicUnit?: Boolean}} options\n * - toBasicUnit used to convert from fractional (monetary) unit to basic (monetary) unit e.g kobo to naira\n * @returns {string}\n */\nexport const formatMoney = (number = 0, options = {}) => {\n const { showCurrency = options.showCurrency ? options.showCurrency : true, toBasicUnit = true } = options;\n /**\n * @type {string | number}\n */\n let figure = toBasicUnit ? +number / 100 : +number;\n\n figure = new Intl.NumberFormat(\"en-NG\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n ...(showCurrency\n ? {\n style: \"currency\",\n currency,\n currencyDisplay: \"code\",\n }\n : {}),\n }).format(figure);\n\n return figure;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","module.exports = __webpack_public_path__ + \"img/white-plus.7fa11735.svg\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./badge.vue?vue&type=style&index=0&id=21c0ebdc&lang=scss&scoped=true\"","(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 \n
\n
\n \n
\n
\n {{ title }}\n
\n
\n \n
\n
\n
\n \n
\n \n\n\n\n\n\n","import { render } from \"./status.vue?vue&type=template&id=a75b81f8&scoped=true\"\nimport script from \"./status.vue?vue&type=script&lang=js\"\nexport * from \"./status.vue?vue&type=script&lang=js\"\n\nimport \"./status.vue?vue&type=style&index=0&id=a75b81f8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a75b81f8\"]])\n\nexport default __exports__","import { h, defineComponent, computed, inject, getCurrentInstance } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport { pageContainerKey, layoutKey } from '../../utils/private/symbols.js'\n\nexport default defineComponent({\n name: 'QPage',\n\n props: {\n padding: Boolean,\n styleFn: Function\n },\n\n setup (props, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey)\n inject(pageContainerKey, () => {\n console.error('QPage needs to be child of QPageContainer')\n })\n\n const style = computed(() => {\n const offset\n = ($layout.header.space === true ? $layout.header.size : 0)\n + ($layout.footer.space === true ? $layout.footer.size : 0)\n\n if (typeof props.styleFn === 'function') {\n const height = $layout.isContainer.value === true\n ? $layout.containerHeight.value\n : $q.screen.height\n\n return props.styleFn(offset, height)\n }\n\n return {\n minHeight: $layout.isContainer.value === true\n ? ($layout.containerHeight.value - offset) + 'px'\n : (\n $q.screen.height === 0\n ? (offset !== 0 ? `calc(100vh - ${ offset }px)` : '100vh')\n : ($q.screen.height - offset) + 'px'\n )\n }\n })\n\n const classes = computed(() =>\n `q-page ${ props.padding === true ? ' q-layout-padding' : '' }`\n )\n\n return () => h('main', {\n class: classes.value,\n style: style.value\n }, hSlot(slots.default))\n }\n})\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","import date from 'quasar/src/utils/date.js';;\n/**\n * @param {Array} xs\n * @param {number | string} key\n * @returns any\n */\nexport const groupBy = function (xs, key) {\n return xs.reduce(function (rv, x) {\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n};\n\n/**\n * @param {String} str\n * @returns String\n */\nexport const snakeCaseToTitle = function (str) {\n return str\n .replace(\"_\", \" \")\n .split(\" \")\n .map((word) => word[0].toUpperCase() + word.slice(1).toLowerCase())\n .join(\" \");\n};\n\nexport const purposeCase = (value) => {\n switch (value) {\n case \"bank_transfer\":\n return \"Bank_transfer_outward\";\n case \"bill_payment\":\n return \"Bill_payment\";\n case \"card_funding\":\n return \"Card_funding\";\n case \"commission_feecase\":\n return \"Commission_fee\";\n case \"delivery_fee\":\n return \"Delivery_fee\";\n case \"item_purchase\":\n return \"Item_purchase\";\n case \"Lien_Credit\":\n return \"Lien_credit\";\n case \"payment_link\":\n return \"Payment_link\";\n case \"pos_funding\":\n return \"POS_terminal\";\n case \"product_sale\":\n return \"Product_sale\";\n case \"qr_code\":\n return \"QR_payment\";\n case \"reserved_bank_account_funding\":\n return \"Bank_transfer_inward\";\n case \"reversal\":\n return \"Reversal\";\n case \"stamp_duty_fee\":\n return \"Stamp_duty\";\n case \"transaction_fee\":\n return \"Transaction_fee\";\n case \"transaction_fee_bank_transfer\":\n return \"Transaction_fee_bank_transfer\";\n case \"transaction_fee_checkout\":\n return \"Transaction_fee_checkout\";\n case \"transaction_fee_payment_link\":\n return \"Transaction_fee_payment_link\";\n case \"transaction_fee_pos_funding\":\n return \"Transaction_fee_POS_terminal\";\n case \"transaction_fee_qr_code\":\n return \"Transaction_fee_QR_payment\";\n case \"transaction_fee_reserved_account\":\n return \"Transaction_fee_bank_transfer_inward\";\n case \"wallet_transfer\":\n return \"Wallet_transfer\";\n case \"Cash_offline\":\n return \"Cash_offline\";\n\n default:\n return value.replace(\"_\", \" \");\n }\n};\n\n/**\n *\n * @param {string} string\n * @returns string\n */\nexport const capitalizeFirstLetter = (string) => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n\n/**\n *\n * @param {*} _date\n * @returns string\n */\nexport const formatDate = (_date, format = \"MMM DD, YYYY hh:mm A\") => {\n return date.formatDate(_date, format);\n};\n\n/**\n *\n * @param {string} string\n * @returns string\n */\nexport const createHash = async (string) => {\n const utf8 = new TextEncoder().encode(string);\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", utf8);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray\n .map((bytes) => bytes.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return hashHex;\n};\n\n/**\n * @param {Array} items\n * @returns string || Number\n */\nexport const subtotal = (items) => {\n let total = 0;\n items.forEach((item) => {\n total += item.quantity * item.price;\n });\n\n return total;\n};\n\n/**\n * calculate discount\n * @param {Object} data\n * @return {Number}\n */\n\nexport const calculateDiscount = (data) => {\n const { discount_selected, discount, _subtotal } = data;\n let subtotal = _subtotal;\n return discount_selected === \"Fixed\"\n ? parseInt(discount)\n : parseInt(subtotal) * (parseInt(discount) / 100);\n};\n\n/**\n * @param {Object} details\n * @returns string || Number\n */\nexport const grandTotal = (details) => {\n const { shipping_fee, vat, discount, discount_selected, items } = details;\n let _subtotal = subtotal(items);\n let discountAmount = calculateDiscount({\n discount_selected: discount_selected,\n discount: discount,\n _subtotal: _subtotal,\n });\n return _subtotal + parseInt(shipping_fee) + parseInt(vat) - discountAmount;\n};\n\n/**\n * Truncate lenghty text.\n *\n * @param {string} text The text\n * @param {number} business_name The max length\n * @returns {string}\n */\nexport const truncateLengthyText = (text, maxLength) => {\n if (text?.length > maxLength) {\n return `${text?.substring(0, maxLength)}...`;\n } else return text;\n};\n","export default class Overdraft {\n /**\n * @constructor\n */\n constructor(api) {\n this.http = api;\n }\n\n createOverdraft(payload) {\n return this.http.post(\"/v1/business/overdrafts\", payload);\n }\n\n getOverdrafts(payload) {\n console.log(\"payload sent\", payload);\n return this.http.get(\n `/v1/business/overdrafts?page=${payload.page}&limit=${payload.limit}`\n );\n }\n\n filterOverdrafts(payload) {\n console.log(\"payload sent\", payload);\n return this.http.get(\n `/v1/business/overdrafts?range=${payload.range}&status=${payload.status}&from=${payload.from}&to=${payload.to}&page=${payload.page}&limit=${payload.limit}`\n );\n }\n\n getOverdraftsOverview() {\n return this.http.get(`/v1/business/overdrafts/overview`);\n }\n\n getOverdraftLevels() {\n return this.http.get(`/v1/business/overdrafts/levels`);\n }\n\n getSingleOverdraft(reference) {\n return this.http.get(`/v1/business/overdrafts/${reference}`);\n }\n\n repayOverdraft(reference) {\n return this.http.post(`/v1/business/overdrafts/${reference}/repay`);\n }\n\n getOverdraftTransaction(reference, payload) {\n return this.http.get(\n `/v1/business/overdrafts/${reference}/transactions?page=${payload.page}&limit=${payload.limit}`\n );\n }\n}\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./Select.vue?vue&type=style&index=0&id=c2001d6c&scoped=true&lang=css\"","import { h, defineComponent, computed } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\n name: 'QTr',\n\n props: {\n props: Object,\n noHover: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-tr'\n + (props.props === void 0 || props.props.header === true ? '' : ' ' + props.props.__trClass)\n + (props.noHover === true ? ' q-tr--no-hover' : '')\n )\n\n return () => h('tr', { class: classes.value }, hSlot(slots.default))\n }\n})\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./index.vue?vue&type=style&index=0&id=3f1341df&lang=scss&scoped=true\"","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","module.exports = __webpack_public_path__ + \"img/red-times.626df39e.svg\";","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./OverdraftOverview.vue?vue&type=style&index=0&id=248fccc4&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./EmptyPlaceholder.vue?vue&type=style&index=0&id=8dafecbe&lang=scss&scoped=true\"","\n \n
\n \n\n\n\n\n\n","import { render } from \"./confirm.vue?vue&type=template&id=6a8b5314&scoped=true\"\nimport script from \"./confirm.vue?vue&type=script&lang=js\"\nexport * from \"./confirm.vue?vue&type=script&lang=js\"\n\nimport \"./confirm.vue?vue&type=style&index=0&id=6a8b5314&lang=scss&scoped=true\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6a8b5314\"]])\n\nexport default __exports__","\n
\n \n
Flagged
\n
\n {{ status?.includes(\"-\") ? status.split(\"-\").join(\" \") : status }}\n
\n \n
\n\n\n\n\n\n","import { render } from \"./badges.vue?vue&type=template&id=49543828&scoped=true\"\nimport script from \"./badges.vue?vue&type=script&lang=js\"\nexport * from \"./badges.vue?vue&type=script&lang=js\"\n\nimport \"./badges.vue?vue&type=style&index=0&id=49543828&scoped=true&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49543828\"]])\n\nexport default __exports__\nimport QBadge from 'quasar/src/components/badge/QBadge.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBadge});\n","import { h, defineComponent, computed, getCurrentInstance } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\n name: 'QTd',\n\n props: {\n props: Object,\n autoWidth: Boolean,\n noHover: Boolean\n },\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const classes = computed(() =>\n 'q-td' + (props.autoWidth === true ? ' q-table--col-auto-width' : '')\n + (props.noHover === true ? ' q-td--no-hover' : '')\n + ' '\n )\n\n return () => {\n if (props.props === void 0) {\n return h('td', { class: classes.value }, hSlot(slots.default))\n }\n\n const name = vm.vnode.key\n const col = (\n (props.props.colsMap !== void 0 ? props.props.colsMap[ name ] : null)\n || props.props.col\n )\n\n if (col === void 0) { return }\n\n const { row } = props.props\n\n return h('td', {\n class: classes.value + col.__tdClass(row),\n style: col.__tdStyle(row)\n }, hSlot(slots.default))\n }\n }\n})\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./index.vue?vue&type=style&index=0&id=4982e452&lang=scss&scoped=true\"","module.exports = __webpack_public_path__ + \"img/overdraft-repay-info.804697fd.svg\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./status.vue?vue&type=style&index=0&id=a75b81f8&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./TableSearch.vue?vue&type=style&index=0&id=0b4d885c&lang=scss\"","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./confirm.vue?vue&type=style&index=0&id=6a8b5314&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./OverdraftTable.vue?vue&type=style&index=0&id=11ae973a&lang=scss&scoped=true\"","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","\n
\n \n
\n\n\n\n\n\n","\n \n
\n \n \n
\n \n \n Your business isn't eligible for an overdraft. You can review the\n eligibility criteria\n here\n for more information.\n \n \n \n\n\n\n\n\n","\n
\n You've successfully borrowed\n {{ formatMoney(successAmount) }}\n from your overdraft, and the borrowed amount has been successfully\n added to your main account balance.\n
\n \n \n\n \n \n \n \n \n \n
\n \n
\n Are you sure you want to repay your overdraft of\n {{\n formatMoney(\n overviewData?.pendingOverdraftAmount +\n overviewData?.pendingOverdraftInterestAmount\n )\n }}\n ? Please ensure you have an amount greater than the borrowed amount\n in your wallet. This action cannot be undone\n
\n
\n \n \n\n \n \n \n \n \n \n
Your Overdraft repayment was successful.
\n \n \n\n \n \n \n \n \n \n
\n Your overdraft repayment failed due to insufficient funds.\n
\n \n \n\n \n \n \n \n \n \n
\n You've achieved\n Level {{ overviewData?.level }} in the\n Overdraft level. As your level increases, so does your overdraft\n limit, giving you even more financial flexibility and control.\n
\n \n \n\n \n \n \n \n \n \n
\n Your transaction was successful, and as a token, you've earned\n yourself 5 overdraft points. These points contribute to your progress\n in the Overdraft levels\n
\n \n \n\n\n\n\n\n","import { render } from \"./filter.vue?vue&type=template&id=c0d76a2a\"\nimport script from \"./filter.vue?vue&type=script&lang=js\"\nexport * from \"./filter.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QForm from 'quasar/src/components/form/QForm.js';\nimport qInstall from \"../../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QForm});\n","import { render } from \"./OverdraftTable.vue?vue&type=template&id=11ae973a&scoped=true\"\nimport script from \"./OverdraftTable.vue?vue&type=script&lang=js\"\nexport * from \"./OverdraftTable.vue?vue&type=script&lang=js\"\n\nimport \"./OverdraftTable.vue?vue&type=style&index=0&id=11ae973a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-11ae973a\"]])\n\nexport default __exports__\nimport QTr from 'quasar/src/components/table/QTr.js';\nimport QTd from 'quasar/src/components/table/QTd.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QTr,QTd,QBtn});\n","\n