{"version":3,"sources":["../../../../dev/j/lib/lottie/bodymovin-5.6.8.js"],"names":["navigator","root","factory","define","amd","module","exports","lottie","bodymovin","window","ProjectInterface","roundValues","flag","bm_rnd","Math","round","val","styleDiv","element","style","position","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","type","currentTime","totalTime","frameMultiplier","this","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","HSVtoRGB","h","s","v","r","g","b","i","f","p","q","t","floor","RGBtoHSV","max","min","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","BaseEvent","createSizedArray","len","Array","apply","length","createNS","document","createElementNS","svgNS","createTag","createElement","DynamicPropertyContainer","extendPrototype","sources","destination","sourcePrototype","prototype","attr","hasOwnProperty","getDescriptor","object","prop","Object","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","bezFunction","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","pointOnLine3D","z1","z2","z3","diffDist","dist1","sqrt","pow","dist2","dist3","getSegmentsLength","shapeData","segmentsLength","segments_length_pool","newElement","closed","c","pathV","pathO","o","pathI","_length","lengths","totalLength","getBezierLength","addedLength","BezierData","segmentLength","points","PointData","partial","point","partialLength","getDistancePerc","perc","bezierData","percents","initPos","bm_floor","lengthPos","lPerc","dir","getPointInSegment","pt1","pt2","pt3","pt4","percent","t1","u1","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","bezier_segment_points","k","ptCoord","ptDistance","curveSegments","defaultCurveSegments","lastPoint","lengthData","bezier_length_pool","bm_pow","bm_sqrt","buildBezierData","storedData","bezierName","replace","createTypedArray","dataFunctionManager","completeLayers","layers","comps","fontManager","layerData","j","jLen","kLen","completed","tt","td","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","e","ty","findCompLayers","refId","completeShapes","shapes","completeText","id","__used","JSON","parse","stringify","arr","ks","it","path","checkVersion","minimum","animVersionString","animVersion","split","completeData","animationData","__complete","checkColors","checkText","checkChars","checkShapes","assets","data","a","singleShape","updateTextLayer","textLayer","documentData","iterateLayers","minimumVersion","chars","pathData","paths","__converted","iterateShapes","cl","moduleOb","ShapePath","_maxLength","ShapeModifier","TrimModifier","RoundCornersModifier","RepeaterModifier","ShapeCollection","DashProperty","elem","renderer","container","frameId","dataProps","dashStr","dashArray","dashoffset","initDynamicPropertyContainer","PropertyFactory","getProp","n","getValue","_isAnimated","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","TextAnimatorProperty","textData","renderType","_isFirstFrame","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","animatorProps","defaultData","propType","textAnimator_animatables","degToRads","rx","ry","sk","sa","sw","sc","fc","fh","fs","fb","TextSelectorProp","getTextSelectorProp","LetterProps","m","_mdf","TextProperty","initialDefaultFrame","pv","kf","comp","keysIndex","canResize","minimumFontSize","effectsSequence","currentData","ascent","boxWidth","defaultBoxWidth","fStyle","fWeight","justifyOffset","l","lh","lineWidths","ls","of","tr","sz","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","BaseRenderer","SVGRenderer","animationItem","config","renderedFrame","svgElement","ariaLabel","title","titleElement","titleId","createElementID","setAttribute","textContent","appendChild","description","descElement","descId","defs","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","className","focusable","filterSize","width","height","x","y","globalData","frameNum","elements","pendingElements","destroyed","rendererType","MaskElement","viewData","solidPath","rect","expansor","feMorph","properties","count","currentMasks","layerId","maskType","maskRef","mode","inv","w","push","filterID","expan","lastPath","lastOperator","filterId","lastRadius","mask","locationHref","createLayerSolidPath","op","ShapePropertyFactory","getShapeProp","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","pos","SVGStyleData","level","lvl","hd","pElem","msElem","SVGShapeData","transformers","shape","caches","styles","lStr","sh","mProps","dynamicProperties","SVGTransformData","transform","SVGStrokeStyleData","styleOb","iterateDynamicProperties","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","ShapeTransformManager","sequences","sequenceList","transform_key_count","BaseElement","NullElement","initFrame","initBaseData","initTransform","initHierarchy","SVGBaseElement","IShapeElement","ITextElement","ICompElement","IImageElement","assetData","getAssetData","initElement","sourceRect","ISolidElement","SVGCompElement","supports3d","tm","frameRate","_placeholder","SVGTextElement","textSpans","SVGShapeElement","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filter","filterManager","feColorMatrix","matrixFilter","effectElements","feMerge","feMergeNode","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feComposite","originalNodeAdded","SVGMatte3Effect","filterElem","matteElement","transformedElement","baseElement","SVGEffects","ef","filId","fil","filtersFactory","createFilter","filters","effectsManager","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","effectItem","GroupEffect","init","setLocationHref","href","searchAnimations","standalone","animationManager","setSubframeRendering","subframeEnabled","loadAnimation","params","setQuality","value","isNaN","inBrowser","installPlugin","plugin","expressionsPlugin","getFactory","name","Matrix","checkReady","readyState","clearInterval","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","isSafari","test","userAgent","cachedColors","bm_rounder","bm_abs","abs","bm_max","bm_min","blitter","BMMath","propertyNames","random","absArr","PI","roundCorner","_count","rgbToHex","hex","colorMap","toString","triggerEvent","eventName","args","_cbs","addEventListener","callback","removeEventListener","bind","splice","createRegularArray","Float32Array","Int16Array","Uint8ClampedArray","addDynamicProperty","indexOf","getBlendMode","blendModeEnums","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","reset","props","rotate","angle","mCos","_cos","mSin","_sin","_t","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","_tan","skewFromAxis","scale","setTransform","translate","tx","tz","a2","b2","c2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_p","_identityCalculated","a1","b1","c1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","p1","isIdentity","_identity","equals","matr","clone","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p0","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","_rnd","roundMatrixProperty","to2dCSS","cos","sin","tan","pool","math","seedrandom","seed","options","key","entropy","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","chunks","startdenom","significance","overflow","int32","quick","S","pass","is_math_call","state","copy","rngname","global","keylen","me","slice","obj","depth","result","typ","smear","stringseed","charCodeAt","nodecrypto","randomBytes","out","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","Date","screen","String","fromCharCode","BezierFactory","getBezierEasing","nm","str","beziers","bezEasing","BezierEasing","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","newtonRaphsonIterate","aGuessT","NEWTON_ITERATIONS","currentSlope","_mSampleValues","float32ArraySupported","kSplineTableSize","_precomputed","get","ob","kSampleStepSize","mY1","mY2","_precompute","_getTForX","_calcSampleValues","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","currTime","getTime","timeToCall","setTimeout","clearTimeout","bez","dataManager","FontManager","setUpNode","font","family","parentNode","fontFamily","node","innerHTML","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","body","offsetWidth","parent","checkLoadedFonts","fonts","loadedCount","loaded","fOrigin","origin","monoCase","sansCase","removeChild","now","initTime","maxWaitingTime","isLoaded","createHelper","def","fontData","tHelper","fFamily","fClass","getContext","addFonts","list","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","fPath","querySelectorAll","rel","src","helper","cache","addChars","found","ch","getCharData","char","console","warn","emptyChar","measureText","fontName","size","getFontByName","index","doubleSize","getComputedTextLength","singleSize","fName","getCombinedCharacterCodes","combinedCharacters","concat","Font","typekitLoaded","interpolateValue","caching","newValue","offsetTime","keyData","nextKeyData","iterationIndex","lastIndex","keyframes","fnc","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","quatStart","createQuaternion","quatEnd","time","quaternionToEuler","slerp","constructor","omega","cosom","sinom","scale0","scale1","az","aw","bx","by","bz","bw","acos","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c3","s1","s2","s3","getValueAtCurrentTime","endTime","_caching","renderResult","setVValue","multipliedValue","mult","math_abs","processEffectsSequence","lock","finalValue","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","TransformPropertyFactory","applyToMatrix","mat","rz","or","px","py","pz","processKeys","forceRender","_isDirty","precalculateMatrix","pre","appliedTransformations","autoOriented","v1","v2","getValueAtTime","defaultVector","autoOrient","_addDynamicProperty","TransformProperty","getTransformProperty","setPathData","setLength","point_pool","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shapesEqual","shape1","shape2","shape_pool","releaseShapes","addShape","ShapeProperty","shapeCollection_pool","newShapeCollection","KeyframedShapeProperty","RectShapeProperty","EllShapeProperty","StarShapeProperty","getConstructorFunction","getKeyframedConstructorFunction","convertEllToPath","cPoint","s0","_cw","_v","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","convertRectToPath","v0","ShapeModifiers","registerModifier","modifiers","getModifier","initModifierProperties","addShapeToModifier","setAsAnimated","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segments","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","release","processShapes","_s","shapePaths","totalShapeLength","edges","newShapesData","addShapes","lastShapeInCollection","lastShape","pop","addPaths","newPaths","addSegment","shapePath","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","segment","rd","processPath","cloned_path","currentV","currentI","currentO","closerV","distance","newPosPerc","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","cont","unshift","resetElements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","copies","ceil","group","ix","reloadShapes","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","comparePoints","buildShapeString","pathNodes","_o","_i","shapeString","ImagePreloader","imageLoaded","loadedAssets","totalImages","imagesLoadedCb","getAssetsPath","assetsPath","original_path","imagePath","u","createImageData","img","crossOrigin","_imageLoaded","proxyImage","loadAssets","cb","images","_createImageData","setPath","setAssetsPath","getImage","destroy","canvas","ctx","fillStyle","fillRect","featureSupport","createAlphaToLuminanceFilter","assetLoader","formatResponse","xhr","response","responseText","loadAsset","errorCallback","XMLHttpRequest","open","responseType","err","send","onreadystatechange","status","load","searchProperties","maskManager","getMaskProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","animators","matrixHelper","mHelper","renderedLettersCount","letters","tLength","pi","animatorSelector","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","currentLine","lineLength","letterM","letterP","defaultPropsArray","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","isNewLine","getMult","anIndexes","totalChars","line","extra","an","animatorOffset","add","rot","atan","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","charAt","substr","newLineFlag","charData","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","toLowerCase","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","undefined","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","_currentTextLength","finalS","finalE","xe","ne","textProperty","easer","tot","newCharsFlag","divisor","pool_factory","initialLength","_create","_release","_clone","pooling","double","create","cloned","shapeCollection","checkLayers","num","ip","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","Error","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","imageLoader","imagePreloader","fr","compSize","configAnimation","wrapper","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","insertBefore","hide","show","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","_isParent","prepareProperties","isVisible","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","component","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","initRendererElement","createContainerElements","createRenderableComponents","createContent","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","stop","gf","cst","opacityId","opFill","ms","ost","SVGElementsRenderer","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","styleData","itemData","pathStringTransformed","redraw","iterations","lLen","_matrixHelper","_identityMatrix","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","addTransformSequence","sequence","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","content","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","getType","_sizeChanged","gg","layerElementParent","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","lcEnum","ljEnum","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","elems","getElements","destroyElements","assetPath","pr","setAttributeNS","textContainer","buildTextContents","textArray","textContents","currentTextContent","usesGlyphs","tSpan","cachedSpansLength","tElement","justify","textBox","getBBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","gradientConstructor","lc","lj","ml","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","shapeProperty","fn","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","colorBlack","colorWhite","opacity","sigma","dimensions","sigmaX","sigmaY","edgeMode","initialize","groupPath","elemChildren","children","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","call","outputDelta","inputDelta","join","col","_svgMatteSymbols","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","removeElement","ev","animItem","registeredAnimations","animation","isPaused","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","getRegisteredAnimations","animations","addPlayingCount","playingAnimationsNum","activate","setParams","setSpeed","setDirection","play","resume","nowTime","elapsedTime","advanceTime","_isFrozen","_stopped","first","pause","goToAndStop","isFrame","togglePause","animElements","getElementsByClassName","getElementsByTagName","div","resize","freeze","unfreeze","currentRawFrame","frameMult","playSpeed","playDirection","playCount","autoplay","loop","animationID","timeCompleted","segmentPos","_idle","_completedLoop","context","animType","CanvasRenderer","rendererSettings","HybridRenderer","parseInt","autoloadSegments","initialSegment","lastIndexOf","fileName","trigger","wrapperAttributes","attributes","getNamedItem","prerender","loadNextSegment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","error","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","frameModifier","goToAndPlay","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","end","pendingFrame","playSegments","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onComplete","onSegmentStart","onDestroy","getPath","getDuration","onError","Expressions","pushExpression","stackCount","popExpression","releaseInstances","registerExpressionProperty","expression","registers","ExpressionManager","$bm_isInstanceOfArray","isNumerable","tOfV","Number","$bm_neg","tOfA","lenA","retArr","sum","tOfB","lenB","sub","mul","mod","clamp","mm","radiansToDegrees","degreesToRadians","arr1","arr2","helperLengthArray","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","loopInDuration","duration","loopIn","loopOutDuration","loopOut","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeOutBez","easeIn","easeInBez","ease","easeInOutBez","nearestKey","framesToTime","frames","fps","timeToFrames","seedRandom","randSeed","substring","posterizeTime","framesPerSecond","valueAtTime","executeExpression","_value","_needsRandom","frameExpressionId","textIndex","textTotal","selectorValue","thisLayer","thisComp","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","$bm_transform","anchorPoint","elemType","effect","hasParent","needsVelocity","velocity","velocityAtTime","expression_function","scoped_bm_rt","thisProperty","defineProperty","frameDuration","displayStartTime","inPoint","outPoint","loop_in","loop_out","smooth","rotation","__expression_functions","xf","eval","numKeys","active","wiggle","freq","amp","addedAmps","periods","getVelocityAtTime","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","radians_to_degrees","degrees_to_radians","expressionHelpers","searchExpressions","_cachingAtTime","getSpeedAtTime","speed","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","lastKeyFrame","cycleDuration","firstKeyFrame","ret","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","endFrame","sampleFrequency","sampleValue","getTransformValueAtTime","getTransformStaticValueAtTime","getShapeValueAtTime","shapeValue","ShapeExpressions","propertyGetProp","propertyIndex","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","propertyGetShapeProp","trims","calculateExpression","getExpressionValue","isKeyframed","hasExpressions","iterateElements","view","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","pathInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","contentsInterfaceFactory","interfaces","interfaceFunction","_name","mn","numProperties","cix","transformInterface","transformInterfaceFactory","np","defineProperties","ExpressionPropertyInterface","_propertyGroup","_dashPropertyGroup","dashOb","strokeWidth","dash","start","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","radius","_interfaceFunction","_thisLayerFunction","_sourceText","stringValue","_prevValue","toWorldMat","transformMat","sampleImage","_registerMaskInterface","MaskManagerInterface","_registerEffectsInterface","TransformExpressionInterface","anchorPointDescriptor","anchor_point","startTime","source","pixelAspect","numLayers","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_transformFactory","compositions","_thisProjectFunction","effectsData","createGroupInterface","groupInterface","createValueInterface","enabled","en","expressionProperty","MaskInterface","_mask","_data","_masksInterfaces","completeProperty","expressionValue","valueProp","assign","speedAtTime","UnidimensionalPropertyInterface","defaultUnidimensionalValue","MultidimensionalPropertyInterface","defaultMultidimensionalValue","arrValue","defaultGetter","TextExpressionSelectorProp","getValueProxy","total","propertyGetTextProp","eff","__getFactory","version","scripts","myScript","setInterval"],"mappings":"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","file":"bodymovin-5.6.8.js","sourcesContent":["(typeof navigator !== \"undefined\") && (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(function() {\n return factory(root);\n });\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(root);\n } else {\n root.lottie = factory(root);\n root.bodymovin = root.lottie;\n }\n}((window || {}), function(window) {\n\t\"use strict\";\nvar svgNS = \"http://www.w3.org/2000/svg\";\n\nvar locationHref = '';\n\nvar initialDefaultFrame = -999999;\n\nvar subframeEnabled = true;\nvar expressionsPlugin;\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar cachedColors = {};\nvar bm_rounder = Math.round;\nvar bm_rnd;\nvar bm_pow = Math.pow;\nvar bm_sqrt = Math.sqrt;\nvar bm_abs = Math.abs;\nvar bm_floor = Math.floor;\nvar bm_max = Math.max;\nvar bm_min = Math.min;\nvar blitter = 10;\n\nvar BMMath = {};\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, len = propertyNames.length;\n for(i=0;i 1) {\n hsv[1] = 1;\n }\n else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\n}\n\nfunction addBrightnessToRGB(color,offset){\n var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);\n hsv[2] += offset;\n if (hsv[2] > 1) {\n hsv[2] = 1;\n }\n else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\n}\n\nfunction addHueToRGB(color,offset) {\n var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);\n hsv[0] += offset/360;\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n }\n else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\n}\n\nvar rgbToHex = (function(){\n var colorMap = [];\n var i;\n var hex;\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 if(g<0){\n g = 0;\n }\n if(b<0){\n b = 0;\n }\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n}());\nfunction BaseEvent(){}\nBaseEvent.prototype = {\n\ttriggerEvent: function (eventName, args) {\n\t if (this._cbs[eventName]) {\n\t var len = this._cbs[eventName].length;\n\t for (var i = 0; i < len; i++){\n\t this._cbs[eventName][i](args);\n\t }\n\t }\n\t},\n\taddEventListener: function (eventName, callback) {\n\t if (!this._cbs[eventName]){\n\t this._cbs[eventName] = [];\n\t }\n\t this._cbs[eventName].push(callback);\n\n\t\treturn function() {\n\t\t\tthis.removeEventListener(eventName, callback);\n\t\t}.bind(this);\n\t},\n\tremoveEventListener: function (eventName,callback){\n\t if (!callback){\n\t this._cbs[eventName] = null;\n\t }else if(this._cbs[eventName]){\n\t var i = 0, len = this._cbs[eventName].length;\n\t while(i 0) || (val > -0.000001 && val < 0)) {\n return _rnd(val * v) / v;\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 /*if(this.isIdentity()) {\n return '';\n }*/\n var props = this.props;\n var _a = roundMatrixProperty(props[0]);\n var _b = roundMatrixProperty(props[1]);\n var _c = roundMatrixProperty(props[4]);\n var _d = roundMatrixProperty(props[5]);\n var _e = roundMatrixProperty(props[12]);\n var _f = roundMatrixProperty(props[13]);\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.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\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n}());\n\n/*\n Copyright 2014 David Bau.\n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n */\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n var global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // 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//\n// seedrandom()\n// This is the seedrandom function described above.\n//\n function seedrandom(seed, options, callback) {\n var key = [];\n options = (options === true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed === null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // 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 var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; };\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n 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) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); };\n }\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 if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n }\n math['seed' + rngname] = seedrandom;\n\n//\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 function ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\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 }\n\n // The \"g\" method returns the next (count) outputs as one number.\n me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\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 me.i = i; me.j = j;\n return r;\n // 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\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\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\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\n function flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n }\n\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 function mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n }\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\n function autoseed() {\n try {\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\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\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n }\n\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 mixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n BMMath // math: package containing random, pow, and seedrandom\n);\nvar BezierFactory = (function(){\n /**\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n *\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\n * Usage:\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\n *\n */\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 if(beziers[str]){\n return beziers[str];\n }\n var bezEasing = new BezierEasing([a,b,c,d]);\n beziers[str] = bezEasing;\n return bezEasing;\n }\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\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\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n var float32ArraySupported = typeof Float32Array === \"function\";\n\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\n function C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier (aT, aA1, aA2) {\n return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;\n }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\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, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\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 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 return aGuessT;\n }\n\n /**\n * points is an array of [ mX1, mY1, mX2, mY2 ]\n */\n function BezierEasing (points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n\n get: function (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 if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n\n // Private part\n\n _precompute: function () {\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 if (mX1 !== mY1 || mX2 !== mY2)\n this._calcSampleValues();\n },\n\n _calcSampleValues: function () {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\n */\n _getTForX: function (aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n\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 --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample+1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n };\n\n return ob;\n\n}());\n(function () {\n var lastTime = 0;\n var vendors = ['ms', 'moz', 'webkit', 'o'];\n for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\n }\n if(!window.requestAnimationFrame)\n window.requestAnimationFrame = function (callback, element) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = setTimeout(function () {\n callback(currTime + timeToCall);\n },\n timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n if(!window.cancelAnimationFrame)\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n}());\n\nfunction extendPrototype(sources,destination){\n var i, len = sources.length, sourcePrototype;\n for (i = 0;i < len;i += 1) {\n sourcePrototype = sources[i].prototype;\n for (var attr in sourcePrototype) {\n if (sourcePrototype.hasOwnProperty(attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n}\n\nfunction getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n}\n\nfunction createProxyFunction(prototype) {\n\tfunction ProxyFunction(){}\n\tProxyFunction.prototype = prototype;\n\treturn ProxyFunction;\n}\nfunction bezFunction(){\n\n var easingFunctions = [];\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 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 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 return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = (function(){\n\n return function(pt1,pt2,pt3,pt4){\n var curveSegments = defaultCurveSegments;\n var k;\n var i, len;\n var ptCoord,perc,addedLength = 0;\n var ptDistance;\n var point = [],lastPoint = [];\n var lengthData = bezier_length_pool.newElement();\n len = pt3.length;\n for(k=0;k lengthPos ? -1 : 1;\n var flag = true;\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 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 flag = false;\n }\n }\n return percents[initPos] + (percents[initPos+1] - percents[initPos])*lPerc;\n }\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent,bezierData);\n var u0 = 1;\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 function getSegmentArray() {\n\n }\n\n var bezier_segment_points = createTypedArray('float32', 8);\n\n function getNewSegment(pt1,pt2,pt3,pt4,startPerc,endPerc, bezierData){\n\n startPerc = startPerc < 0 ? 0 : startPerc > 1 ? 1 : startPerc;\n var t0 = getDistancePerc(startPerc,bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc,bezierData);\n var i, 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;\n var t0t0u0_3 = t0*t0*u0*3;\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;\n var t0t0u1_3 = t0*t0*u1 + u0*t0*t1 + t0*u0*t1;\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;\n var t0t1u1_3 = t0*t1*u1 + u0*t1*t1 + t0*u1*t1;\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;\n var t1t1u1_3 = t1*t1*u1 + u1*t1*t1 + t1*u1*t1;\n var t1t1t1 = t1*t1*t1;\n for(i=0;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 for(j=0;janimVersion[0]){\n return true;\n } else if(animVersion[0] > minimum[0]){\n return false;\n }\n if(minimum[1]>animVersion[1]){\n return true;\n } else if(animVersion[1] > minimum[1]){\n return false;\n }\n if(minimum[2]>animVersion[2]){\n return true;\n } else if(animVersion[2] > minimum[2]){\n return false;\n }\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 {\n s:documentData,\n t:0\n }\n ]\n };\n }\n\n function iterateLayers(layers){\n var i, len = layers.length;\n for(i=0;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 for(j=0;j 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.innerHTML = \"@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++) {\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++) {\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 fontArr[i].helper = createHelper(defs,fontArr[i]);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\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 if(!this.chars){\n this.chars = [];\n }\n var i, len = chars.length;\n var j, jLen = this.chars.length, found;\n for(i=0;i= nextKeyData.t - offsetTime){\n if(keyData.h){\n keyData = nextKeyData;\n }\n iterationIndex = 0;\n break;\n }\n if ((nextKeyData.t - offsetTime) > frameNum){\n iterationIndex = i;\n break;\n }\n if (i < len - 1){\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n var k, kLen, perc, jLen, j, fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n if (keyData.to) {\n if (!keyData.bezierData) {\n keyData.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n var bezierData = keyData.bezierData;\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n }\n // caching._lastKeyframeIndex = -1;\n } else {\n if (keyData.__fnct) {\n fnc = keyData.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyData.__fnct = fnc;\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength*perc;\n\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 while (flag) {\n addedLength += bezierData.points[j].partialLength;\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\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 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 break;\n }\n if (j < jLen - 1){\n j += 1;\n } else {\n flag = false;\n }\n }\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX, outY, inX, inY, keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\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 \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 (!keyData.__fnct) {\n keyData.__fnct = [];\n }\n if (!keyData.__fnct[i]) {\n outX = (typeof keyData.o.x[i] === 'undefined') ? keyData.o.x[0] : keyData.o.x[i];\n outY = (typeof keyData.o.y[i] === 'undefined') ? keyData.o.y[0] : keyData.o.y[i];\n inX = (typeof keyData.i.x[i] === 'undefined') ? keyData.i.x[0] : keyData.i.x[i];\n inY = (typeof keyData.i.y[i] === 'undefined') ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.__fnct[i] = fnc;\n } else {\n fnc = keyData.__fnct[i];\n }\n } else {\n if (!keyData.__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.__fnct = fnc;\n } else {\n fnc = keyData.__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 caching.lastIndex = iterationIndex;\n return newValue;\n }\n\n //based on @Toji's https://github.com/toji/gl-matrix/\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bx = b[0], by = b[1], bz = b[2], bw = b[3]\n\n var omega, cosom, sinom, scale0, scale1;\n\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\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 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\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\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 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 this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n if(this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n if(math_abs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0, len = this.v.length;\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n if (math_abs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\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 if(this.lock) {\n this.setVValue(this.pv);\n return;\n }\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var multipliedValue;\n var i, len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n for(i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\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, len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n var arr = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\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 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.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1};\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, len = data.k.length;\n var s, e,to,ti;\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 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 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 this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.keyframes = data.k;\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 for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n this._caching={lastFrame:initFrame,lastIndex:0,value:createTypedArray('float32', arrLen)};\n this.addEffect = addEffect;\n }\n\n function getProp(elem,data,type, mult, container) {\n var p;\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 case 1:\n p = new KeyframedMultidimensionalProperty(elem,data,mult, container);\n break;\n }\n }\n if(p.effectsSequence.length){\n container.addDynamicProperty(p);\n }\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n}());\nvar TransformPropertyFactory = (function() {\n\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 if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\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 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 function processKeys(forceRender){\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if(this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n this.v.cloneFromProps(this.pre.props);\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if(this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\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 if (this.autoOriented) {\n var v1,v2, frameRate = this.elem.globalData.frameRate;\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, py = this.py, frameRate;\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 v1 = v2 = defaultVector\n }\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\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 this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n if(!this.a.k) {\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 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 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 if (this.r) {\n if(!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n } else {\n return;\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 //\n //var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\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();\n //Precalculated matrix with non animated properties\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\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 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 || {k:[0,0,0]},1,0,this);\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 if(data.or.k[0].ti) {\n var i, len = data.or.k.length;\n for(i=0;i= this._maxLength) {\n\t\tthis.doubleArrayLength();\n\t}\n\tswitch(type){\n\t\tcase 'v':\n\t\t\tarr = this.v;\n\t\t\tbreak;\n\t\tcase 'i':\n\t\t\tarr = this.i;\n\t\t\tbreak;\n\t\tcase 'o':\n\t\t\tarr = this.o;\n\t\t\tbreak;\n\t}\n\tif(!arr[pos] || (arr[pos] && !replace)){\n\t\tarr[pos] = point_pool.newElement();\n\t}\n\tarr[pos][0] = x;\n\tarr[pos][1] = y;\n};\n\nShapePath.prototype.setTripleAt = function(vX,vY,oX,oY,iX,iY,pos, replace) {\n\tthis.setXYAt(vX,vY,'v',pos, replace);\n\tthis.setXYAt(oX,oY,'o',pos, replace);\n\tthis.setXYAt(iX,iY,'i',pos, replace);\n};\n\nShapePath.prototype.reverse = function() {\n\tvar newPath = new ShapePath();\n\tnewPath.setPathData(this.c, this._length);\n\tvar vertices = this.v, outPoints = this.o, inPoints = this.i;\n\tvar init = 0;\n\tif (this.c) {\n\t\tnewPath.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 var cnt = this._length - 1;\n var len = this._length;\n\n var i;\n for (i = init; i < len; i += 1) {\n \tnewPath.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 return newPath;\n};\nvar ShapePropertyFactory = (function(){\n\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS,keyPropE,isHold, j, k, jLen, kLen, perc, vertexValue;\n var kf = this.keyframes;\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){\n keyPropS = kf[kf.length - 1].s[0];\n }else{\n keyPropS = kf[kf.length - 2].e[0];\n }*/\n isHold = true;\n }else{\n var i = iterationIndex;\n var len = kf.length- 1,flag = true,keyData,nextKeyData;\n while(flag){\n keyData = kf[i];\n nextKeyData = kf[i+1];\n if((nextKeyData.t - this.offsetTime) > frameNum){\n break;\n }\n if(i < len - 1){\n i += 1;\n }else{\n flag = false;\n }\n }\n isHold = keyData.h === 1;\n iterationIndex = i;\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 if(keyData.__fnct){\n fnc = keyData.__fnct;\n }else{\n fnc = BezierFactory.getBezierEasing(keyData.o.x,keyData.o.y,keyData.i.x,keyData.i.y).get;\n keyData.__fnct = fnc;\n }\n perc = fnc((frameNum-(keyData.t-this.offsetTime))/((nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime)));\n }\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n keyPropS = keyData.s[0];\n }\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for(j=0;j 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 var i, len = shape1._length;\n for(i = 0; i < len; i += 1) {\n if(shape1.v[i][0] !== shape2.v[i][0] \n || shape1.v[i][1] !== shape2.v[i][1] \n || shape1.o[i][0] !== shape2.o[i][0] \n || shape1.o[i][1] !== shape2.o[i][1] \n || shape1.i[i][0] !== shape2.i[i][0] \n || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n return true;\n }\n\n function setVValue(newPath) {\n if(!shapesEqual(this.v, newPath)) {\n this.v = shape_pool.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 } else if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n this.lock = true;\n this._mdf = false;\n var finalValue = this.kf ? this.pv : this.data.ks ? this.data.ks.k : this.data.pt.k;\n var i, len = this.effectsSequence.length;\n for(i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\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 = shape_pool.clone(pathData);\n this.pv = shape_pool.clone(this.v);\n this.localShapeCollection = shapeCollection_pool.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.k = true;\n this.kf = true;\n var i, len = this.keyframes[0].s[0].i.length;\n var jLen = this.keyframes[0].s[0].i[0].length;\n this.v = shape_pool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shape_pool.clone(this.v);\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {lastFrame: initFrame, lastIndex: 0};\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\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\n var cPoint = roundCorner;\n\n function EllShapeProperty(elem,data) {\n /*this.v = {\n v: createSizedArray(4),\n i: createSizedArray(4),\n o: createSizedArray(4),\n c: true\n };*/\n this.v = shape_pool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollection_pool.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 if(this.dynamicProperties.length){\n this.k = true;\n }else{\n this.k = false;\n this.convertEllToPath();\n }\n };\n\n EllShapeProperty.prototype = {\n reset: resetShape,\n getValue: function (){\n if(this.elem.globalData.frameId === this.frameId){\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if(this._mdf){\n this.convertEllToPath();\n }\n },\n convertEllToPath: function() {\n var p0 = this.p.v[0], p1 = this.p.v[1], s0 = this.s.v[0]/2, s1 = this.s.v[1]/2;\n var _cw = this.d !== 3;\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\n extendPrototype([DynamicPropertyContainer], EllShapeProperty);\n\n return EllShapeProperty;\n }());\n\n var StarShapeProperty = (function() {\n\n function StarShapeProperty(elem,data) {\n this.v = shape_pool.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 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 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 = shapeCollection_pool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n if(this.dynamicProperties.length){\n this.k = true;\n }else{\n this.k = false;\n this.convertToPath();\n }\n };\n\n StarShapeProperty.prototype = {\n reset: resetShape,\n getValue: function() {\n if(this.elem.globalData.frameId === this.frameId){\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if(this._mdf){\n this.convertToPath();\n }\n },\n convertStarToPath: function() {\n var numPts = Math.floor(this.pt.v)*2;\n var angle = Math.PI*2/numPts;\n /*this.v.v.length = numPts;\n this.v.i.length = numPts;\n this.v.o.length = numPts;*/\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, rad,roundness,perimSegment, currentAng = -Math.PI/ 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n for(i=0;i= 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 var shapeSegments = [];\n var i, len = segments.length, segmentOb;\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n if (segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength) {\n \n } else {\n var shapeS, shapeE;\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n if(segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\n }\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n return shapeSegments;\n};\n\nTrimModifier.prototype.releasePathsData = function(pathsData) {\n var i, len = pathsData.length;\n for (i = 0; i < len; i += 1) {\n segments_length_pool.release(pathsData[i]);\n }\n pathsData.length = 0;\n return pathsData;\n};\n\nTrimModifier.prototype.processShapes = function(_isFirstFrame) {\n var s, e;\n if (this._mdf || _isFirstFrame) {\n var o = (this.o.v % 360) / 360;\n if (o < 0) {\n o += 1;\n }\n s = (this.s.v > 1 ? 1 : this.s.v < 0 ? 0 : this.s.v) + o;\n e = (this.e.v > 1 ? 1 : this.e.v < 0 ? 0 : this.e.v) + o;\n if (s === e) {\n\n }\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\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 var shapePaths;\n var i, len = this.shapes.length, j, jLen;\n var pathsData, pathData, totalShapeLength, 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 } else if (!((e === 1 && s === 0) || (e===0 && s === 1))){\n var segments = [], shapeData, localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\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 if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\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 shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n var shapeS = s, shapeE = e, addedLength = 0, edges;\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes();\n //if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\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 jLen = edges.length;\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\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 var newShapesData = this.addShapes(shapeData,segments[0]);\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 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 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\nTrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) {\n var i, len = newPaths.length;\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n};\n\nTrimModifier.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 if(newShape){\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n};\n\nTrimModifier.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 if(newShape){\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n};\n\nTrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i, len = shapeData.shape.paths._length, j, jLen;\n var addedLength = 0;\n var currentLengthData,segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n if (!shapePath) {\n shapePath = shape_pool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n shapes.push(shapePath);\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 for (j = 1; j < jLen; j +=1) {\n currentLengthData = lengths[j-1];\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);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\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);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\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 if (addedLength > shapeSegment.e) {\n break;\n }\n if (i < len - 1) {\n shapePath = shape_pool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n return shapes;\n};\n\n\nShapeModifiers.registerModifier('tm', TrimModifier);\nfunction RoundCornersModifier(){}\nextendPrototype([ShapeModifier],RoundCornersModifier);\nRoundCornersModifier.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\nRoundCornersModifier.prototype.processPath = function(path, round){\n var cloned_path = shape_pool.newElement();\n cloned_path.c = path.c;\n var i, len = path._length;\n var currentV,currentI,currentO,closerV, newV,newO,newI,distance,newPosPerc,index = 0;\n var vX,vY,oX,oY,iX,iY;\n for(i=0;i0){\n pos -= 1;\n //this._elements.unshift(arr.splice(pos,1)[0]);\n this._elements.unshift(arr[pos]);\n cont += 1;\n }\n if(this.dynamicProperties.length){\n this.k = true;\n }else{\n this.getValue(true);\n }\n};\n\nRepeaterModifier.prototype.resetElements = function(elements){\n var i, len = elements.length;\n for(i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n if(elements[i].ty === 'gr'){\n this.resetElements(elements[i].it);\n }\n }\n};\n\nRepeaterModifier.prototype.cloneElements = function(elements){\n var i, len = elements.length;\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n};\n\nRepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) {\n var i, len = elements.length;\n for(i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n if(elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n};\n\nRepeaterModifier.prototype.processShapes = function(_isFirstFrame) {\n var items, itemsTransform, i, dir, cont;\n if(this._mdf || _isFirstFrame){\n var copies = Math.ceil(this.c.v);\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({\"a\":{\"a\":0,\"ix\":1,\"k\":[0,0]},\"nm\":\"Transform\",\"o\":{\"a\":0,\"ix\":7,\"k\":100},\"p\":{\"a\":0,\"ix\":2,\"k\":[0,0]},\"r\":{\"a\":1,\"ix\":6,\"k\":[{s:0,e:0,t:0},{s:0,e:0,t:1}]},\"s\":{\"a\":0,\"ix\":3,\"k\":[100,100]},\"sa\":{\"a\":0,\"ix\":5,\"k\":0},\"sk\":{\"a\":0,\"ix\":4,\"k\":0},\"ty\":\"tr\"});\n \n this.arr.splice(0,0,group);\n this._groups.splice(0,0,group);\n this._currentCopies += 1;\n }\n this.elem.reloadShapes();\n }\n cont = 0;\n var renderFlag;\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 cont += 1;\n }\n \n this._currentCopies = copies;\n ////\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 k;\n var tMat = this.tr.v.props;\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(iterationroundOffset){\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n if(offsetModulo){\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, - offsetModulo, true);\n iteration -= offsetModulo;\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, jLen;\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.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\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 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 0.01){\n return false;\n }\n i += 1;\n }\n return true;\n};\n\nGradientProperty.prototype.checkCollapsable = function() {\n if (this.o.length/2 !== this.c.length/4) {\n return false;\n }\n if (this.data.k.k[0].s) {\n var i = 0, len = this.data.k.k.length;\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n i += 1;\n }\n } else if(!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n return true;\n};\n\nGradientProperty.prototype.getValue = function(forceRender){\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n if(this.prop._mdf || forceRender){\n var i, len = this.data.p*4;\n var mult, val;\n for(i=0;i= 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/200, -(alignment[1] * yOff / 100));\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\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 if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\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);\n\n // Grouping alignment\n matrixHelper.translate(-alignment[0]*letters[i].an/200, -alignment[1]*yOff/100, 0);\n }\n\n lineLength += letters[i].l/2;\n for(j=0;j 1;\n if(this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n return this.kf;\n}\n\nTextProperty.prototype.addEffect = function(effectFunction) {\n\tthis.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n};\n\nTextProperty.prototype.getValue = function(_finalValue) {\n if((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n if(this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n this.lock = true;\n this._mdf = false;\n var multipliedValue;\n var i, len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\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 if(currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n this.pv = this.v = this.currentData;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n}\n\nTextProperty.prototype.getKeyframeValue = function() {\n var textKeys = this.data.d.k, textDocumentData;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0, len = textKeys.length;\n while(i <= len - 1) {\n textDocumentData = textKeys[i].s;\n if(i === len - 1 || textKeys[i+1].t > frameNum){\n break;\n }\n i += 1;\n }\n if(this.keysIndex !== i) {\n this.keysIndex = i;\n }\n return this.data.d.k[this.keysIndex].s;\n};\n\nTextProperty.prototype.buildFinalText = function(text) {\n var combinedCharacters = FontManager.getCombinedCharacterCodes();\n var charactersArray = [];\n var i = 0, len = text.length;\n var charCode;\n while (i < len) {\n charCode = text.charCodeAt(i);\n if (combinedCharacters.indexOf(charCode) !== -1) {\n charactersArray[charactersArray.length - 1] += text.charAt(i);\n } else {\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n charCode = text.charCodeAt(i + 1);\n if (charCode >= 0xDC00 && charCode <= 0xDFFF) {\n charactersArray.push(text.substr(i, 2));\n ++i;\n } else {\n charactersArray.push(text.charAt(i));\n }\n } else {\n charactersArray.push(text.charAt(i));\n }\n }\n i += 1;\n }\n return charactersArray;\n}\n\nTextProperty.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, len;\n var newLineFlag, index = 0, val;\n var anchorGrouping = data.m.g;\n var currentSize = 0, currentPos = 0, currentLine = 0, lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j, jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData, cLength = 0;\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n\n var fWeight = 'normal', fStyle = 'normal';\n len = styles.length;\n var styleName;\n for(i=0;i boxWidth && finalText[i] !== ' '){\n if(lastSpaceIndex === -1){\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n currentHeight += documentData.finalLineHeight || documentData.finalSize*1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0,\"\\r\");\n //finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n lastSpaceIndex = -1;\n lineWidth = 0;\n }else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n currentHeight += fontData.ascent*documentData.finalSize/100;\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 for (i = 0;i < len ;i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\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 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 letters.push({l:cLength,an:cLength,add:currentSize,n:newLineFlag, anIndexes:[], val: val, line: currentLine, animatorJustifyOffset: 0});\n if(anchorGrouping == 2){\n currentSize += cLength;\n if(val === '' || val === ' ' || i === len - 1){\n if(val === '' || val === ' '){\n currentSize -= cLength;\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 index += 1;\n currentSize = 0;\n }\n }else if(anchorGrouping == 3){\n currentSize += cLength;\n if(val === '' || i === len - 1){\n if(val === ''){\n currentSize -= cLength;\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 currentSize = 0;\n index += 1;\n }\n }else{\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n if(documentData.sz){\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n }else{\n documentData.boxWidth = maxLineWidth;\n switch(documentData.j){\n case 1:\n documentData.justifyOffset = - documentData.boxWidth;\n break;\n case 2:\n documentData.justifyOffset = - documentData.boxWidth/2;\n break;\n default:\n documentData.justifyOffset = 0;\n }\n }\n documentData.lineWidths = lineWidths;\n\n var animators = data.a, animatorData, letterData;\n jLen = animators.length;\n var based, ind, indexes = [];\n for(j=0;j 0) {\n x1 = this.ne.v / 100.0;\n }\n else {\n y1 = -this.ne.v / 100.0;\n }\n if(this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n }\n else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\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 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 if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\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;\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind;*/\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 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;\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 mult = easer(mult);\n }\n return mult*this.a.v;\n },\n getValue: function(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n if(newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\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 if(s>e){\n var _s = s;\n s = e;\n e = _s;\n }\n this.finalS = s;\n this.finalE = e;\n }\n }\n extendPrototype([DynamicPropertyContainer], TextSelectorProp);\n\n function getTextSelectorProp(elem, data,arr) {\n return new TextSelectorProp(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n}());\n\n \nvar pool_factory = (function() {\n\treturn function(initialLength, _create, _release, _clone) {\n\n\t\tvar _length = 0;\n\t\tvar _maxLength = initialLength;\n\t\tvar pool = createSizedArray(_maxLength);\n\n\t\tvar ob = {\n\t\t\tnewElement: newElement,\n\t\t\trelease: release\n\t\t};\n\n\t\tfunction newElement(){\n\t\t\tvar element;\n\t\t\tif(_length){\n\t\t\t\t_length -= 1;\n\t\t\t\telement = pool[_length];\n\t\t\t} else {\n\t\t\t\telement = _create();\n\t\t\t}\n\t\t\treturn element;\n\t\t}\n\n\t\tfunction release(element) {\n\t\t\tif(_length === _maxLength) {\n\t\t\t\tpool = pooling.double(pool);\n\t\t\t\t_maxLength = _maxLength*2;\n\t\t\t}\n\t\t\tif (_release) {\n\t\t\t\t_release(element);\n\t\t\t}\n\t\t\tpool[_length] = element;\n\t\t\t_length += 1;\n\t\t}\n\n\t\tfunction clone() {\n\t\t\tvar clonedElement = newElement();\n\t\t\treturn _clone(clonedElement);\n\t\t}\n\n\t\treturn ob;\n\t};\n}());\n\nvar pooling = (function(){\n\n\tfunction double(arr){\n\t\treturn arr.concat(createSizedArray(arr.length));\n\t}\n\n\treturn {\n\t\tdouble: double\n\t};\n}());\nvar point_pool = (function(){\n\n\tfunction create() {\n\t\treturn createTypedArray('float32', 2);\n\t}\n\treturn pool_factory(8, create);\n}());\nvar shape_pool = (function(){\n\n\tfunction create() {\n\t\treturn new ShapePath();\n\t}\n\n\tfunction release(shapePath) {\n\t\tvar len = shapePath._length, i;\n\t\tfor(i = 0; i < len; i += 1) {\n\t\t\tpoint_pool.release(shapePath.v[i]);\n\t\t\tpoint_pool.release(shapePath.i[i]);\n\t\t\tpoint_pool.release(shapePath.o[i]);\n\t\t\tshapePath.v[i] = null;\n\t\t\tshapePath.i[i] = null;\n\t\t\tshapePath.o[i] = null;\n\t\t}\n\t\tshapePath._length = 0;\n\t\tshapePath.c = false;\n\t}\n\n\tfunction clone(shape) {\n\t\tvar cloned = factory.newElement();\n\t\tvar i, len = shape._length === undefined ? shape.v.length : shape._length;\n\t\tcloned.setLength(len);\n\t\tcloned.c = shape.c;\n\t\tvar pt;\n\t\t\n\t\tfor(i = 0; i < len; i += 1) {\n\t\t\tcloned.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\t\t}\n\t\treturn cloned;\n\t}\n\n\tvar factory = pool_factory(4, create, release);\n\tfactory.clone = clone;\n\n\treturn factory;\n}());\nvar shapeCollection_pool = (function(){\n\tvar ob = {\n\t\tnewShapeCollection: newShapeCollection,\n\t\trelease: release\n\t};\n\n\tvar _length = 0;\n\tvar _maxLength = 4;\n\tvar pool = createSizedArray(_maxLength);\n\n\tfunction newShapeCollection(){\n\t\tvar shapeCollection;\n\t\tif(_length){\n\t\t\t_length -= 1;\n\t\t\tshapeCollection = pool[_length];\n\t\t} else {\n\t\t\tshapeCollection = new ShapeCollection();\n\t\t}\n\t\treturn shapeCollection;\n\t}\n\n\tfunction release(shapeCollection) {\n\t\tvar i, len = shapeCollection._length;\n\t\tfor(i = 0; i < len; i += 1) {\n\t\t\tshape_pool.release(shapeCollection.shapes[i]);\n\t\t}\n\t\tshapeCollection._length = 0;\n\n\t\tif(_length === _maxLength) {\n\t\t\tpool = pooling.double(pool);\n\t\t\t_maxLength = _maxLength*2;\n\t\t}\n\t\tpool[_length] = shapeCollection;\n\t\t_length += 1;\n\t}\n\n\treturn ob;\n}());\nvar segments_length_pool = (function(){\n\n\tfunction create() {\n\t\treturn {\n\t\t\tlengths: [],\n\t\t\ttotalLength: 0\n\t\t};\n\t}\n\n\tfunction release(element) {\n\t\tvar i, len = element.lengths.length;\n\t\tfor(i=0;i= 0; i--) {\n if (!this.elements[i]) {\n data = this.layers[i];\n if(data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st))\n {\n this.buildItem(i);\n }\n }\n this.completeLayers = this.elements[i] ? this.completeLayers:false;\n }\n this.checkPendingElements();\n};\n\nBaseRenderer.prototype.createItem = function(layer){\n switch(layer.ty){\n case 2:\n return this.createImage(layer);\n case 0:\n return this.createComp(layer);\n case 1:\n return this.createSolid(layer);\n case 3:\n return this.createNull(layer);\n case 4:\n return this.createShape(layer);\n case 5:\n return this.createText(layer);\n case 13:\n return this.createCamera(layer);\n }\n return this.createNull(layer);\n};\n\nBaseRenderer.prototype.createCamera = function(){\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n};\n\nBaseRenderer.prototype.buildAllItems = function(){\n var i, len = this.layers.length;\n for(i=0;i= 0; i--) {\n if(this.completeLayers || this.elements[i]){\n this.elements[i].prepareFrame(num - this.layers[i].st);\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\nSVGRenderer.prototype.appendElementInPos = function(element, pos){\n var newElement = element.getBaseElement();\n if(!newElement){\n return;\n }\n var i = 0;\n var nextElement;\n while(i 0){\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, \"url(\" + locationHref + \"#\" + layerId + \")\");\n defs.appendChild(this.maskElement);\n }\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n\n}\n\nMaskElement.prototype.getMaskProperty = function(pos){\n return this.viewData[pos].prop;\n};\n\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i, len = this.masksProperties.length;\n for (i = 0; i < len; i++) {\n if(this.viewData[i].prop._mdf || isFirstFrame){\n this.drawPath(this.masksProperties[i],this.viewData[i].prop.v,this.viewData[i]);\n }\n if(this.viewData[i].op._mdf || isFirstFrame){\n this.viewData[i].elem.setAttribute('fill-opacity',this.viewData[i].op.v);\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 if(this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)){\n var feMorph = this.storedData[i].expan;\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(' + locationHref + '#'+this.storedData[i].filterId+')');\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 this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v*2);\n\n }\n }\n }\n }\n};\n\nMaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n};\n\nMaskElement.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\nMaskElement.prototype.drawPath = function(pathData,pathNodes,viewData){\n var pathString = \" M\"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n var i, len;\n len = pathNodes._length;\n for(i=1;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 //pathNodes.__renderedString = pathString;\n\n if(viewData.lastPath !== pathString){\n var pathShapeValue = '';\n if(viewData.elem){\n if(pathNodes.c){\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n viewData.elem.setAttribute('d',pathShapeValue);\n }\n viewData.lastPath = pathString;\n }\n};\n\nMaskElement.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/**\n * @file \n * Handles AE's layer parenting property.\n *\n */\n\nfunction HierarchyElement(){}\n\nHierarchyElement.prototype = {\n\t/**\n * @function \n * Initializes hierarchy properties\n *\n */\n\tinitHierarchy: function() {\n\t\t//element's parent list\n\t this.hierarchy = [];\n\t //if element is parent of another layer _isParent will be true\n\t this._isParent = false;\n\t this.checkParenting();\n\t},\n\t/**\n * @function \n * Sets layer's hierarchy.\n * @param {array} hierarch\n * layer's parent list\n *\n */ \n\tsetHierarchy: function(hierarchy){\n\t this.hierarchy = hierarchy;\n\t},\n\t/**\n * @function \n * Sets layer as parent.\n *\n */ \n\tsetAsParent: function() {\n\t this._isParent = true;\n\t},\n\t/**\n * @function \n * Searches layer's parenting chain\n *\n */ \n\tcheckParenting: function(){\n\t if (this.data.parent !== undefined){\n\t this.comp.buildElementParenting(this, this.data.parent, []);\n\t }\n\t}\n};\n/**\n * @file \n * Handles element's layer frame update.\n * Checks layer in point and out point\n *\n */\n\nfunction FrameElement(){}\n\nFrameElement.prototype = {\n /**\n * @function \n * Initializes frame related properties.\n *\n */\n initFrame: function(){\n //set to true when inpoint is rendered\n this._isFirstFrame = false;\n //list of animated properties\n this.dynamicProperties = [];\n // If layer has been modified in current tick this will be true\n this._mdf = false;\n },\n /**\n * @function \n * Calculates all dynamic values\n *\n * @param {number} num\n * current frame number in Layer's time\n * @param {boolean} isVisible\n * if layers is currently in range\n * \n */\n prepareProperties: function(num, isVisible) {\n var i, len = this.dynamicProperties.length;\n for (i = 0;i < len; i += 1) {\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\n this.dynamicProperties[i].getValue();\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function(prop) {\n if(this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n};\nfunction TransformElement(){}\n\nTransformElement.prototype = {\n initTransform: function() {\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {o:0},\n _matMdf: false,\n _opMdf: false,\n mat: new Matrix()\n };\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n }\n\n //TODO: check TYPE 11: Guided elements\n if (this.data.ty !== 11) {\n //this.createElements();\n }\n },\n renderTransform: function() {\n\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, len = this.hierarchy.length;\n //Checking if any of the transformation matrices in the hierarchy chain has changed.\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 i += 1;\n }\n }\n \n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n for (i = 0; i < len; i += 1) {\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\n }\n }\n }\n },\n globalToLocal: function(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n var i, len = transforms.length,ptNew;\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\n //ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n return pt;\n },\n mHelper: new Matrix()\n};\nfunction RenderableElement(){\n\n}\n\nRenderableElement.prototype = {\n initRenderable: function() {\n //layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false;\n //layer's display state\n this.hidden = false;\n // If layer's transparency equals 0, it can be hidden\n this.isTransparent = false;\n //list of animated components\n this.renderableComponents = [];\n },\n addRenderableComponent: function(component) {\n if(this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function(component) {\n if(this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function(){\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 * @function \n * Initializes frame related properties.\n *\n * @param {number} num\n * current frame number in Layer's time\n * \n */\n checkLayerLimits: function(num) {\n if(this.data.ip - this.data.st <= num && this.data.op - this.data.st > num)\n {\n if(this.isInRange !== true){\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else {\n if(this.isInRange !== false){\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n }\n },\n renderRenderable: function() {\n var i, len = this.renderableComponents.length;\n for(i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /*this.maskManager.renderFrame(this.finalTransform.mat);\n this.renderableEffectsManager.renderFrame(this._isFirstFrame);*/\n },\n sourceRectAtTime: function(){\n return {\n top:0,\n left:0,\n width:100,\n height:100\n };\n },\n getLayerSize: function(){\n if(this.data.ty === 5){\n return {w:this.data.textData.width,h:this.data.textData.height};\n }else{\n return {w:this.data.width,h:this.data.height};\n }\n }\n};\nfunction RenderableDOMElement() {}\n\n(function(){\n var _prototype = {\n initElement: function(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(){\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(){\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 this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function() {\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 this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function() {},\n prepareFrame: function(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function(){\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n}());\nfunction ProcessedElement(element, position) {\n\tthis.elem = element;\n\tthis.pos = position;\n}\nfunction SVGStyleData(data, level) {\n\tthis.data = data;\n\tthis.type = data.ty;\n\tthis.d = '';\n\tthis.lvl = level;\n\tthis._mdf = false;\n\tthis.closed = data.hd === true;\n\tthis.pElem = createNS('path');\n\tthis.msElem = null;\n}\n\nSVGStyleData.prototype.reset = function() {\n\tthis.d = '';\n\tthis._mdf = false;\n};\nfunction 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;\n //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 this._isAnimated = !!shape.k;\n // TODO: commenting this for now since all shapes are animated\n var i = 0, len = transformers.length;\n while(i < len) {\n \tif(transformers[i].mProps.dynamicProperties.length) {\n \t\tthis._isAnimated = true;\n \t\tbreak;\n \t}\n \ti += 1;\n }\n}\n\nSVGShapeData.prototype.setAsAnimated = function() {\n this._isAnimated = true;\n}\nfunction SVGTransformData(mProps, op, container) {\n\tthis.transform = {\n\t\tmProps: mProps,\n\t\top: op,\n\t\tcontainer: container\n\t};\n\tthis.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n}\nfunction SVGStrokeStyleData(elem, data, styleOb){\n\tthis.initDynamicPropertyContainer(elem);\n\tthis.getValue = this.iterateDynamicProperties;\n\tthis.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);\n\tthis.w = PropertyFactory.getProp(elem,data.w,0,null,this);\n\tthis.d = new DashProperty(elem,data.d||{},'svg',this);\n\tthis.c = PropertyFactory.getProp(elem,data.c,1,255,this);\n\tthis.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n}\n\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\nfunction SVGFillStyleData(elem, data, styleOb){\n\tthis.initDynamicPropertyContainer(elem);\n\tthis.getValue = this.iterateDynamicProperties;\n\tthis.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);\n\tthis.c = PropertyFactory.getProp(elem,data.c,1,255,this);\n\tthis.style = styleOb;\n}\n\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\nfunction SVGGradientFillStyleData(elem, data, styleOb){\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n}\n\nSVGGradientFillStyleData.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||{k:0},0,0.01,this);\n this.a = PropertyFactory.getProp(elem,data.a||{k:0},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\nSVGGradientFillStyleData.prototype.setGradientData = function(pathElement,data){\n\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, j, jLen;\n jLen = data.g.p*4;\n for(j=0;j 0) {\n\t redraw = itemData.transformers[k].mProps._mdf || redraw;\n\t iterations --;\n\t k --;\n\t }\n\t if(redraw) {\n\t iterations = lvl - itemData.styles[l].lvl;\n\t k = itemData.transformers.length-1;\n\t while(iterations > 0) {\n\t props = itemData.transformers[k].mProps.v.props;\n\t mat.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\n\t iterations --;\n\t k --;\n\t }\n\t }\n\t } else {\n\t mat = _identityMatrix;\n\t }\n\t paths = itemData.sh.paths;\n\t jLen = paths._length;\n\t if(redraw){\n\t pathStringTransformed = '';\n\t for(j=0;j= 1 ? 0.99 : itemData.h.v <= -1 ? -0.99: itemData.h.v;\n\t var dist = rad * percent;\n\t var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n\t var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n\t gfill.setAttribute('fx', x);\n\t gfill.setAttribute('fy', y);\n\t if (hasOpacity && !itemData.g._collapsable) {\n\t itemData.of.setAttribute('fx', x);\n\t itemData.of.setAttribute('fy', y);\n\t }\n\t }\n\t //gfill.setAttribute('fy','200');\n\t }\n\t};\n\n\tfunction renderStroke(styleData, itemData, isFirstFrame) {\n\t var styleElem = itemData.style;\n\t var d = itemData.d;\n\t if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n\t styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n\t styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n\t }\n\t if(itemData.c && (itemData.c._mdf || isFirstFrame)){\n\t styleElem.pElem.setAttribute('stroke','rgb(' + bm_floor(itemData.c.v[0]) + ',' + bm_floor(itemData.c.v[1]) + ',' + bm_floor(itemData.c.v[2]) + ')');\n\t }\n\t if(itemData.o._mdf || isFirstFrame){\n\t styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n\t }\n\t if(itemData.w._mdf || isFirstFrame){\n\t styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\t if(styleElem.msElem){\n\t styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n\t }\n\t }\n\t};\n\n\treturn ob;\n}())\nfunction ShapeTransformManager() {\n\tthis.sequences = {};\n\tthis.sequenceList = [];\n this.transform_key_count = 0;\n}\n\nShapeTransformManager.prototype = {\n\taddTransformSequence: function(transforms) {\n\t\tvar i, len = transforms.length;\n\t\tvar key = '_';\n\t\tfor(i = 0; i < len; i += 1) {\n\t\t\tkey += transforms[i].transform.key + '_';\n\t\t}\n\t\tvar sequence = this.sequences[key];\n\t\tif(!sequence) {\n\t\t\tsequence = {\n\t\t\t\ttransforms: [].concat(transforms),\n\t\t\t\tfinalTransform: new Matrix(),\n\t\t\t\t_mdf: false\n\t\t\t};\n\t\t\tthis.sequences[key] = sequence;\n\t\t\tthis.sequenceList.push(sequence);\n\t\t}\n\t\treturn sequence;\n\t},\n\tprocessSequence: function(sequence, isFirstFrame) {\n\t\tvar i = 0, len = sequence.transforms.length, _mdf = isFirstFrame;\n\t\twhile (i < len && !isFirstFrame) {\n\t\t\tif (sequence.transforms[i].transform.mProps._mdf) {\n\t\t\t\t_mdf = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ti += 1\n\t\t}\n\t\tif (_mdf) {\n\t\t\tvar props;\n\t\t\tsequence.finalTransform.reset();\n\t\t\tfor (i = len - 1; i >= 0; i -= 1) {\n\t\t props = sequence.transforms[i].transform.mProps.v.props;\n\t\t sequence.finalTransform.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\n\t\t\t}\n\t\t}\n\t\tsequence._mdf = _mdf;\n\t\t\n\t},\n\tprocessSequences: function(isFirstFrame) {\n\t\tvar i, len = this.sequenceList.length;\n\t\tfor (i = 0; i < len; i += 1) {\n\t\t\tthis.processSequence(this.sequenceList[i], isFirstFrame);\n\t\t}\n\n\t},\n\tgetNewKey: function() {\n\t\treturn '_' + this.transform_key_count++;\n\t}\n}\nfunction BaseElement(){\n}\n\nBaseElement.prototype = {\n checkMasks: function(){\n if(!this.data.hasMask){\n return false;\n }\n var i = 0, len = this.data.masksProperties.length;\n while(i=0;i-=1){\n this.shapeModifiers[i].processShapes(this._isFirstFrame);\n }\n },\n lcEnum: {\n '1': 'butt',\n '2': 'round',\n '3': 'square'\n },\n ljEnum: {\n '1': 'miter',\n '2': 'round',\n '3': 'bevel'\n },\n searchProcessedElement: function(elem){\n var elements = this.processedElements;\n var i = 0, len = elements.length;\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n i += 1;\n }\n return 0;\n },\n addProcessedElement: function(elem, pos){\n var elements = this.processedElements;\n var i = elements.length;\n while(i) {\n i -= 1;\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n};\nfunction ITextElement(){\n}\n\nITextElement.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\nITextElement.prototype.prepareFrame = function(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n if(this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n};\n\nITextElement.prototype.createPathShape = function(matrixHelper, shapes) {\n var j,jLen = shapes.length;\n var k, kLen, pathNodes;\n var shapeStr = '';\n for(j=0;j= 0; i -= 1 ){\n if(this.completeLayers || this.elements[i]){\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n if(this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n};\n\nICompElement.prototype.renderInnerContent = function() {\n var i,len = this.layers.length;\n for( i = 0; i < len; i += 1 ){\n if(this.completeLayers || this.elements[i]){\n this.elements[i].renderFrame();\n }\n }\n};\n\nICompElement.prototype.setElements = function(elems){\n this.elements = elems;\n};\n\nICompElement.prototype.getElements = function(){\n return this.elements;\n};\n\nICompElement.prototype.destroyElements = function(){\n var i,len = this.layers.length;\n for( i = 0; i < len; i+=1 ){\n if(this.elements[i]){\n this.elements[i].destroy();\n }\n }\n};\n\nICompElement.prototype.destroy = function(){\n this.destroyElements();\n this.destroyBaseElement();\n};\n\nfunction IImageElement(data,globalData,comp){\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data,globalData,comp);\n this.sourceRect = {top:0,left:0,width:this.assetData.w,height:this.assetData.h};\n}\n\nextendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement], IImageElement);\n\nIImageElement.prototype.createContent = function(){\n\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n\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 \n this.layerElement.appendChild(this.innerElem);\n};\n\nIImageElement.prototype.sourceRectAtTime = function() {\n\treturn this.sourceRect;\n}\nfunction ISolidElement(data,globalData,comp){\n this.initElement(data,globalData,comp);\n}\nextendPrototype([IImageElement], ISolidElement);\n\nISolidElement.prototype.createContent = function(){\n\n var rect = createNS('rect');\n ////rect.style.width = this.data.sw;\n ////rect.style.height = this.data.sh;\n ////rect.style.fill = this.data.sc;\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};\nfunction 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.layerElement = createNS('g');\n this.initElement(data,globalData,comp);\n this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate,this) : {_placeholder:true};\n}\n\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\nfunction SVGTextElement(data,globalData,comp){\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data,globalData,comp);\n}\n\nextendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement], SVGTextElement);\n\nSVGTextElement.prototype.createContent = function(){\n\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n};\n\nSVGTextElement.prototype.buildTextContents = function(textArray) {\n var i = 0, len = textArray.length;\n var textContents = [], currentTextContent = '';\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 i += 1;\n }\n textContents.push(currentTextContent);\n return textContents;\n}\n\nSVGTextElement.prototype.buildNewText = function(){\n var i, len;\n\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\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 if(documentData.sc){\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\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, fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n this.layerElement.setAttribute('aria-label', documentData.t);\n\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapes, shapeStr = '', singleShape = this.data.singleShape;\n var xPos = 0, yPos = 0, firstLine = true;\n var trackingOffset = documentData.tr/1000*documentData.finalSize;\n if(singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n switch(documentData.j) {\n case 1:\n justify = 'end';\n break;\n case 2:\n justify = 'middle';\n break;\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 for ( i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i] || 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 this.textSpans[i] = tSpan;\n yPos += documentData.finalLineHeight;\n }\n \n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var shapeData, charData;\n for (i = 0; i < len; i += 1) {\n if(!usesGlyphs || !singleShape || i === 0){\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs?'path':'text');\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] = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n tSpan.style.display = 'inherit';\n }\n \n matrixHelper.reset();\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\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 this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0;\n //xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n xPos += trackingOffset;\n }\n if(usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n if(!singleShape){\n tSpan.setAttribute('d',this.createPathShape(matrixHelper,shapes));\n } else {\n shapeStr += this.createPathShape(matrixHelper,shapes);\n }\n } else {\n if(singleShape) {\n tSpan.setAttribute(\"transform\", \"translate(\" + matrixHelper.props[12] + \",\" + matrixHelper.props[13] + \")\");\n }\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\",\"preserve\");\n }\n //\n }\n if (singleShape && tSpan) {\n tSpan.setAttribute('d',shapeStr);\n }\n }\n while (i < this.textSpans.length){\n this.textSpans[i].style.display = 'none';\n i += 1;\n }\n \n this._sizeChanged = true;\n};\n\nSVGTextElement.prototype.sourceRectAtTime = function(time){\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\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 return this.bbox;\n};\n\nSVGTextElement.prototype.renderInnerContent = function(){\n\n if(!this.data.singleShape){\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n if(this.lettersChangedFlag || this.textAnimator.lettersChangedFlag){\n this._sizeChanged = true;\n var i,len;\n var renderedLetters = this.textAnimator.renderedLetters;\n\n var letters = this.textProperty.currentData.l;\n\n len = letters.length;\n var renderedLetter, textSpan;\n for(i=0;i 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n}\n\nSVGShapeElement.prototype.setShapesAsAnimated = function(shapes){\n var i, len = shapes.length;\n for(i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n}\n\nSVGShapeElement.prototype.createStyleElement = function(data, level){\n //TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n\n var pathElement = styleOb.pElem;\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 if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask','url(' + locationHref + '#' + elementData.maskId + ')');\n }\n }\n \n if(data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', this.lcEnum[data.lc] || 'round');\n pathElement.setAttribute('stroke-linejoin',this.ljEnum[data.lj] || 'round');\n pathElement.setAttribute('fill-opacity','0');\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 if(data.cl){\n pathElement.setAttribute('class',data.cl);\n }\n if(data.bm){\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n};\n\nSVGShapeElement.prototype.createGroupElement = function(data) {\n var elementData = new ShapeGroupData();\n if(data.ln){\n elementData.gr.setAttribute('id',data.ln);\n }\n if(data.cl){\n elementData.gr.setAttribute('class',data.cl);\n }\n if(data.bm){\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n return elementData;\n};\n\nSVGShapeElement.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\nSVGShapeElement.prototype.createShapeElement = function(data, ownTransformers, level) {\n var ty = 4;\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 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\nSVGShapeElement.prototype.addToAnimatedContents = function(data, element) {\n var i = 0, len = this.animatedContents.length;\n while(i < len) {\n if(this.animatedContents[i].element === element) {\n return;\n }\n i += 1;\n }\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n};\n\nSVGShapeElement.prototype.setElementStyles = function(elementData){\n var arr = elementData.styles;\n var j, jLen = this.stylesList.length;\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n};\n\nSVGShapeElement.prototype.reloadShapes = function(){\n this._isFirstFrame = true;\n var i, len = this.itemsData.length;\n for( i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n for(i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\n};\n\nSVGShapeElement.prototype.searchShapes = function(arr,itemsData,prevViewData,container, level, transformers, render){\n var ownTransformers = [].concat(transformers);\n var i, len = arr.length - 1;\n var j, jLen;\n var ownStyles = [], ownModifiers = [], styleOb, currentTransform, modifier, processedPos;\n for(i=len;i>=0;i-=1){\n processedPos = this.searchProcessedElement(arr[i]);\n if(!processedPos){\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\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], level);\n } else {\n itemsData[i].style.closed = false;\n }\n if(arr[i]._render){\n container.appendChild(itemsData[i].style.pElem);\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 for(j=0;j horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = (dimensions == 3) ? 0 : sigma;\n var sigmaY = (dimensions == 2) ? 0 : sigma;\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + \" \" + sigmaY);\n\n // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate';\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n}\nfunction SVGStrokeEffect(elem, filterManager){\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n}\n\nSVGStrokeEffect.prototype.initialize = function(){\n\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path,groupPath, i, len;\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 groupPath = createNS('g'); \n groupPath.setAttribute('fill','none');\n groupPath.setAttribute('stroke-linecap','round');\n groupPath.setAttribute('stroke-dashoffset',1);\n for(i;i= max){\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\n }\n table[pos++] = colorValue;\n cnt += 256/(segments-1);\n }\n return table.join(' ');\n};\n\nSVGProLevelsFilter.prototype.renderFrame = function(forceRender){\n if(forceRender || this.filterManager._mdf){\n var val, cnt, perc, bezier;\n var effectElements = this.filterManager.effectElements;\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\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};\nfunction SVGDropShadowEffect(filter, filterManager) {\n var filterSize = filterManager.container.globalData.renderConfig.filterSize\n filter.setAttribute('x', filterSize.x);\n filter.setAttribute('y', filterSize.y);\n filter.setAttribute('width', filterSize.width);\n filter.setAttribute('height', filterSize.height);\n this.filterManager = filterManager;\n\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in','SourceAlpha');\n feGaussianBlur.setAttribute('result','drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation','0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx','25');\n feOffset.setAttribute('dy','0');\n feOffset.setAttribute('in','drop_shadow_1');\n feOffset.setAttribute('result','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','drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in','drop_shadow_3');\n feComposite.setAttribute('in2','drop_shadow_2');\n feComposite.setAttribute('operator','in');\n feComposite.setAttribute('result','drop_shadow_4');\n filter.appendChild(feComposite);\n\n\n var feMerge = createNS('feMerge');\n filter.appendChild(feMerge);\n var feMergeNode;\n feMergeNode = createNS('feMergeNode');\n feMerge.appendChild(feMergeNode);\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in','SourceGraphic');\n this.feMergeNode = feMergeNode;\n this.feMerge = feMerge;\n this.originalNodeAdded = false;\n feMerge.appendChild(feMergeNode);\n}\n\nSVGDropShadowEffect.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 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 if(forceRender || this.filterManager.effectElements[1].p._mdf){\n this.feFlood.setAttribute('flood-opacity',this.filterManager.effectElements[1].p.v/255);\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 /*if(forceRender || this.filterManager.effectElements[5].p._mdf){\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\n this.feMerge.removeChild(this.feMergeNode);\n this.originalNodeAdded = false;\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\n this.feMerge.appendChild(this.feMergeNode);\n this.originalNodeAdded = true;\n }\n }*/\n }\n};\nvar _svgMatteSymbols = [];\n\nfunction 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\nSVGMatte3Effect.prototype.findSymbol = function(mask) {\n var i = 0, len = _svgMatteSymbols.length;\n while(i < len) {\n if(_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n i += 1;\n }\n return null;\n};\n\nSVGMatte3Effect.prototype.replaceInParent = function(mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n if(!parentNode) {\n return;\n }\n var children = parentNode.children;\n var i = 0, len = children.length;\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n i += 1;\n }\n var nextChild;\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n if(nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n};\n\nSVGMatte3Effect.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 _svgMatteSymbols.push(mask);\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 elem.setMatte(mask.layerId);\n};\n\nSVGMatte3Effect.prototype.initialize = function() {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0, len = elements.length;\n while (i < len) {\n \tif (elements[i] && elements[i].data.ind === ind) {\n \t\tthis.setElementAsMask(this.elem, elements[i]);\n \t}\n \ti += 1;\n }\n this.initialized = true;\n};\n\nSVGMatte3Effect.prototype.renderFrame = function() {\n\tif(!this.initialized) {\n\t\tthis.initialize();\n\t}\n};\nfunction SVGEffects(elem){\n var i, len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId);\n var count = 0;\n this.filters = [];\n var filterManager;\n for(i=0;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')),\n [].slice.call(document.getElementsByClassName('bodymovin')));\n var i, len = animElements.length;\n for(i=0;i this.animationData.op){\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n var layers = this.animationData.layers;\n var i, len = layers.length;\n var newLayers = data.layers;\n var j, jLen = newLayers.length;\n for(j=0;j this.timeCompleted){\n this.currentFrame = this.timeCompleted;\n }\n this.trigger('enterFrame');\n this.renderFrame();\n};\n\nAnimationItem.prototype.renderFrame = function () {\n if(this.isLoaded === false){\n return;\n }\n try {\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch(error) {\n this.triggerRenderFrameError(error);\n }\n};\n\nAnimationItem.prototype.play = function (name) {\n if(name && this.name != name){\n return;\n }\n if(this.isPaused === true){\n this.isPaused = false;\n if(this._idle){\n this._idle = false;\n this.trigger('_active');\n }\n }\n};\n\nAnimationItem.prototype.pause = function (name) {\n if(name && this.name != name){\n return;\n }\n if(this.isPaused === false){\n this.isPaused = true;\n this._idle = true;\n this.trigger('_idle');\n }\n};\n\nAnimationItem.prototype.togglePause = function (name) {\n if(name && this.name != name){\n return;\n }\n if(this.isPaused === true){\n this.play();\n }else{\n this.pause();\n }\n};\n\nAnimationItem.prototype.stop = function (name) {\n if(name && this.name != name){\n return;\n }\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n};\n\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if(name && this.name != name){\n return;\n }\n if(isFrame){\n this.setCurrentRawFrameValue(value);\n }else{\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n this.pause();\n};\n\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n this.goToAndStop(value, isFrame, name);\n this.play();\n};\n\nAnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false;\n // 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 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 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 this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\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 if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n};\n\nAnimationItem.prototype.adjustSegment = function(arr, offset){\n this.playCount = 0;\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 this.timeCompleted = this.totalFrames = arr[0] - arr[1];\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 this.timeCompleted = this.totalFrames = arr[1] - arr[0];\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n this.trigger('segmentStart');\n};\nAnimationItem.prototype.setSegment = function (init,end) {\n var pendingFrame = -1;\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.timeCompleted = this.totalFrames = end - init;\n if(pendingFrame !== -1) {\n this.goToAndStop(pendingFrame,true);\n }\n};\n\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n if (typeof arr[0] === 'object') {\n var i, len = arr.length;\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n if (this.isPaused) {\n this.play();\n }\n};\n\nAnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip,this.animationData.op]);\n //this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);\n if (forceFlag) {\n this.checkSegments(0);\n }\n};\nAnimationItem.prototype.checkSegments = function(offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n return false;\n};\n\nAnimationItem.prototype.destroy = function (name) {\n if ((name && this.name != name) || !this.renderer) {\n return;\n }\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = this.onLoopComplete = this.onComplete = this.onSegmentStart = this.onDestroy = null;\n this.renderer = null;\n};\n\nAnimationItem.prototype.setCurrentRawFrameValue = function(value){\n this.currentRawFrame = value;\n this.gotoFrame();\n};\n\nAnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n};\n\nAnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n};\n\nAnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n};\n\nAnimationItem.prototype.getPath = function () {\n return this.path;\n};\n\nAnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n if(assetData.e) {\n path = assetData.p;\n } else if(this.assetsPath){\n var imagePath = assetData.p;\n if(imagePath.indexOf('images/') !== -1){\n imagePath = imagePath.split('/')[1];\n }\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n};\n\nAnimationItem.prototype.getAssetData = function (id) {\n var i = 0, len = this.assets.length;\n while (i < len) {\n if(id == this.assets[i].id){\n return this.assets[i];\n }\n i += 1;\n }\n};\n\nAnimationItem.prototype.hide = function () {\n this.renderer.hide();\n};\n\nAnimationItem.prototype.show = function () {\n this.renderer.show();\n};\n\nAnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n};\n\nAnimationItem.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 case 'loopComplete':\n this.triggerEvent(name,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));\n break;\n case 'complete':\n this.triggerEvent(name,new BMCompleteEvent(name,this.frameMult));\n break;\n case 'segmentStart':\n this.triggerEvent(name,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));\n break;\n case 'destroy':\n this.triggerEvent(name,new BMDestroyEvent(name,this));\n break;\n default:\n this.triggerEvent(name);\n }\n }\n if(name === 'enterFrame' && this.onEnterFrame){\n this.onEnterFrame.call(this,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameMult));\n }\n if(name === 'loopComplete' && this.onLoopComplete){\n this.onLoopComplete.call(this,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));\n }\n if(name === 'complete' && this.onComplete){\n this.onComplete.call(this,new BMCompleteEvent(name,this.frameMult));\n }\n if(name === 'segmentStart' && this.onSegmentStart){\n this.onSegmentStart.call(this,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));\n }\n if(name === 'destroy' && this.onDestroy){\n this.onDestroy.call(this,new BMDestroyEvent(name,this));\n }\n};\n\nAnimationItem.prototype.triggerRenderFrameError = function(nativeError) {\n\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\nAnimationItem.prototype.triggerConfigError = function(nativeError) {\n\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}\nvar Expressions = (function(){\n var ob = {};\n ob.initExpressions = initExpressions;\n\n\n function initExpressions(animation){\n\n \tvar stackCount = 0;\n \tvar registers = [];\n\n \tfunction pushExpression() {\n\t\t\tstackCount += 1;\n \t}\n\n \tfunction popExpression() {\n\t\t\tstackCount -= 1;\n\t\t\tif (stackCount === 0) {\n\t\t\t\treleaseInstances();\n\t\t\t}\n \t}\n\n \tfunction registerExpressionProperty(expression) {\n \t\tif (registers.indexOf(expression) === -1) {\n\t\t\t\tregisters.push(expression)\n \t\t}\n \t}\n\n \tfunction releaseInstances() {\n \t\tvar i, len = registers.length;\n \t\tfor (i = 0; i < len; i += 1) {\n\t\t\t\tregisters[i].release();\n \t\t}\n \t\tregisters.length = 0;\n \t}\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 return ob;\n}());\n\nexpressionsPlugin = Expressions;\n\nvar ExpressionManager = (function(){\n 'use strict';\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\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' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\n }\n\n function $bm_neg(a){\n var tOfA = typeof a;\n if(tOfA === 'number' || tOfA === 'boolean' || a instanceof Number ){\n return -a;\n }\n if($bm_isInstanceOfArray(a)){\n var i, lenA = a.length;\n var retArr = [];\n for(i=0;i max){\n var mm = max;\n max = min;\n min = mm;\n }\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val/degToRads;\n }\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val*degToRads;\n }\n var degrees_to_radians = radiansToDegrees;\n\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 if(!arr2) {\n arr2 = helperLengthArray;\n }\n var i, len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\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]; var g = val[1]; var b = val[2];\n var max = Math.max(r, g, b), min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min){\n h = s = 0; // achromatic\n }else{\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max){\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\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\n var r, g, b;\n\n if(s === 0){\n r = g = b = l; // achromatic\n }else{\n\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 if(tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n if(t <= tMin) {\n return value1;\n }else if(t >= tMax){\n return value2;\n }\n var perc = tMax === tMin ? 0 : (t-tMin)/(tMax-tMin);\n if(!value1.length){\n return value1 + (value2-value1)*perc;\n }\n var i, len = value1.length;\n var arr = createTypedArray('float32', len);\n for(i=0;i1){\n for(j=0;j 1 ? 1 : t < 0 ? 0 : t;\n var mult = fn(t);\n if($bm_isInstanceOfArray(val1)) {\n var i, len = val1.length;\n var arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = (val2[i] - val1[i]) * mult + val1[i];\n }\n return arr;\n } else {\n return (val2 - val1) * mult + val1;\n }\n }\n\n function nearestKey(time){\n var i, len = data.k.length,index,keyTime;\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 if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for(i=0;idata.k[i].t && time data.k[i+1].t - time){\n index = i + 2;\n keyTime = data.k[i+1].t;\n } else {\n index = i + 1;\n keyTime = data.k[i].t;\n }\n break;\n }\n }\n if(index === -1){\n index = i + 1;\n keyTime = data.k[i].t;\n }\n }\n \n }\n var ob = {};\n ob.index = index;\n ob.time = keyTime/elem.comp.globalData.frameRate;\n return ob;\n }\n\n function key(ind){\n var ob, i, len;\n if(!data.k.length || typeof(data.k[0]) === 'number'){\n throw new Error('The property has no keyframe at index ' + ind);\n }\n ind -= 1;\n ob = {\n time: data.k[ind].t/elem.comp.globalData.frameRate,\n value: []\n };\n var arr = data.k[ind].hasOwnProperty('s') ? data.k[ind].s : data.k[ind - 1].e;\n\n len = arr.length;\n for(i=0;i keyframes.length - 1){\n duration = keyframes.length - 1;\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 - elem.comp.globalData.frameRate*duration);\n }\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n var i, len, ret;\n if(type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame)/cycleDuration);\n if(iterations % 2 !== 0){\n return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);\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);\n var repeats = Math.floor((currentFrame - firstKeyFrame)/cycleDuration);\n if(this.pv.length){\n ret = new Array(initV.length);\n len = ret.length;\n for(i=0;i=firstKeyFrame){\n return this.pv;\n }else{\n var cycleDuration, lastKeyFrame;\n if(!durationFlag){\n if(!duration || duration > keyframes.length - 1){\n duration = keyframes.length - 1;\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(elem.comp.globalData.frameRate*duration);\n }\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n var i, len, ret;\n if(type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame)/cycleDuration);\n if(iterations % 2 === 0){\n return this.getValueAtTime((((firstKeyFrame - currentFrame)%cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);\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 if(this.pv.length){\n ret = new Array(initV.length);\n len = ret.length;\n for(i=0;i 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0, j = 0;\n var value;\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n var sampleValue;\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\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 i += 1;\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 return value;\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\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 return this._cachingAtTime.value;\n\n }\n\n function getTransformValueAtTime(time) {\n console.warn('Transform at time not supported');\n }\n\n function getTransformStaticValueAtTime(time) {\n\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n TransformPropertyFactory.getTransformProperty = function(elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n if(prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n PropertyFactory.getProp = function(elem,data,type, mult, container){\n var prop = propertyGetProp(elem,data,type, mult, container);\n //prop.getVelocityAtTime = getVelocityAtTime;\n //prop.loopOut = loopOut;\n //prop.loopIn = loopIn;\n if(prop.kf){\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\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 if(type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem,data,prop);\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: shape_pool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n \n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\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 return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions(){}\n ShapeExpressions.prototype = {\n vertices: function(prop, time){\n if (this.k) {\n this.getValue();\n }\n var shapePath = this.v;\n if(time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n var i, len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\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(time){\n return this.vertices('v', time);\n },\n inTangents: function(time){\n return this.vertices('i', time);\n },\n outTangents: function(time){\n return this.vertices('o', time);\n },\n isClosed: function(){\n return this.v.c;\n },\n pointOnPath: function(perc, time){\n var shapePath = this.v;\n if(time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\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, len = lengths.length;\n var j = 0, jLen;\n var accumulatedLength = 0, pt;\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 i += 1;\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 return pt;\n },\n vectorOnPath: function(perc, time, vectorType){\n //perc doesn't use triple equality because it can be a Number object as well as a primitive.\n perc = perc == 1 ? this.v.c ? 0 : 0.999 : perc;\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 if (magnitude === 0) {\n return [0,0];\n }\n var unitVector = vectorType === 'tangent' ? [xLength/magnitude, yLength/magnitude] : [-yLength/magnitude, xLength/magnitude];\n return unitVector;\n },\n tangentOnPath: function(perc, time){\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function(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\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\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 if(type === 3){\n expressionHelpers.searchExpressions(elem,data.pt,prop);\n } else if(type === 4){\n expressionHelpers.searchExpressions(elem,data.ks,prop);\n }\n if(prop.k){\n elem.addDynamicProperty(prop);\n }\n return prop;\n };\n}());\n(function addDecorator() {\n\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\n TextProperty.prototype.getExpressionValue = function(currentValue, text) {\n var newValue = this.calculateExpression(text);\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 return currentValue;\n }\n\n TextProperty.prototype.searchProperty = function(){\n\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}());\nvar ShapeExpressionInterface = (function(){\n\n function iterateElements(shapes,view, propertyGroup){\n var arr = [];\n var i, len = shapes ? shapes.length : 0;\n for(i=0;i 1) {\n defaultCurveSegments = value;\n }\n if (defaultCurveSegments >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n}\n\nfunction inBrowser() {\n return typeof navigator !== 'undefined';\n}\n\nfunction installPlugin(type, plugin) {\n if (type === 'expressions') {\n expressionsPlugin = plugin;\n }\n}\n\nfunction getFactory(name) {\n switch (name) {\n case \"propertyFactory\":\n return PropertyFactory;\n case \"shapePropertyFactory\":\n return ShapePropertyFactory;\n case \"matrix\":\n return Matrix;\n }\n}\n\nlottie.play = animationManager.play;\nlottie.pause = animationManager.pause;\nlottie.setLocationHref = setLocationHref;\nlottie.togglePause = animationManager.togglePause;\nlottie.setSpeed = animationManager.setSpeed;\nlottie.setDirection = animationManager.setDirection;\nlottie.stop = animationManager.stop;\nlottie.searchAnimations = searchAnimations;\nlottie.registerAnimation = animationManager.registerAnimation;\nlottie.loadAnimation = loadAnimation;\nlottie.setSubframeRendering = setSubframeRendering;\nlottie.resize = animationManager.resize;\n//lottie.start = start;\nlottie.goToAndStop = animationManager.goToAndStop;\nlottie.destroy = animationManager.destroy;\nlottie.setQuality = setQuality;\nlottie.inBrowser = inBrowser;\nlottie.installPlugin = installPlugin;\nlottie.freeze = animationManager.freeze;\nlottie.unfreeze = animationManager.unfreeze;\nlottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\nlottie.__getFactory = getFactory;\nlottie.version = '5.6.8';\n\nfunction checkReady() {\n if (document.readyState === \"complete\") {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n}\n\nfunction getQueryVariable(variable) {\n var vars = queryString.split('&');\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) == variable) {\n return decodeURIComponent(pair[1]);\n }\n }\n}\nvar standalone = '__[STANDALONE]__';\nvar animationData = '__[ANIMATIONDATA]__';\nvar renderer = '';\nif (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n var queryString = myScript.src.replace(/^[^\\?]+\\??/, '');\n renderer = getQueryVariable('renderer');\n}\nvar readyStateCheckInterval = setInterval(checkReady, 100);\n\nreturn lottie;\n}));"]}