if (t >= u.t - this.offsetTime) p = 1; else if (t < c.t - this.offsetTime) p = 0; else { var b; c.__fnct ? b = c.__fnct : (b = W.getBezierEasing(c.o.x, c.o.y, c.i.x, c.i.y).get, c.__fnct = b), p = b((t - (c.t - this.offsetTime)) / (u.t - this.offsetTime - (c.t - this.offsetTime))) } a = u.s ? u.s[0] : c.e[0] } i = c.s[0] } for (o = e._length, l = i.i[0].length, s.lastIndex = d, n = 0; n < o; n += 1) for (h = 0; h < l; h += 1) f = r ? i.i[n][h] : i.i[n][h] + (a.i[n][h] - i.i[n][h]) * p, e.i[n][h] = f, f = r ? i.o[n][h] : i.o[n][h] + (a.o[n][h] - i.o[n][h]) * p, e.o[n][h] = f, f = r ? i.v[n][h] : i.v[n][h] + (a.v[n][h] - i.v[n][h]) * p, e.v[n][h] = f } function r() { this.paths = this.localShapeCollection } function e(t) { (function(t, e) { if (t._length !== e._length || t.c !== e.c) return !1; var s, i = t._length; for (s = 0; s < i; s += 1) if (t.v[s][0] !== e.v[s][0] || t.v[s][1] !== e.v[s][1] || t.o[s][0] !== e.o[s][0] || t.o[s][1] !== e.o[s][1] || t.i[s][0] !== e.i[s][0] || t.i[s][1] !== e.i[s][1]) return !1; return !0 })(this.v, t) || (this.v = Dt.clone(t), this.localShapeCollection.releaseShapes(), this.localShapeCollection.addShape(this.v), this._mdf = !0, this.paths = this.localShapeCollection) } function s() { if (this.elem.globalData.frameId !== this.frameId) if (this.effectsSequence.length) if (this.lock) this.setVValue(this.pv); else { var t, e; this.lock = !0, this._mdf = !1, t = this.kf ? this.pv : this.data.ks ? this.data.ks.k : this.data.pt.k; var s = this.effectsSequence.length; for (e = 0; e < s; e += 1) t = this.effectsSequence[e](t); this.setVValue(t), this.lock = !1, this.frameId = this.elem.globalData.frameId } else this._mdf = !1 } function n(t, e, s) { this.propType = 'shape', this.comp = t.comp, this.container = t, this.elem = t, this.data = e, this.k = !1, this.kf = !1, this._mdf = !1; var i = 3 === s ? e.pt.k : e.ks.k; this.v = Dt.clone(i), this.pv = Dt.clone(this.v), this.localShapeCollection = xt.newShapeCollection(), this.paths = this.localShapeCollection, this.paths.addShape(this.v), this.reset = r, this.effectsSequence = [] } function i(t) { this.effectsSequence.push(t), this.container.addDynamicProperty(this) } function h(t, e, s) { this.propType = 'shape', this.comp = t.comp, this.elem = t, this.container = t, this.offsetTime = t.data.st, this.keyframes = 3 === s ? e.pt.k : e.ks.k, this.k = !0, this.kf = !0; var i = this.keyframes[0].s[0].i.length; this.v = Dt.newElement(), this.v.setPathData(this.keyframes[0].s[0].c, i), this.pv = Dt.clone(this.v), this.localShapeCollection = xt.newShapeCollection(), this.paths = this.localShapeCollection, this.paths.addShape(this.v), this.lastFrame = a, this.reset = r, this._caching = {lastFrame: a, lastIndex: 0}, this.effectsSequence = [function() { var t = this.comp.renderedFrame - this.offsetTime, e = this.keyframes[0].t - this.offsetTime, s = this.keyframes[this.keyframes.length - 1].t - this.offsetTime, i = this._caching.lastFrame; return i !== a && (i < e && t < e || s < i && s < t) || (this._caching.lastIndex = i < t ? this._caching.lastIndex : 0, this.interpolateShape(t, this.pv, this._caching)), this._caching.lastFrame = t, this.pv }.bind(this)] } n.prototype.interpolateShape = t, n.prototype.getValue = s, n.prototype.setVValue = e, n.prototype.addEffect = i, h.prototype.getValue = s, h.prototype.interpolateShape = t, h.prototype.setVValue = e, h.prototype.addEffect = i; var o = function() { var n = v; function t(t, e) { this.v = Dt.newElement(), this.v.setPathData(!0, 4), this.localShapeCollection = xt.newShapeCollection(), this.paths = this.localShapeCollection, this.localShapeCollection.addShape(this.v), this.d = e.d, this.elem = t, this.comp = t.comp, this.frameId = -1, this.initDynamicPropertyContainer(t), this.p = R.getProp(t, e.p, 1, 0, this), this.s = R.getProp(t, e.s, 1, 0, this), this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertEllToPath()) } return t.prototype = { reset: r, getValue: function() { this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertEllToPath()) }, convertEllToPath: function() { var t = this.p.v[0], e = this.p.v[1], s = this.s.v[0] / 2, i = this.s.v[1] / 2, a = 3 !== this.d, r = this.v; r.v[0][0] = t, r.v[0][1] = e - i, r.v[1][0] = a ? t + s : t - s, r.v[1][1] = e, r.v[2][0] = t, r.v[2][1] = e + i, r.v[3][0] = a ? t - s : t + s, r.v[3][1] = e, r.i[0][0] = a ? t - s * n : t + s * n, r.i[0][1] = e - i, r.i[1][0] = a ? t + s : t - s, r.i[1][1] = e - i * n, r.i[2][0] = a ? t + s * n : t - s * n, r.i[2][1] = e + i, r.i[3][0] = a ? t - s : t + s, r.i[3][1] = e + i * n, r.o[0][0] = a ? t + s * n : t - s * n, r.o[0][1] = e - i, r.o[1][0] = a ? t + s : t - s, r.o[1][1] = e + i * n, r.o[2][0] = a ? t - s * n : t + s * n, r.o[2][1] = e + i, r.o[3][0] = a ? t - s : t + s, r.o[3][1] = e - i * n } }, M([F], t), t }(), l = function() { function t(t, e) { this.v = Dt.newElement(), this.v.setPathData(!0, 0), this.elem = t, this.comp = t.comp, this.data = e, this.frameId = -1, this.d = e.d, this.initDynamicPropertyContainer(t), 1 === e.sy ? (this.ir = R.getProp(t, e.ir, 0, 0, this), this.is = R.getProp(t, e.is, 0, .01, this), this.convertToPath = this.convertStarToPath) : this.convertToPath = this.convertPolygonToPath, this.pt = R.getProp(t, e.pt, 0, 0, this), this.p = R.getProp(t, e.p, 1, 0, this), this.r = R.getProp(t, e.r, 0, B, this), this.or = R.getProp(t, e.or, 0, 0, this), this.os = R.getProp(t, e.os, 0, .01, this), this.localShapeCollection = xt.newShapeCollection(), this.localShapeCollection.addShape(this.v), this.paths = this.localShapeCollection, this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertToPath()) } return t.prototype = { reset: r, getValue: function() { this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertToPath()) }, convertStarToPath: function() { var t, e, s, i, a = 2 * Math.floor(this.pt.v), r = 2 * Math.PI / a, n = !0, h = this.or.v, o = this.ir.v, l = this.os.v, p = this.is.v, f = 2 * Math.PI * h / (2 * a), d = 2 * Math.PI * o / (2 * a), m = -Math.PI / 2; m += this.r.v; var c = 3 === this.data.d ? -1 : 1; for (t = this.v._length = 0; t < a; t += 1) { s = n ? l : p, i = n ? f : d; var u = (e = n ? h : o) * Math.cos(m), g = e * Math.sin(m), y = 0 === u && 0 === g ? 0 : g / Math.sqrt(u * u + g * g), v = 0 === u && 0 === g ? 0 : -u / Math.sqrt(u * u + g * g); u += +this.p.v[0], g += +this.p.v[1], this.v.setTripleAt( u, g, u - y * i * s * c, g - v * i * s * c, u + y * i * s * c, g + v * i * s * c, t, !0), n = !n, m += r * c } }, convertPolygonToPath: function() { var t, e = Math.floor(this.pt.v), s = 2 * Math.PI / e, i = this.or.v, a = this.os.v, r = 2 * Math.PI * i / (4 * e), n = .5 * -Math.PI, h = 3 === this.data.d ? -1 : 1; for (n += this.r.v, t = this.v._length = 0; t < e; t += 1) { var o = i * Math.cos(n), l = i * Math.sin(n), p = 0 === o && 0 === l ? 0 : l / Math.sqrt(o * o + l * l), f = 0 === o && 0 === l ? 0 : -o / Math.sqrt(o * o + l * l); o += +this.p.v[0], l += +this.p.v[1], this.v.setTripleAt( o, l, o - p * r * a * h, l - f * r * a * h, o + p * r * a * h, l + f * r * a * h, t, !0), n += s * h } this.paths.length = 0, this.paths[0] = this.v } }, M([F], t), t }(), p = function() { function t(t, e) { this.v = Dt.newElement(), this.v.c = !0, this.localShapeCollection = xt.newShapeCollection(), this.localShapeCollection.addShape(this.v), this.paths = this.localShapeCollection, this.elem = t, this.comp = t.comp, this.frameId = -1, this.d = e.d, this.initDynamicPropertyContainer(t), this.p = R.getProp(t, e.p, 1, 0, this), this.s = R.getProp(t, e.s, 1, 0, this), this.r = R.getProp(t, e.r, 0, 0, this), this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertRectToPath()) } return t.prototype = { convertRectToPath: function() { var t = this.p.v[0], e = this.p.v[1], s = this.s.v[0] / 2, i = this.s.v[1] / 2, a = d(s, i, this.r.v), r = a * (1 - v); this.v._length = 0, 2 === this.d || 1 === this.d ? (this.v.setTripleAt( t + s, e - i + a, t + s, e - i + a, t + s, e - i + r, 0, !0), this.v.setTripleAt( t + s, e + i - a, t + s, e + i - r, t + s, e + i - a, 1, !0), 0 !== a ? (this.v.setTripleAt( t + s - a, e + i, t + s - a, e + i, t + s - r, e + i, 2, !0), this.v.setTripleAt( t - s + a, e + i, t - s + r, e + i, t - s + a, e + i, 3, !0), this.v.setTripleAt( t - s, e + i - a, t - s, e + i - a, t - s, e + i - r, 4, !0), this.v.setTripleAt( t - s, e - i + a, t - s, e - i + r, t - s, e - i + a, 5, !0), this.v.setTripleAt( t - s + a, e - i, t - s + a, e - i, t - s + r, e - i, 6, !0), this.v.setTripleAt( t + s - a, e - i, t + s - r, e - i, t + s - a, e - i, 7, !0)) : (this.v.setTripleAt( t - s, e + i, t - s + r, e + i, t - s, e + i, 2), this.v.setTripleAt( t - s, e - i, t - s, e - i + r, t - s, e - i, 3))) : (this.v.setTripleAt( t + s, e - i + a, t + s, e - i + r, t + s, e - i + a, 0, !0), 0 !== a ? (this.v.setTripleAt( t + s - a, e - i, t + s - a, e - i, t + s - r, e - i, 1, !0), this.v.setTripleAt( t - s + a, e - i, t - s + r, e - i, t - s + a, e - i, 2, !0), this.v.setTripleAt( t - s, e - i + a, t - s, e - i + a, t - s, e - i + r, 3, !0), this.v.setTripleAt( t - s, e + i - a, t - s, e + i - r, t - s, e + i - a, 4, !0), this.v.setTripleAt( t - s + a, e + i, t - s + a, e + i, t - s + r, e + i, 5, !0), this.v.setTripleAt( t + s - a, e + i, t + s - r, e + i, t + s - a, e + i, 6, !0), this.v.setTripleAt( t + s, e + i - a, t + s, e + i - a, t + s, e + i - r, 7, !0)) : (this.v.setTripleAt( t - s, e - i, t - s + r, e - i, t - s, e - i, 1, !0), this.v.setTripleAt( t - s, e + i, t - s, e + i - r, t - s, e + i, 2, !0), this.v.setTripleAt( t + s, e + i, t + s - r, e + i, t + s, e + i, 3, !0))) }, getValue: function() { this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertRectToPath()) }, reset: r }, M([F], t), t }(); var f = { getShapeProp: function(t, e, s) { var i; return 3 === s || 4 === s ? i = (3 === s ? e.pt : e.ks).k.length ? new h(t, e, s) : new n(t, e, s) : 5 === s ? i = new p(t, e) : 6 === s ? i = new o(t, e) : 7 === s && (i = new l(t, e)), i.k && t.addDynamicProperty(i), i }, getConstructorFunction: function() { return n }, getKeyframedConstructorFunction: function() { return h } }; return f }(), Y = (X = {}, (O = {}).registerModifier = function(t, e) { X[t] || (X[t] = e) }, O.getModifier = function(t, e, s) { return new X[t](e, s) }, O); function G() {} function K() {} function J() {} function U() {} function Z() {} function Q() { this._length = 0, this._maxLength = 4, this.shapes = D(this._maxLength) } function $(t, e, s, i) { var a; this.elem = t, this.frameId = -1, this.dataProps = D(e.length), this.renderer = s, this.k = !1, this.dashStr = '', this.dashArray = j('float32', e.length ? e.length - 1 : 0), this.dashoffset = j('float32', 1), this.initDynamicPropertyContainer(i); var r, n = e.length || 0; for (a = 0; a < n; a += 1) r = R.getProp(t, e[a].v, 0, 0, this), this.k = r.k || this.k, this.dataProps[a] = {n: e[a].n, p: r}; this.k || this.getValue(!0), this._isAnimated = this.k } function tt(t, e, s) { this.data = e, this.c = j('uint8c', 4 * e.p); var i = e.k.k[0].s ? e.k.k[0].s.length - 4 * e.p : e.k.k.length - 4 * e.p; this.o = j('float32', i), this._cmdf = !1, this._omdf = !1, this._collapsable = this.checkCollapsable(), this._hasOpacity = i, this.initDynamicPropertyContainer(s), this.prop = R.getProp(t, e.k, 1, null, this), this.k = this.prop.k, this.getValue(!0) } G.prototype.initModifierProperties = function() {}, G.prototype.addShapeToModifier = function() {}, G.prototype.addShape = function(t) { if (!this.closed) { t.sh.container.addDynamicProperty(t.sh); var e = { shape: t.sh, data: t, localShapeCollection: xt.newShapeCollection() }; this.shapes.push(e), this.addShapeToModifier(e), this._isAnimated && t.setAsAnimated() } }, G.prototype.init = function(t, e) { this.shapes = [], this.elem = t, this.initDynamicPropertyContainer(t), this.initModifierProperties(t, e), this.frameId = s, this.closed = !1, this.k = !1, this.dynamicProperties.length ? this.k = !0 : this.getValue(!0) }, G.prototype.processKeys = function() { this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties()) }, M([F], G), M([G], K), K.prototype.initModifierProperties = function(t, e) { this.s = R.getProp(t, e.s, 0, .01, this), this.e = R.getProp(t, e.e, 0, .01, this), this.o = R.getProp(t, e.o, 0, 0, this), this.sValue = 0, this.eValue = 0, this.getValue = this.processKeys, this.m = e.m, this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length }, K.prototype.addShapeToModifier = function(t) { t.pathsData = [] }, K.prototype.calculateShapeEdges = function(t, e, s, i, a) { var r = []; e <= 1 ? r.push({s: t, e: e}) : 1 <= t ? r.push({s: t - 1, e: e - 1}) : (r.push({s: t, e: 1}), r.push({s: 0, e: e - 1})); var n, h, o = [], l = r.length; for (n = 0; n < l; n += 1) { var p, f; if (!((h = r[n]).e * a < i || h.s * a > i + s)) p = h.s * a <= i ? 0 : (h.s * a - i) / s, f = h.e * a >= i + s ? 1 : (h.e * a - i) / s, o.push([p, f]) } return o.length || o.push([0, 0]), o }, K.prototype.releasePathsData = function(t) { var e, s = t.length; for (e = 0; e < s; e += 1) wt.release(t[e]); return t.length = 0, t }, K.prototype.processShapes = function(t) { var e, s, i, a; if (this._mdf || t) { var r = this.o.v % 360 / 360; if (r < 0 && (r += 1), e = 1 < this.s.v ? 1 + r : this.s.v < 0 ? 0 + r : this.s.v + r, (s = 1 < this.e.v ? 1 + r : this.e.v < 0 ? 0 + r : this.e.v + r) < e) { var n = e; e = s, s = n } e = 1e-4 * Math.round(1e4 * e), s = 1e-4 * Math.round(1e4 * s), this.sValue = e, this.eValue = s } else e = this.sValue, s = this.eValue; var h, o, l, p, f, d = this.shapes.length, m = 0; if (s === e) for (a = 0; a < d; a += 1) this.shapes[a].localShapeCollection.releaseShapes(), this.shapes[a].shape._mdf = !0, this.shapes[a].shape.paths = this.shapes[a].localShapeCollection, this._mdf && (this.shapes[a].pathsData.length = 0); else if (1 === s && 0 === e || 0 === s && 1 === e) { if (this._mdf) for (a = 0; a < d; a += 1) this.shapes[a].pathsData.length = 0, this.shapes[a].shape._mdf = !0 } else { var c, u, g = []; for (a = 0; a < d; a += 1) if ((c = this.shapes[a]).shape._mdf || this._mdf || t || 2 === this.m) { if (o = (i = c.shape.paths)._length, f = 0, !c.shape._mdf && c.pathsData.length) f = c.totalShapeLength; else { for (l = this.releasePathsData(c.pathsData), h = 0; h < o; h += 1) p = dt.getSegmentsLength(i.shapes[h]), l.push(p), f += p.totalLength; c.totalShapeLength = f, c.pathsData = l } m += f, c.shape._mdf = !0 } else c.shape.paths = c.localShapeCollection; var y, v = e, b = s, _ = 0; for (a = d - 1; 0 <= a; a -= 1) if ((c = this.shapes[a]).shape._mdf) { for ((u = c.localShapeCollection).releaseShapes(), 2 === this.m && 1 < d ? (y = this.calculateShapeEdges( e, s, c.totalShapeLength, _, m), _ += c.totalShapeLength) : y = [[v, b]], o = y.length, h = 0; h < o; h += 1) { v = y[h][0], b = y[h][1], g.length = 0, b <= 1 ? g.push({s: c.totalShapeLength * v, e: c.totalShapeLength * b}) : 1 <= v ? g.push({ s: c.totalShapeLength * (v - 1), e: c.totalShapeLength * (b - 1) }) : (g.push({s: c.totalShapeLength * v, e: c.totalShapeLength}), g.push({s: 0, e: c.totalShapeLength * (b - 1)})); var k = this.addShapes(c, g[0]); if (g[0].s !== g[0].e) { if (1 < g.length) if (c.shape.paths.shapes[c.shape.paths._length - 1].c) { var A = k.pop(); this.addPaths(k, u), k = this.addShapes(c, g[1], A) } else this.addPaths(k, u), k = this.addShapes(c, g[1]); this.addPaths(k, u) } } c.shape.paths = u } } }, K.prototype.addPaths = function(t, e) { var s, i = t.length; for (s = 0; s < i; s += 1) e.addShape(t[s]) }, K.prototype.addSegment = function(t, e, s, i, a, r, n) { a.setXYAt(e[0], e[1], 'o', r), a.setXYAt(s[0], s[1], 'i', r + 1), n && a.setXYAt(t[0], t[1], 'v', r), a.setXYAt(i[0], i[1], 'v', r + 1) }, K.prototype.addSegmentFromArray = function(t, e, s, i) { e.setXYAt(t[1], t[5], 'o', s), e.setXYAt(t[2], t[6], 'i', s + 1), i && e.setXYAt(t[0], t[4], 'v', s), e.setXYAt(t[3], t[7], 'v', s + 1) }, K.prototype.addShapes = function(t, e, s) { var i, a, r, n, h, o, l, p, f = t.pathsData, d = t.shape.paths.shapes, m = t.shape.paths._length, c = 0, u = [], g = !0; for (p = s ? (h = s._length, s._length) : (s = Dt.newElement(), h = 0), u.push(s), i = 0; i < m; i += 1) { for (o = f[i].lengths, s.c = d[i].c, r = d[i].c ? o.length : o.length + 1, a = 1; a < r; a += 1) if (c + (n = o[a - 1]).addedLength < e.s) c += n.addedLength, s.c = !1; else { if (c > e.e) { s.c = !1; break } e.s <= c && e.e >= c + n.addedLength ? (this.addSegment( d[i].v[a - 1], d[i].o[a - 1], d[i].i[a], d[i].v[a], s, h, g), g = !1) : (l = dt.getNewSegment( d[i].v[a - 1], d[i].v[a], d[i].o[a - 1], d[i].i[a], (e.s - c) / n.addedLength, (e.e - c) / n.addedLength, o[a - 1]), this.addSegmentFromArray(l, s, h, g), g = !1, s.c = !1), c += n.addedLength, h += 1 } if (d[i].c && o.length) { if (n = o[a - 1], c <= e.e) { var y = o[a - 1].addedLength; e.s <= c && e.e >= c + y ? (this.addSegment( d[i].v[a - 1], d[i].o[a - 1], d[i].i[0], d[i].v[0], s, h, g), g = !1) : (l = dt.getNewSegment( d[i].v[a - 1], d[i].v[0], d[i].o[a - 1], d[i].i[0], (e.s - c) / y, (e.e - c) / y, o[a - 1]), this.addSegmentFromArray(l, s, h, g), g = !1, s.c = !1) } else s.c = !1; c += n.addedLength, h += 1 } if (s._length && (s.setXYAt(s.v[p][0], s.v[p][1], 'i', p), s.setXYAt( s.v[s._length - 1][0], s.v[s._length - 1][1], 'o', s._length - 1)), c > e.e) break; i < m - 1 && (s = Dt.newElement(), g = !0, u.push(s), h = 0) } return u }, Y.registerModifier('tm', K), M([G], J), J.prototype.initModifierProperties = function(t, e) { this.getValue = this.processKeys, this.rd = R.getProp(t, e.r, 0, null, this), this._isAnimated = !!this.rd.effectsSequence.length }, J.prototype.processPath = function(t, e) { var s, i = Dt.newElement(); i.c = t.c; var a, r, n, h, o, l, p, f, d, m, c, u, g = t._length, y = 0; for (s = 0; s < g; s += 1) a = t.v[s], n = t.o[s], r = t.i[s], a[0] === n[0] && a[1] === n[1] && a[0] === r[0] && a[1] === r[1] ? 0 !== s && s !== g - 1 || t.c ? (h = 0 === s ? t.v[g - 1] : t.v[s - 1], l = (o = Math.sqrt( Math.pow(a[0] - h[0], 2) + Math.pow(a[1] - h[1], 2))) ? Math.min(o / 2, e) / o : 0, p = c = a[0] + (h[0] - a[0]) * l, f = u = a[1] - (a[1] - h[1]) * l, d = p - (p - a[0]) * v, m = f - (f - a[1]) * v, i.setTripleAt(p, f, d, m, c, u, y), y += 1, h = s === g - 1 ? t.v[0] : t.v[s + 1], l = (o = Math.sqrt( Math.pow(a[0] - h[0], 2) + Math.pow(a[1] - h[1], 2))) ? Math.min(o / 2, e) / o : 0, p = d = a[0] + (h[0] - a[0]) * l, f = m = a[1] + (h[1] - a[1]) * l, c = p - (p - a[0]) * v, u = f - (f - a[1]) * v, i.setTripleAt(p, f, d, m, c, u, y)) : i.setTripleAt(a[0], a[1], n[0], n[1], r[0], r[1], y) : i.setTripleAt( t.v[s][0], t.v[s][1], t.o[s][0], t.o[s][1], t.i[s][0], t.i[s][1], y), y += 1; return i }, J.prototype.processShapes = function(t) { var e, s, i, a, r, n, h = this.shapes.length, o = this.rd.v; if (0 !== o) for (s = 0; s < h; s += 1) { if (n = (r = this.shapes[s]).localShapeCollection, r.shape._mdf || this._mdf || t) for (n.releaseShapes(), r.shape._mdf = !0, e = r.shape.paths.shapes, a = r.shape.paths._length, i = 0; i < a; i += 1) n.addShape(this.processPath(e[i], o)); r.shape.paths = r.localShapeCollection } this.dynamicProperties.length || (this._mdf = !1) }, Y.registerModifier('rd', J), M([G], U), U.prototype.initModifierProperties = function(t, e) { this.getValue = this.processKeys, this.amount = R.getProp(t, e.a, 0, null, this), this._isAnimated = !!this.amount.effectsSequence.length }, U.prototype.processPath = function(t, e) { var s = e / 100, i = [0, 0], a = t._length, r = 0; for (r = 0; r < a; r += 1) i[0] += t.v[r][0], i[1] += t.v[r][1]; i[0] /= a, i[1] /= a; var n, h, o, l, p, f, d = Dt.newElement(); for (d.c = t.c, r = 0; r < a; r += 1) n = t.v[r][0] + (i[0] - t.v[r][0]) * s, h = t.v[r][1] + (i[1] - t.v[r][1]) * s, o = t.o[r][0] + (i[0] - t.o[r][0]) * -s, l = t.o[r][1] + (i[1] - t.o[r][1]) * -s, p = t.i[r][0] + (i[0] - t.i[r][0]) * -s, f = t.i[r][1] + (i[1] - t.i[r][1]) * -s, d.setTripleAt(n, h, o, l, p, f, r); return d }, U.prototype.processShapes = function(t) { var e, s, i, a, r, n, h = this.shapes.length, o = this.amount.v; if (0 !== o) for (s = 0; s < h; s += 1) { if (n = (r = this.shapes[s]).localShapeCollection, r.shape._mdf || this._mdf || t) for (n.releaseShapes(), r.shape._mdf = !0, e = r.shape.paths.shapes, a = r.shape.paths._length, i = 0; i < a; i += 1) n.addShape(this.processPath(e[i], o)); r.shape.paths = r.localShapeCollection } this.dynamicProperties.length || (this._mdf = !1) }, Y.registerModifier('pb', U), M([G], Z), Z.prototype.initModifierProperties = function(t, e) { this.getValue = this.processKeys, this.c = R.getProp(t, e.c, 0, null, this), this.o = R.getProp(t, e.o, 0, null, this), this.tr = z.getTransformProperty(t, e.tr, this), this.so = R.getProp(t, e.tr.so, 0, .01, this), this.eo = R.getProp(t, e.tr.eo, 0, .01, this), this.data = e, this.dynamicProperties.length || this.getValue(!0), this._isAnimated = !!this.dynamicProperties.length, this.pMatrix = new I, this.rMatrix = new I, this.sMatrix = new I, this.tMatrix = new I, this.matrix = new I }, Z.prototype.applyTransforms = function(t, e, s, i, a, r) { var n = r ? -1 : 1, h = i.s.v[0] + (1 - i.s.v[0]) * (1 - a), o = i.s.v[1] + (1 - i.s.v[1]) * (1 - a); t.translate(i.p.v[0] * n * a, i.p.v[1] * n * a, i.p.v[2]), e.translate(-i.a.v[0], -i.a.v[1], i.a.v[2]), e.rotate(-i.r.v * n * a), e.translate(i.a.v[0], i.a.v[1], i.a.v[2]), s.translate(-i.a.v[0], -i.a.v[1], i.a.v[2]), s.scale(r ? 1 / h : h, r ? 1 / o : o), s.translate(i.a.v[0], i.a.v[1], i.a.v[2]) }, Z.prototype.init = function(t, e, s, i) { for (this.elem = t, this.arr = e, this.pos = s, this.elemsData = i, this._currentCopies = 0, this._elements = [], this._groups = [], this.frameId = -1, this.initDynamicPropertyContainer(t), this.initModifierProperties(t, e[s]); 0 < s;) s -= 1, this._elements.unshift(e[s]); this.dynamicProperties.length ? this.k = !0 : this.getValue(!0) }, Z.prototype.resetElements = function(t) { var e, s = t.length; for (e = 0; e < s; e += 1) t[e]._processed = !1, 'gr' === t[e].ty && this.resetElements(t[e].it) }, Z.prototype.cloneElements = function(t) { var e = JSON.parse(JSON.stringify(t)); return this.resetElements(e), e }, Z.prototype.changeGroupRender = function(t, e) { var s, i = t.length; for (s = 0; s < i; s += 1) t[s]._render = e, 'gr' === t[s].ty && this.changeGroupRender(t[s].it, e) }, Z.prototype.processShapes = function(t) { var e, s, i, a, r, n = !1; if (this._mdf || t) { var h, o = Math.ceil(this.c.v); if (this._groups.length < o) { for (; this._groups.length < o;) { var l = {it: this.cloneElements(this._elements), ty: 'gr'}; l.it.push({ a: {a: 0, ix: 1, k: [0, 0]}, nm: 'Transform', o: {a: 0, ix: 7, k: 100}, p: {a: 0, ix: 2, k: [0, 0]}, r: {a: 1, ix: 6, k: [{s: 0, e: 0, t: 0}, {s: 0, e: 0, t: 1}]}, s: {a: 0, ix: 3, k: [100, 100]}, sa: {a: 0, ix: 5, k: 0}, sk: {a: 0, ix: 4, k: 0}, ty: 'tr' }), this.arr.splice(0, 0, l), this._groups.splice(0, 0, l), this._currentCopies += 1 } this.elem.reloadShapes(), n = !0 } for (i = r = 0; i <= this._groups.length - 1; i += 1) { if (h = r < o, this._groups[i]._render = h, this.changeGroupRender(this._groups[i].it, h), !h) { var p = this.elemsData[i].it, f = p[p.length - 1]; 0 !== f.transform.op.v ? (f.transform.op._mdf = !0, f.transform.op.v = 0) : f.transform.op._mdf = !1 } r += 1 } this._currentCopies = o; var d = this.o.v, m = d % 1, c = 0 < d ? Math.floor(d) : Math.ceil(d), u = this.pMatrix.props, g = this.rMatrix.props, y = this.sMatrix.props; this.pMatrix.reset(), this.rMatrix.reset(), this.sMatrix.reset(), this.tMatrix.reset(), this.matrix.reset(); var v, b, _ = 0; if (0 < d) { for (; _ < c;) this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1), _ += 1; m && (this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, m, !1), _ += m) } else if (d < 0) { for (; c < _;) this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !0), _ -= 1; m && (this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -m, !0), _ -= m) } for (i = 1 === this.data.m ? 0 : this._currentCopies - 1, a = 1 === this.data.m ? 1 : -1, r = this._currentCopies; r;) { if (b = (s = (e = this.elemsData[i].it)[e.length - 1] .transform.mProps.v.props) .length, e[e.length - 1].transform.mProps._mdf = !0, e[e.length - 1].transform.op._mdf = !0, e[e.length - 1].transform.op.v = 1 === this._currentCopies ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1)), 0 !== _) { for ((0 !== i && 1 === a || i !== this._currentCopies - 1 && -1 === a) && this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1), this.matrix.transform( g[0], g[1], g[2], g[3], g[4], g[5], g[6], g[7], g[8], g[9], g[10], g[11], g[12], g[13], g[14], g[15]), this.matrix.transform( y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7], y[8], y[9], y[10], y[11], y[12], y[13], y[14], y[15]), this.matrix.transform( u[0], u[1], u[2], u[3], u[4], u[5], u[6], u[7], u[8], u[9], u[10], u[11], u[12], u[13], u[14], u[15]), v = 0; v < b; v += 1) s[v] = this.matrix.props[v]; this.matrix.reset() } else for (this.matrix.reset(), v = 0; v < b; v += 1) s[v] = this.matrix.props[v]; _ += 1, r -= 1, i += a } } else for (r = this._currentCopies, i = 0, a = 1; r;) s = (e = this.elemsData[i].it)[e.length - 1].transform.mProps.v.props, e[e.length - 1].transform.mProps._mdf = !1, e[e.length - 1].transform.op._mdf = !1, r -= 1, i += a; return n }, Z.prototype.addShape = function() { }, Y.registerModifier('rp', Z), Q.prototype.addShape = function(t) { this._length === this._maxLength && (this.shapes = this.shapes.concat(D(this._maxLength)), this._maxLength *= 2), this.shapes[this._length] = t, this._length += 1 }, Q.prototype.releaseShapes = function() { var t; for (t = 0; t < this._length; t += 1) Dt.release(this.shapes[t]); this._length = 0 }, $.prototype.getValue = function(t) { if ((this.elem.globalData.frameId !== this.frameId || t) && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf = this._mdf || t, this._mdf)) { var e = 0, s = this.dataProps.length; for ('svg' === this.renderer && (this.dashStr = ''), e = 0; e < s; e += 1) 'o' !== this.dataProps[e].n ? 'svg' === this.renderer ? this.dashStr += ' ' + this.dataProps[e].p.v : this.dashArray[e] = this.dataProps[e].p.v : this.dashoffset[0] = this.dataProps[e].p.v } }, M([F], $), tt.prototype.comparePoints = function(t, e) { for (var s = 0, i = this.o.length / 2; s < i;) { if (.01 < Math.abs(t[4 * s] - t[4 * e + 2 * s])) return !1; s += 1 } return !0 }, tt.prototype.checkCollapsable = function() { if (this.o.length / 2 != this.c.length / 4) return !1; if (this.data.k.k[0].s) for (var t = 0, e = this.data.k.k.length; t < e;) { if (!this.comparePoints(this.data.k.k[t].s, this.data.p)) return !1; t += 1 } else if (!this.comparePoints(this.data.k.k, this.data.p)) return !1; return !0 }, tt.prototype.getValue = function(t) { if (this.prop.getValue(), this._mdf = !1, this._cmdf = !1, this._omdf = !1, this.prop._mdf || t) { var e, s, i, a = 4 * this.data.p; for (e = 0; e < a; e += 1) s = e % 4 == 0 ? 100 : 255, i = Math.round(this.prop.v[e] * s), this.c[e] !== i && (this.c[e] = i, this._cmdf = !t); if (this.o.length) for (a = this.prop.v.length, e = 4 * this.data.p; e < a; e += 1) s = e % 2 == 0 ? 100 : 1, i = e % 2 == 0 ? Math.round(100 * this.prop.v[e]) : this.prop.v[e], this.o[e - 4 * this.data.p] !== i && (this.o[e - 4 * this.data.p] = i, this._omdf = !t); this._mdf = !t } }, M([F], tt); var et, st, it = function(t, e, s, i) { if (0 === e) return ''; var a, r = t.o, n = t.i, h = t.v, o = ' M' + i.applyToPointStringified(h[0][0], h[0][1]); for (a = 1; a < e; a += 1) o += ' C' + i.applyToPointStringified(r[a - 1][0], r[a - 1][1]) + ' ' + i.applyToPointStringified(n[a][0], n[a][1]) + ' ' + i.applyToPointStringified(h[a][0], h[a][1]); return s && e && (o += ' C' + i.applyToPointStringified(r[a - 1][0], r[a - 1][1]) + ' ' + i.applyToPointStringified(n[0][0], n[0][1]) + ' ' + i.applyToPointStringified(h[0][0], h[0][1]), o += 'z'), o }, at = function() { function t(t) { this.audios = [], this.audioFactory = t, this._volume = 1, this._isMuted = !1 } return t.prototype = { addAudio: function(t) { this.audios.push(t) }, pause: function() { var t, e = this.audios.length; for (t = 0; t < e; t += 1) this.audios[t].pause() }, resume: function() { var t, e = this.audios.length; for (t = 0; t < e; t += 1) this.audios[t].resume() }, setRate: function(t) { var e, s = this.audios.length; for (e = 0; e < s; e += 1) this.audios[e].setRate(t) }, createAudio: function(t) { return this.audioFactory ? this.audioFactory(t) : Howl ? new Howl({src: [t]}) : { isPlaying: !1, play: function() { this.isPlaying = !0 }, seek: function() { this.isPlaying = !1 }, playing: function() {}, rate: function() {}, setVolume: function() {} } }, setAudioFactory: function(t) { this.audioFactory = t }, setVolume: function(t) { this._volume = t, this._updateVolume() }, mute: function() { this._isMuted = !0, this._updateVolume() }, unmute: function() { this._isMuted = !1, this._updateVolume() }, getVolume: function() { return this._volume }, _updateVolume: function() { var t, e = this.audios.length; for (t = 0; t < e; t += 1) this.audios[t].volume(this._volume * (this._isMuted ? 0 : 1)) } }, function() { return new t } }(), rt = function() { var a = function() { var t = w('canvas'); t.width = 1, t.height = 1; var e = t.getContext('2d'); return e.fillStyle = 'rgba(0,0,0,0)', e.fillRect(0, 0, 1, 1), t }(); function t() { this.loadedAssets += 1, this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null) } function e() { this.loadedFootagesCount += 1, this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null) } function r(t, e, s) { var i = ''; if (t.e) i = t.p; else if (e) { var a = t.p; -1 !== a.indexOf('images/') && (a = a.split('/')[1]), i = e + a } else i = s, i += t.u ? t.u : '', i += t.p; return i } function s() { this._imageLoaded = t.bind(this), this._footageLoaded = e.bind(this), this.testImageLoaded = function(t) { var e = 0, s = setInterval(function() { (t.getBBox().width || 500 < e) && (this._imageLoaded(), clearInterval(s)), e += 1 }.bind(this), 50) }.bind(this), this.createFootageData = function(t) { var e = {assetData: t}, s = r(t, this.assetsPath, this.path); return ot.load( s, function(t) { e.img = t, this._footageLoaded() }.bind(this), function() { e.img = {}, this._footageLoaded() }.bind(this)), e }.bind(this), this.assetsPath = '', this.path = '', this.totalImages = 0, this.totalFootages = 0, this.loadedAssets = 0, this.loadedFootagesCount = 0, this.imagesLoadedCb = null, this.images = [] } return s.prototype = { loadAssets: function(t, e) { var s; this.imagesLoadedCb = e; var i = t.length; for (s = 0; s < i; s += 1) t[s].layers || (t[s].t ? 3 === t[s].t && (this.totalFootages += 1, this.images.push(this.createFootageData(t[s]))) : (this.totalImages += 1, this.images.push(this._createImageData(t[s])))) }, setAssetsPath: function(t) { this.assetsPath = t || '' }, setPath: function(t) { this.path = t || '' }, loadedImages: function() { return this.totalImages === this.loadedAssets }, loadedFootages: function() { return this.totalFootages === this.loadedFootagesCount }, destroy: function() { this.imagesLoadedCb = null, this.images.length = 0 }, getAsset: function(t) { for (var e = 0, s = this.images.length; e < s;) { if (this.images[e].assetData === t) return this.images[e].img; e += 1 } return null }, createImgData: function(t) { var e = r(t, this.assetsPath, this.path), s = w('img'); s.crossOrigin = 'anonymous', s.addEventListener('load', this._imageLoaded, !1), s.addEventListener('error', function() { i.img = a, this._imageLoaded() }.bind(this), !1), s.src = e; var i = {img: s, assetData: t}; return i }, createImageData: function(t) { var e = r(t, this.assetsPath, this.path), s = x('image'); n ? this.testImageLoaded(s) : s.addEventListener('load', this._imageLoaded, !1), s.addEventListener( 'error', function() { i.img = a, this._imageLoaded() }.bind(this), !1), s.setAttributeNS('http://www.w3.org/1999/xlink', 'href', e), this._elementHelper.append ? this._elementHelper.append(s) : this._elementHelper.appendChild(s); var i = {img: s, assetData: t}; return i }, imageLoaded: t, footageLoaded: e, setCacheType: function(t, e) { this._createImageData = 'svg' === t ? (this._elementHelper = e, this.createImageData.bind(this)) : this.createImgData.bind(this) } }, s }(), nt = (et = {maskType: !0}, (/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)) && (et.maskType = !1), et), ht = ((st = {}).createFilter = function(t, e) { var s = x('filter'); return s.setAttribute('id', t), !0 !== e && (s.setAttribute('filterUnits', 'objectBoundingBox'), s.setAttribute('x', '0%'), s.setAttribute('y', '0%'), s.setAttribute('width', '100%'), s.setAttribute('height', '100%')), s }, st.createAlphaToLuminanceFilter = function() { var t = x('feColorMatrix'); return t.setAttribute('type', 'matrix'), t.setAttribute('color-interpolation-filters', 'sRGB'), t.setAttribute( 'values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1'), t }, st), ot = function() { function r(t) { return t.response && 'object' == typeof t.response ? t.response : t.response && 'string' == typeof t.response ? JSON.parse(t.response) : t.responseText ? JSON.parse(t.responseText) : null } return { load: function(t, e, s) { var i, a = new XMLHttpRequest; try { a.responseType = 'json' } catch (t) { } a.onreadystatechange = function() { if (4 === a.readyState) if (200 === a.status) i = r(a), e(i); else try { i = r(a), e(i) } catch (t) { s && s(t) } }, a.open('GET', t, !0), a.send() } } }(); function mt(t, e, s) { this._isFirstFrame = !0, this._hasMaskedPath = !1, this._frameId = -1, this._textData = t, this._renderType = e, this._elem = s, this._animatorsData = D(this._textData.a.length), this._pathData = {}, this._moreOptions = {alignment: {}}, this.renderedLetters = [], this.lettersChangedFlag = !1, this.initDynamicPropertyContainer(s) } function ct(t, e, s) { var i = {propType: !1}, a = R.getProp, r = e.a; this.a = { r: r.r ? a(t, r.r, 0, B, s) : i, rx: r.rx ? a(t, r.rx, 0, B, s) : i, ry: r.ry ? a(t, r.ry, 0, B, s) : i, sk: r.sk ? a(t, r.sk, 0, B, s) : i, sa: r.sa ? a(t, r.sa, 0, B, s) : i, s: r.s ? a(t, r.s, 1, .01, s) : i, a: r.a ? a(t, r.a, 1, 0, s) : i, o: r.o ? a(t, r.o, 0, .01, s) : i, p: r.p ? a(t, r.p, 1, 0, s) : i, sw: r.sw ? a(t, r.sw, 0, 0, s) : i, sc: r.sc ? a(t, r.sc, 1, 0, s) : i, fc: r.fc ? a(t, r.fc, 1, 0, s) : i, fh: r.fh ? a(t, r.fh, 0, 0, s) : i, fs: r.fs ? a(t, r.fs, 0, .01, s) : i, fb: r.fb ? a(t, r.fb, 0, .01, s) : i, t: r.t ? a(t, r.t, 0, 0, s) : i }, this.s = At.getTextSelectorProp(t, e.s, s), this.s.t = e.s.t } function ut(t, e, s, i, a, r) { this.o = t, this.sw = e, this.sc = s, this.fc = i, this.m = a, this.p = r, this._mdf = { o: !0, sw: !!e, sc: !!s, fc: !!i, m: !0, p: !0 } } function gt(t, e) { this._frameId = s, this.pv = '', this.v = '', this.kf = !1, this._isFirstFrame = !0, this._mdf = !1, this.data = e, this.elem = t, this.comp = this.elem.comp, this.keysIndex = 0, this.canResize = !1, this.minimumFontSize = 1, this.effectsSequence = [], this.currentData = { ascent: 0, boxWidth: this.defaultBoxWidth, f: '', fStyle: '', fWeight: '', fc: '', j: '', justifyOffset: '', l: [], lh: 0, lineWidths: [], ls: '', of: '', s: '', sc: '', sw: 0, t: 0, tr: 0, sz: 0, ps: null, fillColorAnim: !1, strokeColorAnim: !1, strokeWidthAnim: !1, yOffset: 0, finalSize: 0, finalText: [], finalLineHeight: 0, __complete: !1 }, this.copyData(this.currentData, this.data.d.k[0].s), this.searchProperty() || this.completeTextData(this.currentData) } mt.prototype.searchProperties = function() { var t, e, s = this._textData.a.length, i = R.getProp; for (t = 0; t < s; t += 1) e = this._textData.a[t], this._animatorsData[t] = new ct(this._elem, e, this); this._textData.p && 'm' in this._textData.p ? (this._pathData = { f: i(this._elem, this._textData.p.f, 0, 0, this), l: i(this._elem, this._textData.p.l, 0, 0, this), r: this._textData.p.r, m: this._elem.maskManager.getMaskProperty(this._textData.p.m) }, this._hasMaskedPath = !0) : this._hasMaskedPath = !1, this._moreOptions.alignment = i(this._elem, this._textData.m.a, 1, 0, this) }, mt.prototype.getMeasures = function(t, e) { if (this.lettersChangedFlag = e, this._mdf || this._isFirstFrame || e || this._hasMaskedPath && this._pathData.m._mdf) { this._isFirstFrame = !1; var s, i, a, r, n, h, o, l, p, f, d, m, c, u, g, y, v, b, _, k = this._moreOptions.alignment.v, A = this._animatorsData, P = this._textData, S = this.mHelper, C = this._renderType, D = this.renderedLetters.length, x = t.l; if (this._hasMaskedPath) { if (_ = this._pathData.m, !this._pathData.n || this._pathData._mdf) { var w, F = _.v; for (this._pathData.r && (F = F.reverse()), n = {tLength: 0, segments: []}, r = F._length - 1, a = y = 0; a < r; a += 1) w = dt.buildBezierData( F.v[a], F.v[a + 1], [F.o[a][0] - F.v[a][0], F.o[a][1] - F.v[a][1]], [F.i[a + 1][0] - F.v[a + 1][0], F.i[a + 1][1] - F.v[a + 1][1]]), n.tLength += w.segmentLength, n.segments.push(w), y += w.segmentLength; a = r, _.v.c && (w = dt.buildBezierData( F.v[a], F.v[0], [F.o[a][0] - F.v[a][0], F.o[a][1] - F.v[a][1]], [F.i[0][0] - F.v[0][0], F.i[0][1] - F.v[0][1]]), n.tLength += w.segmentLength, n.segments.push(w), y += w.segmentLength), this._pathData.pi = n } if (n = this._pathData.pi, h = this._pathData.f.v, f = 1, p = !(l = d = 0), u = n.segments, h < 0 && _.v.c) for (n.tLength < Math.abs(h) && (h = -Math.abs(h) % n.tLength), f = (c = u[d = u.length - 1].points).length - 1; h < 0;) h += c[f].partialLength, (f -= 1) < 0 && (f = (c = u[d -= 1].points).length - 1); m = (c = u[d].points)[f - 1], g = (o = c[f]).partialLength } r = x.length, i = s = 0; var T, E, M, I, L, V = 1.2 * t.finalSize * .714, R = !0; M = A.length; var z, N, O, q, B, j, W, X, H, Y, G, K, J = -1, U = h, Z = d, Q = f, $ = -1, tt = '', et = this.defaultPropsArray; if (2 === t.j || 1 === t.j) { var st = 0, it = 0, at = 2 === t.j ? -.5 : -1, rt = 0, nt = !0; for (a = 0; a < r; a += 1) if (x[a].n) { for (st && (st += it); rt < a;) x[rt].animatorJustifyOffset = st, rt += 1; nt = !(st = 0) } else { for (E = 0; E < M; E += 1) (T = A[E].a).t.propType && (nt && 2 === t.j && (it += T.t.v * at), (L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars)) .length ? st += T.t.v * L[0]* at : st += T.t.v * L * at); nt = !1 } for (st && (st += it); rt < a;) x[rt].animatorJustifyOffset = st, rt += 1 } for (a = 0; a < r; a += 1) { if (S.reset(), q = 1, x[a].n) s = 0, i += t.yOffset, i += R ? 1 : 0, h = U, R = !1, this._hasMaskedPath && (f = Q, m = (c = u[d = Z].points)[f - 1], g = (o = c[f]).partialLength, l = 0), K = H = G = tt = '', et = this.defaultPropsArray; else { if (this._hasMaskedPath) { if ($ !== x[a].line) { switch (t.j) { case 1: h += y - t.lineWidths[x[a].line]; break; case 2: h += (y - t.lineWidths[x[a].line]) / 2 } $ = x[a].line } J !== x[a].ind && (x[J] && (h += x[J].extra), h += x[a].an / 2, J = x[a].ind), h += k[0] * x[a].an * .005; var ht = 0; for (E = 0; E < M; E += 1) (T = A[E].a).p.propType && ((L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars)) .length ? ht += T.p.v[0] * L[0] : ht += T.p.v[0] * L), T.a.propType && ((L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars)) .length ? ht += T.a.v[0] * L[0] : ht += T.a.v[0] * L); for (p = !0; p;) h + ht <= l + g || !c ? (v = (h + ht - l) / o.partialLength, N = m.point[0] + (o.point[0] - m.point[0]) * v, O = m.point[1] + (o.point[1] - m.point[1]) * v, S.translate(-k[0] * x[a].an * .005, -k[1] * V * .01), p = !1) : c && (l += o.partialLength, (f += 1) >= c.length && (f = 0, c = u[d += 1] ? u[d].points : _.v.c ? u[d = f = 0].points : (l -= o.partialLength, null)), c && (m = o, g = (o = c[f]).partialLength)); z = x[a].an / 2 - x[a].add, S.translate(-z, 0, 0) } else z = x[a].an / 2 - x[a].add, S.translate(-z, 0, 0), S.translate(-k[0] * x[a].an * .005, -k[1] * V * .01, 0); for (E = 0; E < M; E += 1) (T = A[E].a).t.propType && (L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars), 0 === s && 0 === t.j || (this._hasMaskedPath ? L.length ? h += T.t.v * L[0] : h += T.t.v* L : L.length ? s += T.t.v * L[0] : s += T.t.v * L)); for (t.strokeWidthAnim && (j = t.sw || 0), t.strokeColorAnim && (B = t.sc ? [t.sc[0], t.sc[1], t.sc[2]] : [0, 0, 0]), t.fillColorAnim && t.fc && (W = [t.fc[0], t.fc[1], t.fc[2]]), E = 0; E < M; E += 1) (T = A[E].a).a.propType && ((L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars)) .length ? S.translate( -T.a.v[0] * L[0], -T.a.v[1] * L[1], T.a.v[2] * L[2]) : S.translate(-T.a.v[0] * L, -T.a.v[1] * L, T.a.v[2] * L)); for (E = 0; E < M; E += 1) (T = A[E].a).s.propType && ((L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars)) .length ? S.scale( 1 + (T.s.v[0] - 1) * L[0], 1 + (T.s.v[1] - 1) * L[1], 1) : S.scale( 1 + (T.s.v[0] - 1) * L, 1 + (T.s.v[1] - 1) * L, 1)); for (E = 0; E < M; E += 1) { if (T = A[E].a, L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars), T.sk.propType && (L.length ? S.skewFromAxis(-T.sk.v * L[0], T.sa.v * L[1]) : S.skewFromAxis(-T.sk.v * L, T.sa.v * L)), T.r.propType && (L.length ? S.rotateZ(-T.r.v * L[2]) : S.rotateZ(-T.r.v * L)), T.ry.propType && (L.length ? S.rotateY(T.ry.v * L[1]) : S.rotateY(T.ry.v * L)), T.rx.propType && (L.length ? S.rotateX(T.rx.v * L[0]) : S.rotateX(T.rx.v * L)), T.o.propType && (L.length ? q += (T.o.v * L[0] - q) * L[0] : q += (T.o.v * L - q) * L), t.strokeWidthAnim && T.sw.propType && (L.length ? j += T.sw.v * L[0] : j += T.sw.v * L), t.strokeColorAnim && T.sc.propType) for (X = 0; X < 3; X += 1) L.length ? B[X] += (T.sc.v[X] - B[X]) * L[0] : B[X] += (T.sc.v[X] - B[X]) * L; if (t.fillColorAnim && t.fc) { if (T.fc.propType) for (X = 0; X < 3; X += 1) L.length ? W[X] += (T.fc.v[X] - W[X]) * L[0] : W[X] += (T.fc.v[X] - W[X]) * L; T.fh.propType && (W = L.length ? ft(W, T.fh.v * L[0]) : ft(W, T.fh.v * L)), T.fs.propType && (W = L.length ? lt(W, T.fs.v * L[0]) : lt(W, T.fs.v * L)), T.fb.propType && (W = L.length ? pt(W, T.fb.v * L[0]) : pt(W, T.fb.v * L)) } } for (E = 0; E < M; E += 1) (T = A[E].a).p.propType && (L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars), this._hasMaskedPath ? L.length ? S.translate(0, T.p.v[1] * L[0], -T.p.v[2] * L[1]) : S.translate(0, T.p.v[1] * L, -T.p.v[2] * L) : L.length ? S.translate( T.p.v[0] * L[0], T.p.v[1] * L[1], -T.p.v[2] * L[2]) : S.translate(T.p.v[0] * L, T.p.v[1] * L, -T.p.v[2] * L)); if (t.strokeWidthAnim && (H = j < 0 ? 0 : j), t.strokeColorAnim && (Y = 'rgb(' + Math.round(255 * B[0]) + ',' + Math.round(255 * B[1]) + ',' + Math.round(255 * B[2]) + ')'), t.fillColorAnim && t.fc && (G = 'rgb(' + Math.round(255 * W[0]) + ',' + Math.round(255 * W[1]) + ',' + Math.round(255 * W[2]) + ')'), this._hasMaskedPath) { if (S.translate(0, -t.ls), S.translate(0, k[1] * V * .01 + i, 0), P.p.p) { b = (o.point[1] - m.point[1]) / (o.point[0] - m.point[0]); var ot = 180 * Math.atan(b) / Math.PI; o.point[0] < m.point[0] && (ot += 180), S.rotate(-ot * Math.PI / 180) } S.translate(N, O, 0), h -= k[0] * x[a].an * .005, x[a + 1] && J !== x[a + 1].ind && (h += x[a].an / 2, h += .001 * t.tr * t.finalSize) } else { switch (S.translate(s, i, 0), t.ps && S.translate(t.ps[0], t.ps[1] + t.ascent, 0), t.j) { case 1: S.translate( x[a].animatorJustifyOffset + t.justifyOffset + (t.boxWidth - t.lineWidths[x[a].line]), 0, 0); break; case 2: S.translate( x[a].animatorJustifyOffset + t.justifyOffset + (t.boxWidth - t.lineWidths[x[a].line]) / 2, 0, 0) } S.translate(0, -t.ls), S.translate(z, 0, 0), S.translate(k[0] * x[a