{"version":3,"file":"contact-us.b64ba94ac56b648f4953.bundle.js","mappings":"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IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,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","sources":["webpack://@dupage/cms/./node_modules/core-js-pure/actual/object/define-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/actual/symbol/index.js","webpack://@dupage/cms/./node_modules/core-js-pure/actual/symbol/iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/actual/symbol/to-primitive.js","webpack://@dupage/cms/./node_modules/core-js-pure/es/array/virtual/concat.js","webpack://@dupage/cms/./node_modules/core-js-pure/es/array/virtual/for-each.js","webpack://@dupage/cms/./node_modules/core-js-pure/es/instance/concat.js","webpack://@dupage/cms/./node_modules/core-js-pure/es/object/define-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/es/symbol/index.js","webpack://@dupage/cms/./node_modules/core-js-pure/es/symbol/iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/es/symbol/to-primitive.js","webpack://@dupage/cms/./node_modules/core-js-pure/full/object/define-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/full/symbol/index.js","webpack://@dupage/cms/./node_modules/core-js-pure/full/symbol/iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/full/symbol/to-primitive.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/a-callable.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/a-possible-prototype.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/an-object.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-for-each.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-includes.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-iteration.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-method-has-species-support.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-method-is-strict.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-slice-simple.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-slice.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-species-constructor.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/array-species-create.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/classof-raw.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/classof.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/create-iter-result-object.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/create-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/define-built-in-accessor.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/define-built-in.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/define-global-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/descriptors.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/document-all.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/document-create-element.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/dom-iterables.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/engine-user-agent.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/engine-v8-version.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/enum-bug-keys.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/export.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/fails.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/function-apply.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/function-bind-context.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/function-bind-native.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/function-call.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/function-name.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/function-uncurry-this-accessor.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/function-uncurry-this-clause.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/function-uncurry-this.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/get-built-in.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/get-json-replacer-function.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/get-method.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/global.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/has-own-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/hidden-keys.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/html.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/indexed-object.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/inspect-source.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/internal-state.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/is-array.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/is-callable.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/is-constructor.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/is-forced.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/is-null-or-undefined.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/is-object.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/is-pure.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/is-symbol.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/iterator-create-constructor.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/iterator-define.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/iterators-core.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/iterators.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/length-of-array-like.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/math-trunc.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-create.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-define-properties.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-define-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-get-own-property-names-external.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-get-own-property-names.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-is-prototype-of.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-keys-internal.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-keys.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/object-to-string.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/ordinary-to-primitive.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/path.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/set-to-string-tag.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/shared-key.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/shared-store.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/shared.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/string-multibyte.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/symbol-constructor-detection.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/symbol-define-to-primitive.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/symbol-is-registered.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/symbol-is-well-known.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/symbol-registry-detection.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-absolute-index.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-integer-or-infinity.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-length.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-object.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-primitive.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-property-key.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/to-string.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/try-to-string.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/uid.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/v8-prototype-define-bug.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/weak-map-basic-detection.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/well-known-symbol-define.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","webpack://@dupage/cms/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.array.concat.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.array.for-each.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.array.iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.json.stringify.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.json.to-string-tag.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.object.define-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.string.iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.async-iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.constructor.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.for.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.has-instance.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.key-for.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.match-all.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.match.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.replace.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.search.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.species.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.split.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.to-primitive.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/es.symbol.unscopables.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.function.metadata.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.dispose.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.is-registered-symbol.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.is-registered.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.is-well-known-symbol.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.is-well-known.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.matcher.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.metadata.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.observable.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","webpack://@dupage/cms/./node_modules/core-js-pure/modules/web.dom-collections.iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/stable/array/virtual/for-each.js","webpack://@dupage/cms/./node_modules/core-js-pure/stable/instance/concat.js","webpack://@dupage/cms/./node_modules/core-js-pure/stable/instance/for-each.js","webpack://@dupage/cms/./node_modules/core-js-pure/stable/object/define-property.js","webpack://@dupage/cms/./node_modules/core-js-pure/stable/symbol/index.js","webpack://@dupage/cms/./node_modules/core-js-pure/stable/symbol/iterator.js","webpack://@dupage/cms/./node_modules/core-js-pure/stable/symbol/to-primitive.js","webpack://@dupage/cms/./node_modules/lottie-web/build/player/lottie.js","webpack://@dupage/cms/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://@dupage/cms/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://@dupage/cms/webpack/bootstrap","webpack://@dupage/cms/webpack/runtime/amd options","webpack://@dupage/cms/webpack/runtime/compat get default export","webpack://@dupage/cms/webpack/runtime/define property getters","webpack://@dupage/cms/webpack/runtime/global","webpack://@dupage/cms/webpack/runtime/hasOwnProperty shorthand","webpack://@dupage/cms/webpack/runtime/publicPath","webpack://@dupage/cms/./node_modules/@babel/runtime-corejs3/helpers/esm/typeof.js","webpack://@dupage/cms/./node_modules/@babel/runtime-corejs3/helpers/esm/toPropertyKey.js","webpack://@dupage/cms/./node_modules/@babel/runtime-corejs3/helpers/esm/toPrimitive.js","webpack://@dupage/cms/./node_modules/@babel/runtime-corejs3/helpers/esm/createClass.js","webpack://@dupage/cms/./node_modules/tslib/tslib.es6.mjs","webpack://@dupage/cms/./node_modules/@material/base/foundation.js","webpack://@dupage/cms/./node_modules/@material/base/component.js","webpack://@dupage/cms/./node_modules/@material/dom/ponyfill.js","webpack://@dupage/cms/./node_modules/@material/floating-label/constants.js","webpack://@dupage/cms/./node_modules/@material/floating-label/foundation.js","webpack://@dupage/cms/./node_modules/@material/floating-label/component.js","webpack://@dupage/cms/./node_modules/@material/line-ripple/constants.js","webpack://@dupage/cms/./node_modules/@material/line-ripple/foundation.js","webpack://@dupage/cms/./node_modules/@material/line-ripple/component.js","webpack://@dupage/cms/./node_modules/@material/menu-surface/constants.js","webpack://@dupage/cms/./node_modules/@material/list/constants.js","webpack://@dupage/cms/./node_modules/@material/dom/keyboard.js","webpack://@dupage/cms/./node_modules/@material/list/events.js","webpack://@dupage/cms/./node_modules/@material/list/typeahead.js","webpack://@dupage/cms/./node_modules/@material/list/foundation.js","webpack://@dupage/cms/./node_modules/@material/list/component.js","webpack://@dupage/cms/./node_modules/@material/menu-surface/foundation.js","webpack://@dupage/cms/./node_modules/@material/animation/util.js","webpack://@dupage/cms/./node_modules/@material/menu-surface/component.js","webpack://@dupage/cms/./node_modules/@material/menu/constants.js","webpack://@dupage/cms/./node_modules/@material/menu/foundation.js","webpack://@dupage/cms/./node_modules/@material/menu/component.js","webpack://@dupage/cms/./node_modules/@material/notched-outline/constants.js","webpack://@dupage/cms/./node_modules/@material/notched-outline/foundation.js","webpack://@dupage/cms/./node_modules/@material/notched-outline/component.js","webpack://@dupage/cms/./node_modules/@material/dom/events.js","webpack://@dupage/cms/./node_modules/@material/ripple/constants.js","webpack://@dupage/cms/./node_modules/@material/ripple/util.js","webpack://@dupage/cms/./node_modules/@material/ripple/foundation.js","webpack://@dupage/cms/./node_modules/@material/ripple/component.js","webpack://@dupage/cms/./node_modules/@material/select/constants.js","webpack://@dupage/cms/./node_modules/@material/select/foundation.js","webpack://@dupage/cms/./node_modules/@material/select/helper-text/constants.js","webpack://@dupage/cms/./node_modules/@material/select/helper-text/foundation.js","webpack://@dupage/cms/./node_modules/@material/select/helper-text/component.js","webpack://@dupage/cms/./node_modules/@material/select/icon/constants.js","webpack://@dupage/cms/./node_modules/@material/select/icon/foundation.js","webpack://@dupage/cms/./node_modules/@material/select/icon/component.js","webpack://@dupage/cms/./node_modules/@material/select/component.js","webpack://@dupage/cms/./src/json/Duly_loader_strokestofill.json","webpack://@dupage/cms/./node_modules/libphonenumber-js/metadata.min.json.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/tools/semver-compare.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/isObject.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/metadata.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/mergeArrays.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/isPossible.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/getNumberType.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/constants.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/format.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/RFC3966.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/PhoneNumber.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/isValid.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/AsYouTypeState.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/parseDigits.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/AsYouTypeParser.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/AsYouType.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","webpack://@dupage/cms/./node_modules/libphonenumber-js/min/exports/AsYouType.js","webpack://@dupage/cms/./src/pages/contact-us/index.js","webpack://@dupage/cms/./src/js/contact-us.js","webpack://@dupage/cms/./node_modules/@babel/runtime-corejs3/helpers/esm/classCallCheck.js","webpack://@dupage/cms/./src/js/recaptcha.js","webpack://@dupage/cms/./src/js/utils.js"],"sourcesContent":["'use strict';\nvar parent = require('../../stable/object/define-property');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/symbol');\n\nrequire('../../modules/esnext.function.metadata');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.metadata');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/symbol/to-primitive');\n\nmodule.exports = parent;\n","'use strict';\nrequire('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n","'use strict';\nrequire('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').forEach;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n","'use strict';\nrequire('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","'use strict';\nrequire('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","'use strict';\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","'use strict';\nrequire('../../modules/es.date.to-primitive');\nrequire('../../modules/es.symbol.to-primitive');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('toPrimitive');\n","'use strict';\nvar parent = require('../../actual/object/define-property');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.is-registered-symbol');\nrequire('../../modules/esnext.symbol.is-well-known-symbol');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.is-registered');\nrequire('../../modules/esnext.symbol.is-well-known');\nrequire('../../modules/esnext.symbol.metadata-key');\nrequire('../../modules/esnext.symbol.pattern-match');\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../actual/symbol/iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../actual/symbol/to-primitive');\n\nmodule.exports = parent;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nmodule.exports = function () { /* empty */ };\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","'use strict';\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n var n = 0;\n for (; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind methods to global for calling from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changes in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n if (isCallable(replacer)) return replacer;\n if (!isArray(replacer)) return;\n var rawLength = replacer.length;\n var keys = [];\n for (var i = 0; i < rawLength; i++) {\n var element = replacer[i];\n if (typeof element == 'string') push(keys, element);\n else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n }\n var keysLength = keys.length;\n var root = true;\n return function (key, value) {\n if (root) {\n root = false;\n return value;\n }\n if (isArray(this)) return value;\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n };\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = true;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n }\n\n return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) === 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.33.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Symbol = getBuiltIn('Symbol');\nvar keyFor = Symbol.keyFor;\nvar thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);\n\n// `Symbol.isRegisteredSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\nmodule.exports = Symbol.isRegisteredSymbol || function isRegisteredSymbol(value) {\n try {\n return keyFor(thisSymbolValue(value)) !== undefined;\n } catch (error) {\n return false;\n }\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isSymbol = require('../internals/is-symbol');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar Symbol = getBuiltIn('Symbol');\nvar $isWellKnownSymbol = Symbol.isWellKnownSymbol;\nvar getOwnPropertyNames = getBuiltIn('Object', 'getOwnPropertyNames');\nvar thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);\nvar WellKnownSymbolsStore = shared('wks');\n\nfor (var i = 0, symbolKeys = getOwnPropertyNames(Symbol), symbolKeysLength = symbolKeys.length; i < symbolKeysLength; i++) {\n // some old engines throws on access to some keys like `arguments` or `caller`\n try {\n var symbolKey = symbolKeys[i];\n if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey);\n } catch (error) { /* empty */ }\n}\n\n// `Symbol.isWellKnownSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\nmodule.exports = function isWellKnownSymbol(value) {\n if ($isWellKnownSymbol && $isWellKnownSymbol(value)) return true;\n try {\n var symbol = thisSymbolValue(value);\n for (var j = 0, keys = getOwnPropertyNames(WellKnownSymbolsStore), keysLength = keys.length; j < keysLength; j++) {\n // eslint-disable-next-line eqeqeq -- polyfilled symbols case\n if (WellKnownSymbolsStore[keys[j]] == symbol) return true;\n }\n } catch (error) { /* empty */ }\n return false;\n};\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return createIterResultObject(undefined, true);\n }\n switch (kind) {\n case 'keys': return createIterResultObject(index, false);\n case 'values': return createIterResultObject(target[index], false);\n } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')('stringify detection');\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) !== '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) !== '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","'use strict';\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = global.RangeError;\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n var descriptor = createPropertyDescriptor(1, value);\n try {\n setSymbolDescriptor(this, tag, descriptor);\n } catch (error) {\n if (!(error instanceof RangeError)) throw error;\n fallbackDefineProperty(this, tag, descriptor);\n }\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar METADATA = wellKnownSymbol('metadata');\nvar FunctionPrototype = Function.prototype;\n\n// Function.prototype[@@metadata]\n// https://github.com/tc39/proposal-decorator-metadata\nif (FunctionPrototype[METADATA] === undefined) {\n defineProperty(FunctionPrototype, METADATA, {\n value: null\n });\n}\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-async-explicit-resource-management\ndefineWellKnownSymbol('asyncDispose');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-explicit-resource-management\ndefineWellKnownSymbol('dispose');\n","'use strict';\nvar $ = require('../internals/export');\nvar isRegisteredSymbol = require('../internals/symbol-is-registered');\n\n// `Symbol.isRegisteredSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\n$({ target: 'Symbol', stat: true }, {\n isRegisteredSymbol: isRegisteredSymbol\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isRegisteredSymbol = require('../internals/symbol-is-registered');\n\n// `Symbol.isRegistered` method\n// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\n$({ target: 'Symbol', stat: true, name: 'isRegisteredSymbol' }, {\n isRegistered: isRegisteredSymbol\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isWellKnownSymbol = require('../internals/symbol-is-well-known');\n\n// `Symbol.isWellKnownSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\n$({ target: 'Symbol', stat: true, forced: true }, {\n isWellKnownSymbol: isWellKnownSymbol\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isWellKnownSymbol = require('../internals/symbol-is-well-known');\n\n// `Symbol.isWellKnown` method\n// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\n$({ target: 'Symbol', stat: true, name: 'isWellKnownSymbol', forced: true }, {\n isWellKnown: isWellKnownSymbol\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\ndefineWellKnownSymbol('replaceAll');\n","'use strict';\nrequire('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","'use strict';\nvar parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n","'use strict';\nrequire('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/for-each');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.forEach;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach)\n || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../es/symbol/to-primitive');\n\nmodule.exports = parent;\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","module.exports = require(\"core-js-pure/stable/instance/concat\");","module.exports = require(\"core-js-pure/stable/instance/for-each\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.p = \"/\";","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _Symbol$iterator from \"core-js-pure/features/symbol/iterator.js\";\nexport default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof _Symbol && o.constructor === _Symbol && o !== _Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nimport _Symbol$toPrimitive from \"core-js-pure/features/symbol/to-primitive.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[_Symbol$toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _Object$defineProperty from \"core-js-pure/features/object/define-property.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n _Object$defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n _Object$defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar MDCFoundation = /** @class */ (function () {\n function MDCFoundation(adapter) {\n if (adapter === void 0) { adapter = {}; }\n this.adapter = adapter;\n }\n Object.defineProperty(MDCFoundation, \"cssClasses\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports every\n // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'mdc-component--active'}\n return {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"strings\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'}\n return {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"numbers\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350}\n return {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"defaultAdapter\", {\n get: function () {\n // Classes extending MDCFoundation may choose to implement this getter in order to provide a convenient\n // way of viewing the necessary methods of an adapter. In the future, this could also be used for adapter\n // validation.\n return {};\n },\n enumerable: false,\n configurable: true\n });\n MDCFoundation.prototype.init = function () {\n // Subclasses should override this method to perform initialization routines (registering events, etc.)\n };\n MDCFoundation.prototype.destroy = function () {\n // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n };\n return MDCFoundation;\n}());\nexport { MDCFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFoundation;\n//# sourceMappingURL=foundation.js.map","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __read, __spreadArray } from \"tslib\";\nimport { MDCFoundation } from './foundation';\nvar MDCComponent = /** @class */ (function () {\n function MDCComponent(root, foundation) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n this.root = root;\n this.initialize.apply(this, __spreadArray([], __read(args)));\n // Note that we initialize foundation here and not within the constructor's\n // default param so that this.root is defined and can be used within the\n // foundation class.\n this.foundation =\n foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation.init();\n this.initialSyncWithDOM();\n }\n MDCComponent.attachTo = function (root) {\n // Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and\n // returns an instantiated component with its root set to that element. Also note that in the cases of\n // subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized\n // from getDefaultFoundation().\n return new MDCComponent(root, new MDCFoundation({}));\n };\n /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */\n MDCComponent.prototype.initialize = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n // Subclasses can override this to do any additional setup work that would be considered part of a\n // \"constructor\". Essentially, it is a hook into the parent constructor before the foundation is\n // initialized. Any additional arguments besides root and foundation will be passed in here.\n };\n MDCComponent.prototype.getDefaultFoundation = function () {\n // Subclasses must override this method to return a properly configured foundation class for the\n // component.\n throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' +\n 'foundation class');\n };\n MDCComponent.prototype.initialSyncWithDOM = function () {\n // Subclasses should override this method if they need to perform work to synchronize with a host DOM\n // object. An example of this would be a form control wrapper that needs to synchronize its internal state\n // to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM\n // reads/writes that would cause layout / paint, as this is called synchronously from within the constructor.\n };\n MDCComponent.prototype.destroy = function () {\n // Subclasses may implement this method to release any resources / deregister any listeners they have\n // attached. An example of this might be deregistering a resize event from the window object.\n this.foundation.destroy();\n };\n MDCComponent.prototype.listen = function (evtType, handler, options) {\n this.root.addEventListener(evtType, handler, options);\n };\n MDCComponent.prototype.unlisten = function (evtType, handler, options) {\n this.root.removeEventListener(evtType, handler, options);\n };\n /**\n * Fires a cross-browser-compatible custom event from the component root of the given type, with the given data.\n */\n MDCComponent.prototype.emit = function (evtType, evtData, shouldBubble) {\n if (shouldBubble === void 0) { shouldBubble = false; }\n var evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n bubbles: shouldBubble,\n detail: evtData,\n });\n }\n else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n this.root.dispatchEvent(evt);\n };\n return MDCComponent;\n}());\nexport { MDCComponent };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCComponent;\n//# sourceMappingURL=component.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * @fileoverview A \"ponyfill\" is a polyfill that doesn't modify the global prototype chain.\n * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC.\n */\nexport function closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n var el = element;\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n}\nexport function matches(element, selector) {\n var nativeMatches = element.matches\n || element.webkitMatchesSelector\n || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\n/**\n * Used to compute the estimated scroll width of elements. When an element is\n * hidden due to display: none; being applied to a parent element, the width is\n * returned as 0. However, the element will have a true width once no longer\n * inside a display: none context. This method computes an estimated width when\n * the element is hidden or returns the true width when the element is visble.\n * @param {Element} element the element whose width to estimate\n */\nexport function estimateScrollWidth(element) {\n // Check the offsetParent. If the element inherits display: none from any\n // parent, the offsetParent property will be null (see\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).\n // This check ensures we only clone the node when necessary.\n var htmlEl = element;\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\n var clone = htmlEl.cloneNode(true);\n clone.style.setProperty('position', 'absolute');\n clone.style.setProperty('transform', 'translate(-9999px, -9999px)');\n document.documentElement.appendChild(clone);\n var scrollWidth = clone.scrollWidth;\n document.documentElement.removeChild(clone);\n return scrollWidth;\n}\n//# sourceMappingURL=ponyfill.js.map","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport var cssClasses = {\n LABEL_FLOAT_ABOVE: 'mdc-floating-label--float-above',\n LABEL_REQUIRED: 'mdc-floating-label--required',\n LABEL_SHAKE: 'mdc-floating-label--shake',\n ROOT: 'mdc-floating-label',\n};\n//# sourceMappingURL=constants.js.map","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses } from './constants';\nvar MDCFloatingLabelFoundation = /** @class */ (function (_super) {\n __extends(MDCFloatingLabelFoundation, _super);\n function MDCFloatingLabelFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCFloatingLabelFoundation.defaultAdapter), adapter)) || this;\n _this.shakeAnimationEndHandler = function () {\n _this.handleShakeAnimationEnd();\n };\n return _this;\n }\n Object.defineProperty(MDCFloatingLabelFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCFloatingLabelFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCFloatingLabelAdapter} for typing information on parameters and return types.\n */\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function () { return undefined; },\n removeClass: function () { return undefined; },\n getWidth: function () { return 0; },\n registerInteractionHandler: function () { return undefined; },\n deregisterInteractionHandler: function () { return undefined; },\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: false,\n configurable: true\n });\n MDCFloatingLabelFoundation.prototype.init = function () {\n this.adapter.registerInteractionHandler('animationend', this.shakeAnimationEndHandler);\n };\n MDCFloatingLabelFoundation.prototype.destroy = function () {\n this.adapter.deregisterInteractionHandler('animationend', this.shakeAnimationEndHandler);\n };\n /**\n * Returns the width of the label element.\n */\n MDCFloatingLabelFoundation.prototype.getWidth = function () {\n return this.adapter.getWidth();\n };\n /**\n * Styles the label to produce a shake animation to indicate an error.\n * @param shouldShake If true, adds the shake CSS class; otherwise, removes shake class.\n */\n MDCFloatingLabelFoundation.prototype.shake = function (shouldShake) {\n var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;\n if (shouldShake) {\n this.adapter.addClass(LABEL_SHAKE);\n }\n else {\n this.adapter.removeClass(LABEL_SHAKE);\n }\n };\n /**\n * Styles the label to float or dock.\n * @param shouldFloat If true, adds the float CSS class; otherwise, removes float and shake classes to dock the label.\n */\n MDCFloatingLabelFoundation.prototype.float = function (shouldFloat) {\n var _a = MDCFloatingLabelFoundation.cssClasses, LABEL_FLOAT_ABOVE = _a.LABEL_FLOAT_ABOVE, LABEL_SHAKE = _a.LABEL_SHAKE;\n if (shouldFloat) {\n this.adapter.addClass(LABEL_FLOAT_ABOVE);\n }\n else {\n this.adapter.removeClass(LABEL_FLOAT_ABOVE);\n this.adapter.removeClass(LABEL_SHAKE);\n }\n };\n /**\n * Styles the label as required.\n * @param isRequired If true, adds an asterisk to the label, indicating that it is required.\n */\n MDCFloatingLabelFoundation.prototype.setRequired = function (isRequired) {\n var LABEL_REQUIRED = MDCFloatingLabelFoundation.cssClasses.LABEL_REQUIRED;\n if (isRequired) {\n this.adapter.addClass(LABEL_REQUIRED);\n }\n else {\n this.adapter.removeClass(LABEL_REQUIRED);\n }\n };\n MDCFloatingLabelFoundation.prototype.handleShakeAnimationEnd = function () {\n var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;\n this.adapter.removeClass(LABEL_SHAKE);\n };\n return MDCFloatingLabelFoundation;\n}(MDCFoundation));\nexport { MDCFloatingLabelFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFloatingLabelFoundation;\n//# sourceMappingURL=foundation.js.map","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { estimateScrollWidth } from '@material/dom/ponyfill';\nimport { MDCFloatingLabelFoundation } from './foundation';\nvar MDCFloatingLabel = /** @class */ (function (_super) {\n __extends(MDCFloatingLabel, _super);\n function MDCFloatingLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCFloatingLabel.attachTo = function (root) {\n return new MDCFloatingLabel(root);\n };\n /**\n * Styles the label to produce the label shake for errors.\n * @param shouldShake If true, shakes the label by adding a CSS class; otherwise, stops shaking by removing the class.\n */\n MDCFloatingLabel.prototype.shake = function (shouldShake) {\n this.foundation.shake(shouldShake);\n };\n /**\n * Styles the label to float/dock.\n * @param shouldFloat If true, floats the label by adding a CSS class; otherwise, docks it by removing the class.\n */\n MDCFloatingLabel.prototype.float = function (shouldFloat) {\n this.foundation.float(shouldFloat);\n };\n /**\n * Styles the label as required.\n * @param isRequired If true, adds an asterisk to the label, indicating that it is required.\n */\n MDCFloatingLabel.prototype.setRequired = function (isRequired) {\n this.foundation.setRequired(isRequired);\n };\n MDCFloatingLabel.prototype.getWidth = function () {\n return this.foundation.getWidth();\n };\n MDCFloatingLabel.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function (className) { return _this.root.classList.add(className); },\n removeClass: function (className) { return _this.root.classList.remove(className); },\n getWidth: function () { return estimateScrollWidth(_this.root); },\n registerInteractionHandler: function (evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterInteractionHandler: function (evtType, handler) {\n return _this.unlisten(evtType, handler);\n },\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCFloatingLabelFoundation(adapter);\n };\n return MDCFloatingLabel;\n}(MDCComponent));\nexport { MDCFloatingLabel };\n//# sourceMappingURL=component.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n LINE_RIPPLE_ACTIVE: 'mdc-line-ripple--active',\n LINE_RIPPLE_DEACTIVATING: 'mdc-line-ripple--deactivating',\n};\nexport { cssClasses };\n//# sourceMappingURL=constants.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses } from './constants';\nvar MDCLineRippleFoundation = /** @class */ (function (_super) {\n __extends(MDCLineRippleFoundation, _super);\n function MDCLineRippleFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCLineRippleFoundation.defaultAdapter), adapter)) || this;\n _this.transitionEndHandler = function (evt) {\n _this.handleTransitionEnd(evt);\n };\n return _this;\n }\n Object.defineProperty(MDCLineRippleFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCLineRippleFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCLineRippleAdapter} for typing information on parameters and return types.\n */\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function () { return undefined; },\n removeClass: function () { return undefined; },\n hasClass: function () { return false; },\n setStyle: function () { return undefined; },\n registerEventHandler: function () { return undefined; },\n deregisterEventHandler: function () { return undefined; },\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: false,\n configurable: true\n });\n MDCLineRippleFoundation.prototype.init = function () {\n this.adapter.registerEventHandler('transitionend', this.transitionEndHandler);\n };\n MDCLineRippleFoundation.prototype.destroy = function () {\n this.adapter.deregisterEventHandler('transitionend', this.transitionEndHandler);\n };\n MDCLineRippleFoundation.prototype.activate = function () {\n this.adapter.removeClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n this.adapter.addClass(cssClasses.LINE_RIPPLE_ACTIVE);\n };\n MDCLineRippleFoundation.prototype.setRippleCenter = function (xCoordinate) {\n this.adapter.setStyle('transform-origin', xCoordinate + \"px center\");\n };\n MDCLineRippleFoundation.prototype.deactivate = function () {\n this.adapter.addClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n };\n MDCLineRippleFoundation.prototype.handleTransitionEnd = function (evt) {\n // Wait for the line ripple to be either transparent or opaque\n // before emitting the animation end event\n var isDeactivating = this.adapter.hasClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n if (evt.propertyName === 'opacity') {\n if (isDeactivating) {\n this.adapter.removeClass(cssClasses.LINE_RIPPLE_ACTIVE);\n this.adapter.removeClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n }\n }\n };\n return MDCLineRippleFoundation;\n}(MDCFoundation));\nexport { MDCLineRippleFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCLineRippleFoundation;\n//# sourceMappingURL=foundation.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { MDCLineRippleFoundation } from './foundation';\nvar MDCLineRipple = /** @class */ (function (_super) {\n __extends(MDCLineRipple, _super);\n function MDCLineRipple() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCLineRipple.attachTo = function (root) {\n return new MDCLineRipple(root);\n };\n /**\n * Activates the line ripple\n */\n MDCLineRipple.prototype.activate = function () {\n this.foundation.activate();\n };\n /**\n * Deactivates the line ripple\n */\n MDCLineRipple.prototype.deactivate = function () {\n this.foundation.deactivate();\n };\n /**\n * Sets the transform origin given a user's click location.\n * The `rippleCenter` is the x-coordinate of the middle of the ripple.\n */\n MDCLineRipple.prototype.setRippleCenter = function (xCoordinate) {\n this.foundation.setRippleCenter(xCoordinate);\n };\n MDCLineRipple.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function (className) { return _this.root.classList.add(className); },\n removeClass: function (className) { return _this.root.classList.remove(className); },\n hasClass: function (className) { return _this.root.classList.contains(className); },\n setStyle: function (propertyName, value) { return _this.root.style.setProperty(propertyName, value); },\n registerEventHandler: function (evtType, handler) { return _this.listen(evtType, handler); },\n deregisterEventHandler: function (evtType, handler) { return _this.unlisten(evtType, handler); },\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCLineRippleFoundation(adapter);\n };\n return MDCLineRipple;\n}(MDCComponent));\nexport { MDCLineRipple };\n//# sourceMappingURL=component.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n ANCHOR: 'mdc-menu-surface--anchor',\n ANIMATING_CLOSED: 'mdc-menu-surface--animating-closed',\n ANIMATING_OPEN: 'mdc-menu-surface--animating-open',\n FIXED: 'mdc-menu-surface--fixed',\n IS_OPEN_BELOW: 'mdc-menu-surface--is-open-below',\n OPEN: 'mdc-menu-surface--open',\n ROOT: 'mdc-menu-surface',\n};\n// tslint:disable:object-literal-sort-keys\nvar strings = {\n CLOSED_EVENT: 'MDCMenuSurface:closed',\n CLOSING_EVENT: 'MDCMenuSurface:closing',\n OPENED_EVENT: 'MDCMenuSurface:opened',\n OPENING_EVENT: 'MDCMenuSurface:opening',\n FOCUSABLE_ELEMENTS: [\n 'button:not(:disabled)',\n '[href]:not([aria-disabled=\"true\"])',\n 'input:not(:disabled)',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]:not([tabindex=\"-1\"]):not([aria-disabled=\"true\"])',\n ].join(', '),\n};\n// tslint:enable:object-literal-sort-keys\nvar numbers = {\n /** Total duration of menu-surface open animation. */\n TRANSITION_OPEN_DURATION: 120,\n /** Total duration of menu-surface close animation. */\n TRANSITION_CLOSE_DURATION: 75,\n /**\n * Margin left to the edge of the viewport when menu-surface is at maximum\n * possible height. Also used as a viewport margin.\n */\n MARGIN_TO_EDGE: 32,\n /**\n * Ratio of anchor width to menu-surface width for switching from corner\n * positioning to center positioning.\n */\n ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO: 0.67,\n /**\n * Amount of time to wait before restoring focus when closing the menu\n * surface. This is important because if a touch event triggered the menu\n * close, and the subsequent mouse event occurs after focus is restored, then\n * the restored focus would be lost.\n */\n TOUCH_EVENT_WAIT_MS: 30,\n};\n/**\n * Enum for bits in the {@see Corner) bitmap.\n */\nvar CornerBit;\n(function (CornerBit) {\n CornerBit[CornerBit[\"BOTTOM\"] = 1] = \"BOTTOM\";\n CornerBit[CornerBit[\"CENTER\"] = 2] = \"CENTER\";\n CornerBit[CornerBit[\"RIGHT\"] = 4] = \"RIGHT\";\n CornerBit[CornerBit[\"FLIP_RTL\"] = 8] = \"FLIP_RTL\";\n})(CornerBit || (CornerBit = {}));\n/**\n * Enum for representing an element corner for positioning the menu-surface.\n *\n * The START constants map to LEFT if element directionality is left\n * to right and RIGHT if the directionality is right to left.\n * Likewise END maps to RIGHT or LEFT depending on the directionality.\n */\nvar Corner;\n(function (Corner) {\n Corner[Corner[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n Corner[Corner[\"TOP_RIGHT\"] = 4] = \"TOP_RIGHT\";\n Corner[Corner[\"BOTTOM_LEFT\"] = 1] = \"BOTTOM_LEFT\";\n Corner[Corner[\"BOTTOM_RIGHT\"] = 5] = \"BOTTOM_RIGHT\";\n Corner[Corner[\"TOP_START\"] = 8] = \"TOP_START\";\n Corner[Corner[\"TOP_END\"] = 12] = \"TOP_END\";\n Corner[Corner[\"BOTTOM_START\"] = 9] = \"BOTTOM_START\";\n Corner[Corner[\"BOTTOM_END\"] = 13] = \"BOTTOM_END\";\n})(Corner || (Corner = {}));\nexport { cssClasses, strings, numbers, CornerBit, Corner };\n//# sourceMappingURL=constants.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar _a, _b;\nvar cssClasses = {\n LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated',\n LIST_ITEM_CLASS: 'mdc-list-item',\n LIST_ITEM_DISABLED_CLASS: 'mdc-list-item--disabled',\n LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',\n LIST_ITEM_TEXT_CLASS: 'mdc-list-item__text',\n LIST_ITEM_PRIMARY_TEXT_CLASS: 'mdc-list-item__primary-text',\n ROOT: 'mdc-list',\n};\nvar evolutionClassNameMap = (_a = {},\n _a[\"\" + cssClasses.LIST_ITEM_ACTIVATED_CLASS] = 'mdc-list-item--activated',\n _a[\"\" + cssClasses.LIST_ITEM_CLASS] = 'mdc-list-item',\n _a[\"\" + cssClasses.LIST_ITEM_DISABLED_CLASS] = 'mdc-list-item--disabled',\n _a[\"\" + cssClasses.LIST_ITEM_SELECTED_CLASS] = 'mdc-list-item--selected',\n _a[\"\" + cssClasses.LIST_ITEM_PRIMARY_TEXT_CLASS] = 'mdc-list-item__primary-text',\n _a[\"\" + cssClasses.ROOT] = 'mdc-list',\n _a);\nvar deprecatedClassNameMap = (_b = {},\n _b[\"\" + cssClasses.LIST_ITEM_ACTIVATED_CLASS] = 'mdc-deprecated-list-item--activated',\n _b[\"\" + cssClasses.LIST_ITEM_CLASS] = 'mdc-deprecated-list-item',\n _b[\"\" + cssClasses.LIST_ITEM_DISABLED_CLASS] = 'mdc-deprecated-list-item--disabled',\n _b[\"\" + cssClasses.LIST_ITEM_SELECTED_CLASS] = 'mdc-deprecated-list-item--selected',\n _b[\"\" + cssClasses.LIST_ITEM_TEXT_CLASS] = 'mdc-deprecated-list-item__text',\n _b[\"\" + cssClasses.LIST_ITEM_PRIMARY_TEXT_CLASS] = 'mdc-deprecated-list-item__primary-text',\n _b[\"\" + cssClasses.ROOT] = 'mdc-deprecated-list',\n _b);\nvar strings = {\n ACTION_EVENT: 'MDCList:action',\n SELECTION_CHANGE_EVENT: 'MDCList:selectionChange',\n ARIA_CHECKED: 'aria-checked',\n ARIA_CHECKED_CHECKBOX_SELECTOR: '[role=\"checkbox\"][aria-checked=\"true\"]',\n ARIA_CHECKED_RADIO_SELECTOR: '[role=\"radio\"][aria-checked=\"true\"]',\n ARIA_CURRENT: 'aria-current',\n ARIA_DISABLED: 'aria-disabled',\n ARIA_ORIENTATION: 'aria-orientation',\n ARIA_ORIENTATION_HORIZONTAL: 'horizontal',\n ARIA_ROLE_CHECKBOX_SELECTOR: '[role=\"checkbox\"]',\n ARIA_SELECTED: 'aria-selected',\n ARIA_INTERACTIVE_ROLES_SELECTOR: '[role=\"listbox\"], [role=\"menu\"]',\n ARIA_MULTI_SELECTABLE_SELECTOR: '[aria-multiselectable=\"true\"]',\n CHECKBOX_RADIO_SELECTOR: 'input[type=\"checkbox\"], input[type=\"radio\"]',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]',\n CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: \"\\n .\" + cssClasses.LIST_ITEM_CLASS + \" button:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" a,\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" button:not(:disabled),\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" a\\n \",\n DEPRECATED_SELECTOR: '.mdc-deprecated-list',\n FOCUSABLE_CHILD_ELEMENTS: \"\\n .\" + cssClasses.LIST_ITEM_CLASS + \" button:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" a,\\n .\" + cssClasses.LIST_ITEM_CLASS + \" input[type=\\\"radio\\\"]:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" input[type=\\\"checkbox\\\"]:not(:disabled),\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" button:not(:disabled),\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" a,\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" input[type=\\\"radio\\\"]:not(:disabled),\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" input[type=\\\"checkbox\\\"]:not(:disabled)\\n \",\n RADIO_SELECTOR: 'input[type=\"radio\"]',\n SELECTED_ITEM_SELECTOR: '[aria-selected=\"true\"], [aria-current=\"true\"]',\n};\nvar numbers = {\n UNSET_INDEX: -1,\n TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS: 300\n};\nvar evolutionAttribute = 'evolution';\nexport { strings, cssClasses, numbers, deprecatedClassNameMap, evolutionAttribute, evolutionClassNameMap };\n//# sourceMappingURL=constants.js.map","/**\n * @license\n * Copyright 2020 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * KEY provides normalized string values for keys.\n */\nexport var KEY = {\n UNKNOWN: 'Unknown',\n BACKSPACE: 'Backspace',\n ENTER: 'Enter',\n SPACEBAR: 'Spacebar',\n PAGE_UP: 'PageUp',\n PAGE_DOWN: 'PageDown',\n END: 'End',\n HOME: 'Home',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_UP: 'ArrowUp',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_DOWN: 'ArrowDown',\n DELETE: 'Delete',\n ESCAPE: 'Escape',\n TAB: 'Tab',\n};\nvar normalizedKeys = new Set();\n// IE11 has no support for new Map with iterable so we need to initialize this\n// by hand.\nnormalizedKeys.add(KEY.BACKSPACE);\nnormalizedKeys.add(KEY.ENTER);\nnormalizedKeys.add(KEY.SPACEBAR);\nnormalizedKeys.add(KEY.PAGE_UP);\nnormalizedKeys.add(KEY.PAGE_DOWN);\nnormalizedKeys.add(KEY.END);\nnormalizedKeys.add(KEY.HOME);\nnormalizedKeys.add(KEY.ARROW_LEFT);\nnormalizedKeys.add(KEY.ARROW_UP);\nnormalizedKeys.add(KEY.ARROW_RIGHT);\nnormalizedKeys.add(KEY.ARROW_DOWN);\nnormalizedKeys.add(KEY.DELETE);\nnormalizedKeys.add(KEY.ESCAPE);\nnormalizedKeys.add(KEY.TAB);\nvar KEY_CODE = {\n BACKSPACE: 8,\n ENTER: 13,\n SPACEBAR: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n DELETE: 46,\n ESCAPE: 27,\n TAB: 9,\n};\nvar mappedKeyCodes = new Map();\n// IE11 has no support for new Map with iterable so we need to initialize this\n// by hand.\nmappedKeyCodes.set(KEY_CODE.BACKSPACE, KEY.BACKSPACE);\nmappedKeyCodes.set(KEY_CODE.ENTER, KEY.ENTER);\nmappedKeyCodes.set(KEY_CODE.SPACEBAR, KEY.SPACEBAR);\nmappedKeyCodes.set(KEY_CODE.PAGE_UP, KEY.PAGE_UP);\nmappedKeyCodes.set(KEY_CODE.PAGE_DOWN, KEY.PAGE_DOWN);\nmappedKeyCodes.set(KEY_CODE.END, KEY.END);\nmappedKeyCodes.set(KEY_CODE.HOME, KEY.HOME);\nmappedKeyCodes.set(KEY_CODE.ARROW_LEFT, KEY.ARROW_LEFT);\nmappedKeyCodes.set(KEY_CODE.ARROW_UP, KEY.ARROW_UP);\nmappedKeyCodes.set(KEY_CODE.ARROW_RIGHT, KEY.ARROW_RIGHT);\nmappedKeyCodes.set(KEY_CODE.ARROW_DOWN, KEY.ARROW_DOWN);\nmappedKeyCodes.set(KEY_CODE.DELETE, KEY.DELETE);\nmappedKeyCodes.set(KEY_CODE.ESCAPE, KEY.ESCAPE);\nmappedKeyCodes.set(KEY_CODE.TAB, KEY.TAB);\nvar navigationKeys = new Set();\n// IE11 has no support for new Set with iterable so we need to initialize this\n// by hand.\nnavigationKeys.add(KEY.PAGE_UP);\nnavigationKeys.add(KEY.PAGE_DOWN);\nnavigationKeys.add(KEY.END);\nnavigationKeys.add(KEY.HOME);\nnavigationKeys.add(KEY.ARROW_LEFT);\nnavigationKeys.add(KEY.ARROW_UP);\nnavigationKeys.add(KEY.ARROW_RIGHT);\nnavigationKeys.add(KEY.ARROW_DOWN);\n/**\n * normalizeKey returns the normalized string for a navigational action.\n */\nexport function normalizeKey(evt) {\n var key = evt.key;\n // If the event already has a normalized key, return it\n if (normalizedKeys.has(key)) {\n return key;\n }\n // tslint:disable-next-line:deprecation\n var mappedKey = mappedKeyCodes.get(evt.keyCode);\n if (mappedKey) {\n return mappedKey;\n }\n return KEY.UNKNOWN;\n}\n/**\n * isNavigationEvent returns whether the event is a navigation event\n */\nexport function isNavigationEvent(evt) {\n return navigationKeys.has(normalizeKey(evt));\n}\n//# sourceMappingURL=keyboard.js.map","/**\n * @license\n * Copyright 2020 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];\n/**\n * Ensures that preventDefault is only called if the containing element\n * doesn't consume the event, and it will cause an unintended scroll.\n *\n * @param evt keyboard event to be prevented.\n */\nexport var preventDefaultEvent = function (evt) {\n var target = evt.target;\n if (!target) {\n return;\n }\n var tagName = (\"\" + target.tagName).toLowerCase();\n if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {\n evt.preventDefault();\n }\n};\n//# sourceMappingURL=events.js.map","/**\n * @license\n * Copyright 2020 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { normalizeKey } from '@material/dom/keyboard';\nimport { numbers } from './constants';\nimport { preventDefaultEvent } from './events';\n/**\n * Initializes a state object for typeahead. Use the same reference for calls to\n * typeahead functions.\n *\n * @return The current state of the typeahead process. Each state reference\n * represents a typeahead instance as the reference is typically mutated\n * in-place.\n */\nexport function initState() {\n var state = {\n bufferClearTimeout: 0,\n currentFirstChar: '',\n sortedIndexCursor: 0,\n typeaheadBuffer: '',\n };\n return state;\n}\n/**\n * Initializes typeahead state by indexing the current list items by primary\n * text into the sortedIndexByFirstChar data structure.\n *\n * @param listItemCount numer of items in the list\n * @param getPrimaryTextByItemIndex function that returns the primary text at a\n * given index\n *\n * @return Map that maps the first character of the primary text to the full\n * list text and it's index\n */\nexport function initSortedIndex(listItemCount, getPrimaryTextByItemIndex) {\n var sortedIndexByFirstChar = new Map();\n // Aggregate item text to index mapping\n for (var i = 0; i < listItemCount; i++) {\n var primaryText = getPrimaryTextByItemIndex(i).trim();\n if (!primaryText) {\n continue;\n }\n var firstChar = primaryText[0].toLowerCase();\n if (!sortedIndexByFirstChar.has(firstChar)) {\n sortedIndexByFirstChar.set(firstChar, []);\n }\n sortedIndexByFirstChar.get(firstChar).push({ text: primaryText.toLowerCase(), index: i });\n }\n // Sort the mapping\n // TODO(b/157162694): Investigate replacing forEach with Map.values()\n sortedIndexByFirstChar.forEach(function (values) {\n values.sort(function (first, second) {\n return first.index - second.index;\n });\n });\n return sortedIndexByFirstChar;\n}\n/**\n * Given the next desired character from the user, it attempts to find the next\n * list option matching the buffer. Wraps around if at the end of options.\n *\n * @param opts Options and accessors\n * - nextChar - the next character to match against items\n * - sortedIndexByFirstChar - output of `initSortedIndex(...)`\n * - focusedItemIndex - the index of the currently focused item\n * - focusItemAtIndex - function that focuses a list item at given index\n * - skipFocus - whether or not to focus the matched item\n * - isItemAtIndexDisabled - function that determines whether an item at a\n * given index is disabled\n * @param state The typeahead state instance. See `initState`.\n *\n * @return The index of the matched item, or -1 if no match.\n */\nexport function matchItem(opts, state) {\n var nextChar = opts.nextChar, focusItemAtIndex = opts.focusItemAtIndex, sortedIndexByFirstChar = opts.sortedIndexByFirstChar, focusedItemIndex = opts.focusedItemIndex, skipFocus = opts.skipFocus, isItemAtIndexDisabled = opts.isItemAtIndexDisabled;\n clearTimeout(state.bufferClearTimeout);\n state.bufferClearTimeout = setTimeout(function () {\n clearBuffer(state);\n }, numbers.TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS);\n state.typeaheadBuffer = state.typeaheadBuffer + nextChar;\n var index;\n if (state.typeaheadBuffer.length === 1) {\n index = matchFirstChar(sortedIndexByFirstChar, focusedItemIndex, isItemAtIndexDisabled, state);\n }\n else {\n index = matchAllChars(sortedIndexByFirstChar, isItemAtIndexDisabled, state);\n }\n if (index !== -1 && !skipFocus) {\n focusItemAtIndex(index);\n }\n return index;\n}\n/**\n * Matches the user's single input character in the buffer to the\n * next option that begins with such character. Wraps around if at\n * end of options. Returns -1 if no match is found.\n */\nfunction matchFirstChar(sortedIndexByFirstChar, focusedItemIndex, isItemAtIndexDisabled, state) {\n var firstChar = state.typeaheadBuffer[0];\n var itemsMatchingFirstChar = sortedIndexByFirstChar.get(firstChar);\n if (!itemsMatchingFirstChar) {\n return -1;\n }\n // Has the same firstChar been recently matched?\n // Also, did starting index remain the same between key presses?\n // If both hold true, simply increment index.\n if (firstChar === state.currentFirstChar &&\n itemsMatchingFirstChar[state.sortedIndexCursor].index ===\n focusedItemIndex) {\n state.sortedIndexCursor =\n (state.sortedIndexCursor + 1) % itemsMatchingFirstChar.length;\n var newIndex = itemsMatchingFirstChar[state.sortedIndexCursor].index;\n if (!isItemAtIndexDisabled(newIndex)) {\n return newIndex;\n }\n }\n // If we're here, it means one of the following happened:\n // - either firstChar or startingIndex has changed, invalidating the\n // cursor.\n // - The next item of typeahead is disabled, so we have to look further.\n state.currentFirstChar = firstChar;\n var newCursorPosition = -1;\n var cursorPosition;\n // Find the first non-disabled item as a fallback.\n for (cursorPosition = 0; cursorPosition < itemsMatchingFirstChar.length; cursorPosition++) {\n if (!isItemAtIndexDisabled(itemsMatchingFirstChar[cursorPosition].index)) {\n newCursorPosition = cursorPosition;\n break;\n }\n }\n // Advance cursor to first item matching the firstChar that is positioned\n // after starting item. Cursor is unchanged from fallback if there's no\n // such item.\n for (; cursorPosition < itemsMatchingFirstChar.length; cursorPosition++) {\n if (itemsMatchingFirstChar[cursorPosition].index > focusedItemIndex &&\n !isItemAtIndexDisabled(itemsMatchingFirstChar[cursorPosition].index)) {\n newCursorPosition = cursorPosition;\n break;\n }\n }\n if (newCursorPosition !== -1) {\n state.sortedIndexCursor = newCursorPosition;\n return itemsMatchingFirstChar[state.sortedIndexCursor].index;\n }\n return -1;\n}\n/**\n * Attempts to find the next item that matches all of the typeahead buffer.\n * Wraps around if at end of options. Returns -1 if no match is found.\n */\nfunction matchAllChars(sortedIndexByFirstChar, isItemAtIndexDisabled, state) {\n var firstChar = state.typeaheadBuffer[0];\n var itemsMatchingFirstChar = sortedIndexByFirstChar.get(firstChar);\n if (!itemsMatchingFirstChar) {\n return -1;\n }\n // Do nothing if text already matches\n var startingItem = itemsMatchingFirstChar[state.sortedIndexCursor];\n if (startingItem.text.lastIndexOf(state.typeaheadBuffer, 0) === 0 &&\n !isItemAtIndexDisabled(startingItem.index)) {\n return startingItem.index;\n }\n // Find next item that matches completely; if no match, we'll eventually\n // loop around to same position\n var cursorPosition = (state.sortedIndexCursor + 1) % itemsMatchingFirstChar.length;\n var nextCursorPosition = -1;\n while (cursorPosition !== state.sortedIndexCursor) {\n var currentItem = itemsMatchingFirstChar[cursorPosition];\n var matches = currentItem.text.lastIndexOf(state.typeaheadBuffer, 0) === 0;\n var isEnabled = !isItemAtIndexDisabled(currentItem.index);\n if (matches && isEnabled) {\n nextCursorPosition = cursorPosition;\n break;\n }\n cursorPosition = (cursorPosition + 1) % itemsMatchingFirstChar.length;\n }\n if (nextCursorPosition !== -1) {\n state.sortedIndexCursor = nextCursorPosition;\n return itemsMatchingFirstChar[state.sortedIndexCursor].index;\n }\n return -1;\n}\n/**\n * Whether or not the given typeahead instaance state is currently typing.\n *\n * @param state The typeahead state instance. See `initState`.\n */\nexport function isTypingInProgress(state) {\n return state.typeaheadBuffer.length > 0;\n}\n/**\n * Clears the typeahaed buffer so that it resets item matching to the first\n * character.\n *\n * @param state The typeahead state instance. See `initState`.\n */\nexport function clearBuffer(state) {\n state.typeaheadBuffer = '';\n}\n/**\n * Given a keydown event, it calculates whether or not to automatically focus a\n * list item depending on what was typed mimicing the typeahead functionality of\n * a standard