{"version":3,"file":"lottie-player.js","sources":["../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/css-tag.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/reactive-element.js","../node_modules/.pnpm/lit-html@2.4.0/node_modules/lit-html/lit-html.js","../node_modules/.pnpm/lit-element@3.2.2/node_modules/lit-element/lit-element.js","../node_modules/.pnpm/lit-html@2.4.0/node_modules/lit-html/is-server.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/property.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/state.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/base.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/event-options.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query-all.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query-async.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","../node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js","../node_modules/.pnpm/lottie-web@5.10.0/node_modules/lottie-web/build/player/lottie.js","../src/lottie-player.styles.ts","../src/lottie-player.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),n=new WeakMap;class o{constructor(t,e,n){if(this._$cssResult$=!0,n!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=n.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&n.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new o(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const n=1===t.length?t[0]:e.reduce(((e,s,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[n+1]),t[0]);return new o(n,t,s)},S=(s,n)=>{e?s.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((e=>{const n=document.createElement(\"style\"),o=t.litNonce;void 0!==o&&n.setAttribute(\"nonce\",o),n.textContent=e.cssText,s.appendChild(n)}))},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{o as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as i}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var s;const e=window,r=e.trustedTypes,h=r?r.emptyScript:\"\",o=e.reactiveElementPolyfillSupport,n={toAttribute(t,i){switch(i){case Boolean:t=t?h:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},a=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:n,reflect:!1,hasChanged:a};class d extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var i;this.finalize(),(null!==(i=this.h)&&void 0!==i?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Ep(s,i);void 0!==e&&(this._$Ev.set(e,s),t.push(e))})),t}static createProperty(t,i=l){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=\"symbol\"==typeof t?Symbol():\"__\"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,s){return{get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l}static finalize(){if(this.hasOwnProperty(\"finalized\"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty(\"properties\")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(t(i))}else void 0!==i&&s.push(t(i));return s}static _$Ep(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$ES)&&void 0!==i?i:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var i;null===(i=this._$ES)||void 0===i||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,s){this._$AK(t,s)}_$EO(t,i,s=l){var e;const r=this.constructor._$Ep(t,s);if(void 0!==r&&!0===s.reflect){const h=(void 0!==(null===(e=s.converter)||void 0===e?void 0:e.toAttribute)?s.converter:n).toAttribute(i,s.type);this._$El=t,null==h?this.removeAttribute(r):this.setAttribute(r,h),this._$El=null}}_$AK(t,i){var s;const e=this.constructor,r=e._$Ev.get(t);if(void 0!==r&&this._$El!==r){const t=e.getPropertyOptions(r),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(s=t.converter)||void 0===s?void 0:s.fromAttribute)?t.converter:n;this._$El=r,this[r]=h.fromAttribute(i,t.type),this._$El=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||a)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,i)=>this[i]=t)),this._$Ei=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$Ek()}catch(t){throw i=!1,this._$Ek(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$ES)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,i)=>this._$EO(i,this[i],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}d.finalized=!0,d.elementProperties=new Map,d.elementStyles=[],d.shadowRootOptions={mode:\"open\"},null==o||o({ReactiveElement:d}),(null!==(s=e.reactiveElementVersions)&&void 0!==s?s:e.reactiveElementVersions=[]).push(\"1.4.2\");export{d as ReactiveElement,n as defaultConverter,a as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=window,s=i.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,o=`lit$${(Math.random()+\"\").slice(9)}$`,n=\"?\"+o,l=`<${n}>`,h=document,r=(t=\"\")=>h.createComment(t),d=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,c=t=>u(t)||\"function\"==typeof(null==t?void 0:t[Symbol.iterator]),v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,a=/-->/g,f=/>/g,_=RegExp(\">|[ \\t\\n\\f\\r](?:([^\\\\s\\\"'>=/]+)([ \\t\\n\\f\\r]*=[ \\t\\n\\f\\r]*(?:[^ \\t\\n\\f\\r\\\"'`<>=]|(\\\"|')|))|$)\",\"g\"),m=/'/g,p=/\"/g,$=/^(?:script|style|textarea|title)$/i,g=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),y=g(1),w=g(2),x=Symbol.for(\"lit-noChange\"),b=Symbol.for(\"lit-nothing\"),T=new WeakMap,A=h.createTreeWalker(h,129,null,!1),E=(t,i)=>{const s=t.length-1,n=[];let h,r=2===i?\"\":\"\",d=v;for(let i=0;i\"===u[0]?(d=null!=h?h:v,c=-1):void 0===u[1]?c=-2:(c=d.lastIndex-u[2].length,e=u[1],d=void 0===u[3]?_:'\"'===u[3]?p:m):d===p||d===m?d=_:d===a||d===f?d=v:(d=_,h=void 0);const y=d===_&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===v?s+l:c>=0?(n.push(e),s.slice(0,c)+\"$lit$\"+s.slice(c)+o+y):s+o+(-2===c?(n.push(void 0),i):y)}const u=r+(t[s]||\"\")+(2===i?\"\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==e?e.createHTML(u):u,n]};class C{constructor({strings:t,_$litType$:i},e){let l;this.parts=[];let h=0,d=0;const u=t.length-1,c=this.parts,[v,a]=E(t,i);if(this.el=C.createElement(v,e),A.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length0){l.textContent=s?s.emptyScript:\"\";for(let s=0;s2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=b}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=P(this,t,i,0),n=!d(t)||t!==this._$AH&&t!==x,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(r(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l};export{L as _$LH,y as html,x as noChange,b as nothing,Z as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var l,o;const r=t;class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return i}}s.finalized=!0,s._$litElement$=!0,null===(l=globalThis.litElementHydrateSupport)||void 0===l||l.call(globalThis,{LitElement:s});const n=globalThis.litElementPolyfillSupport;null==n||n({LitElement:s});const h={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.2.2\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst o=!1;export{o as isServer};\n//# sourceMappingURL=is-server.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=e=>n=>\"function\"==typeof n?((e,n)=>(customElements.define(e,n),n))(e,n):((e,n)=>{const{kind:t,elements:s}=n;return{kind:t,elements:s,finisher(n){customElements.define(e,n)}}})(e,n);export{e as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i=(i,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i)}}:{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(n){n.createProperty(e.key,i)}};function e(e){return(n,t)=>void 0!==t?((i,e,n)=>{e.constructor.createProperty(n,i)})(e,n,t):i(e,n)}export{e as property};\n//# sourceMappingURL=property.js.map\n","import{property as r}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t(t){return r({...t,state:!0})}export{t as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,o)=>{Object.defineProperty(t,o,e)},t=(e,t)=>({kind:\"method\",placement:\"prototype\",key:t.key,descriptor:e}),o=({finisher:e,descriptor:t})=>(o,n)=>{var r;if(void 0===n){const n=null!==(r=o.originalKey)&&void 0!==r?r:o.key,i=null!=t?{kind:\"method\",placement:\"prototype\",key:n,descriptor:t(o.key)}:{...o,key:n};return null!=e&&(i.finisher=function(t){e(t,n)}),i}{const r=o.constructor;void 0!==t&&Object.defineProperty(o,n,t(n)),null==e||e(r,n)}};export{o as decorateProperty,e as legacyPrototypeMethod,t as standardPrototypeMethod};\n//# sourceMappingURL=base.js.map\n","import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e){return r({finisher:(r,t)=>{Object.assign(r.prototype[t],e)}})}export{e as eventOptions};\n//# sourceMappingURL=event-options.js.map\n","import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function i(i,n){return o({descriptor:o=>{const t={get(){var o,n;return null!==(n=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==n?n:null},enumerable:!0,configurable:!0};if(n){const n=\"symbol\"==typeof o?Symbol():\"__\"+o;t.get=function(){var o,t;return void 0===this[n]&&(this[n]=null!==(t=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==t?t:null),this[n]}}return t}})}export{i as query};\n//# sourceMappingURL=query.js.map\n","import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e){return r({descriptor:r=>({get(){var r,o;return null!==(o=null===(r=this.renderRoot)||void 0===r?void 0:r.querySelectorAll(e))&&void 0!==o?o:[]},enumerable:!0,configurable:!0})})}export{e as queryAll};\n//# sourceMappingURL=query-all.js.map\n","import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction e(e){return r({descriptor:r=>({async get(){var r;return await this.updateComplete,null===(r=this.renderRoot)||void 0===r?void 0:r.querySelector(e)},enumerable:!0,configurable:!0})})}export{e as queryAsync};\n//# sourceMappingURL=query-async.js.map\n","import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var n;const e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE));function l(n){const{slot:l,selector:t}=null!=n?n:{};return o({descriptor:o=>({get(){var o;const r=\"slot\"+(l?`[name=${l}]`:\":not([name])\"),i=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(r),s=null!=i?e(i,n):[];return t?s.filter((o=>o.matches(t))):s},enumerable:!0,configurable:!0})})}export{l as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n","import{decorateProperty as e}from\"./base.js\";import{queryAssignedElements as t}from\"./query-assigned-elements.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function o(o,n,r){let l,s=o;return\"object\"==typeof o?(s=o.slot,l=o):l={flatten:n},r?t({slot:s,flatten:n,selector:r}):e({descriptor:e=>({get(){var e,t;const o=\"slot\"+(s?`[name=${s}]`:\":not([name])\"),n=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(o);return null!==(t=null==n?void 0:n.assignedNodes(l))&&void 0!==t?t:[]},enumerable:!0,configurable:!0})})}export{o as queryAssignedNodes};\n//# sourceMappingURL=query-assigned-nodes.js.map\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\r\n})(this, (function () { 'use strict';\r\n\r\n var svgNS = 'http://www.w3.org/2000/svg';\r\n var locationHref = '';\r\n var _useWebWorker = false;\r\n var initialDefaultFrame = -999999;\r\n\r\n var setWebWorker = function setWebWorker(flag) {\r\n _useWebWorker = !!flag;\r\n };\r\n\r\n var getWebWorker = function getWebWorker() {\r\n return _useWebWorker;\r\n };\r\n\r\n var setLocationHref = function setLocationHref(value) {\r\n locationHref = value;\r\n };\r\n\r\n var getLocationHref = function getLocationHref() {\r\n return locationHref;\r\n };\r\n\r\n function createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n }\r\n\r\n function extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n\r\n for (var attr in sourcePrototype) {\r\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n }\r\n\r\n function getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n }\r\n\r\n function createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n }\r\n\r\n // import Howl from '../../3rd_party/howler';\r\n var audioControllerFactory = function () {\r\n function AudioController(audioFactory) {\r\n this.audios = [];\r\n this.audioFactory = audioFactory;\r\n this._volume = 1;\r\n this._isMuted = false;\r\n }\r\n\r\n AudioController.prototype = {\r\n addAudio: function addAudio(audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function pause() {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function resume() {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function setRate(rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function createAudio(assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n }\r\n\r\n if (window.Howl) {\r\n return new window.Howl({\r\n src: [assetPath]\r\n });\r\n }\r\n\r\n return {\r\n isPlaying: false,\r\n play: function play() {\r\n this.isPlaying = true;\r\n },\r\n seek: function seek() {\r\n this.isPlaying = false;\r\n },\r\n playing: function playing() {},\r\n rate: function rate() {},\r\n setVolume: function setVolume() {}\r\n };\r\n },\r\n setAudioFactory: function setAudioFactory(audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function setVolume(value) {\r\n this._volume = value;\r\n\r\n this._updateVolume();\r\n },\r\n mute: function mute() {\r\n this._isMuted = true;\r\n\r\n this._updateVolume();\r\n },\r\n unmute: function unmute() {\r\n this._isMuted = false;\r\n\r\n this._updateVolume();\r\n },\r\n getVolume: function getVolume() {\r\n return this._volume;\r\n },\r\n _updateVolume: function _updateVolume() {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n }\r\n }\r\n };\r\n return function () {\r\n return new AudioController();\r\n };\r\n }();\r\n\r\n var createTypedArray = function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n }\r\n\r\n if (type === 'int16') {\r\n return new Int16Array(len);\r\n }\r\n\r\n if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n\r\n return createRegularArray(type, len);\r\n }\r\n\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n\r\n return createRegularArray;\r\n }();\r\n\r\n function createSizedArray(len) {\r\n return Array.apply(null, {\r\n length: len\r\n });\r\n }\r\n\r\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); }\r\n var subframeEnabled = true;\r\n var expressionsPlugin = null;\r\n var expressionsInterfaces = null;\r\n var idPrefix$1 = '';\r\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n var _shouldRoundValues = false;\r\n var bmPow = Math.pow;\r\n var bmSqrt = Math.sqrt;\r\n var bmFloor = Math.floor;\r\n var bmMax = Math.max;\r\n var bmMin = Math.min;\r\n var BMMath = {};\r\n\r\n (function () {\r\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'];\r\n var i;\r\n var len = propertyNames.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n })();\r\n\r\n function ProjectInterface$1() {\r\n return {};\r\n }\r\n\r\n BMMath.random = Math.random;\r\n\r\n BMMath.abs = function (val) {\r\n var tOfVal = _typeof$6(val);\r\n\r\n if (tOfVal === 'object' && val.length) {\r\n var absArr = createSizedArray(val.length);\r\n var i;\r\n var len = val.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n\r\n return absArr;\r\n }\r\n\r\n return Math.abs(val);\r\n };\r\n\r\n var defaultCurveSegments = 150;\r\n var degToRads = Math.PI / 180;\r\n var roundCorner = 0.5519;\r\n\r\n function roundValues(flag) {\r\n _shouldRoundValues = !!flag;\r\n }\r\n\r\n function bmRnd(value) {\r\n if (_shouldRoundValues) {\r\n return Math.round(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function styleDiv(element) {\r\n element.style.position = 'absolute';\r\n element.style.top = 0;\r\n element.style.left = 0;\r\n element.style.display = 'block';\r\n element.style.transformOrigin = '0 0';\r\n element.style.webkitTransformOrigin = '0 0';\r\n element.style.backfaceVisibility = 'visible';\r\n element.style.webkitBackfaceVisibility = 'visible';\r\n element.style.transformStyle = 'preserve-3d';\r\n element.style.webkitTransformStyle = 'preserve-3d';\r\n element.style.mozTransformStyle = 'preserve-3d';\r\n }\r\n\r\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\r\n this.type = type;\r\n this.currentTime = currentTime;\r\n this.totalTime = totalTime;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n }\r\n\r\n function BMCompleteEvent(type, frameMultiplier) {\r\n this.type = type;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n }\r\n\r\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\r\n this.type = type;\r\n this.currentLoop = currentLoop;\r\n this.totalLoops = totalLoops;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n }\r\n\r\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n this.type = type;\r\n this.firstFrame = firstFrame;\r\n this.totalFrames = totalFrames;\r\n }\r\n\r\n function BMDestroyEvent(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n }\r\n\r\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n this.type = 'renderFrameError';\r\n this.nativeError = nativeError;\r\n this.currentTime = currentTime;\r\n }\r\n\r\n function BMConfigErrorEvent(nativeError) {\r\n this.type = 'configError';\r\n this.nativeError = nativeError;\r\n }\r\n\r\n function BMAnimationConfigErrorEvent(type, nativeError) {\r\n this.type = type;\r\n this.nativeError = nativeError;\r\n }\r\n\r\n var createElementID = function () {\r\n var _count = 0;\r\n return function createID() {\r\n _count += 1;\r\n return idPrefix$1 + '__lottie_element_' + _count;\r\n };\r\n }();\r\n\r\n function HSVtoRGB(h, s, v) {\r\n var r;\r\n var g;\r\n var b;\r\n var i;\r\n var f;\r\n var p;\r\n var q;\r\n var t;\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n\r\n switch (i % 6) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return [r, g, b];\r\n }\r\n\r\n function RGBtoHSV(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var d = max - min;\r\n var h;\r\n var s = max === 0 ? 0 : d / max;\r\n var v = max / 255;\r\n\r\n switch (max) {\r\n case min:\r\n h = 0;\r\n break;\r\n\r\n case r:\r\n h = g - b + d * (g < b ? 6 : 0);\r\n h /= 6 * d;\r\n break;\r\n\r\n case g:\r\n h = b - r + d * 2;\r\n h /= 6 * d;\r\n break;\r\n\r\n case b:\r\n h = r - g + d * 4;\r\n h /= 6 * d;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return [h, s, v];\r\n }\r\n\r\n function addSaturationToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[1] += offset;\r\n\r\n if (hsv[1] > 1) {\r\n hsv[1] = 1;\r\n } else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n function addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n } else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n function addHueToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[0] += offset / 360;\r\n\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n } else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n var rgbToHex = function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n\r\n for (i = 0; i < 256; i += 1) {\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function (r, g, b) {\r\n if (r < 0) {\r\n r = 0;\r\n }\r\n\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n }();\r\n\r\n var setSubframeEnabled = function setSubframeEnabled(flag) {\r\n subframeEnabled = !!flag;\r\n };\r\n\r\n var getSubframeEnabled = function getSubframeEnabled() {\r\n return subframeEnabled;\r\n };\r\n\r\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\r\n expressionsPlugin = value;\r\n };\r\n\r\n var getExpressionsPlugin = function getExpressionsPlugin() {\r\n return expressionsPlugin;\r\n };\r\n\r\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\r\n expressionsInterfaces = value;\r\n };\r\n\r\n var getExpressionInterfaces = function getExpressionInterfaces() {\r\n return expressionsInterfaces;\r\n };\r\n\r\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\r\n defaultCurveSegments = value;\r\n };\r\n\r\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\r\n return defaultCurveSegments;\r\n };\r\n\r\n var setIdPrefix = function setIdPrefix(value) {\r\n idPrefix$1 = value;\r\n };\r\n\r\n var getIdPrefix = function getIdPrefix() {\r\n return idPrefix$1;\r\n };\r\n\r\n function createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n }\r\n\r\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); }\r\n\r\n var dataManager = function () {\r\n var _counterId = 1;\r\n var processes = [];\r\n var workerFn;\r\n var workerInstance;\r\n var workerProxy = {\r\n onmessage: function onmessage() {},\r\n postMessage: function postMessage(path) {\r\n workerFn({\r\n data: path\r\n });\r\n }\r\n };\r\n var _workerSelf = {\r\n postMessage: function postMessage(data) {\r\n workerProxy.onmessage({\r\n data: data\r\n });\r\n }\r\n };\r\n\r\n function createWorker(fn) {\r\n if (window.Worker && window.Blob && getWebWorker()) {\r\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\r\n type: 'text/javascript'\r\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n\r\n var url = URL.createObjectURL(blob);\r\n return new Worker(url);\r\n }\r\n\r\n workerFn = fn;\r\n return workerProxy;\r\n }\r\n\r\n function setupWorker() {\r\n if (!workerInstance) {\r\n workerInstance = createWorker(function workerStart(e) {\r\n function dataFunctionManager() {\r\n function completeLayers(layers, comps) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n\r\n if ('ks' in layerData && !layerData.completed) {\r\n layerData.completed = true;\r\n\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n\r\n if (maskProps[j].pt.k[k].e) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (layerData.ty === 0) {\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers, comps);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function completeChars(chars, assets) {\r\n if (chars) {\r\n var i = 0;\r\n var len = chars.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (chars[i].t === 1) {\r\n // var compData = findComp(chars[i].data.refId, assets);\r\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\r\n // chars[i].data.op = 99999;\r\n // chars[i].data.st = 0;\r\n // chars[i].data.sr = 1;\r\n // chars[i].w = compData.w;\r\n // chars[i].data.ks = {\r\n // a: { k: [0, 0, 0], a: 0 },\r\n // p: { k: [0, -compData.h, 0], a: 0 },\r\n // r: { k: 0, a: 0 },\r\n // s: { k: [100, 100], a: 0 },\r\n // o: { k: 100, a: 0 },\r\n // };\r\n\r\n completeLayers(chars[i].data.layers, assets);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findComp(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n return comps[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var comp = findComp(id, comps);\r\n\r\n if (comp) {\r\n if (!comp.layers.__used) {\r\n comp.layers.__used = true;\r\n return comp.layers;\r\n }\r\n\r\n return JSON.parse(JSON.stringify(comp.layers));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function completeShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n\r\n if (arr[i].ks.k[j].e) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path) {\r\n var i;\r\n var len = path.i.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum, animVersionString) {\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var checkText = function () {\r\n var minimumVersion = [4, 4, 14];\r\n\r\n function updateTextLayer(textLayer) {\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [{\r\n s: documentData,\r\n t: 0\r\n }]\r\n };\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n var checkChars = function () {\r\n var minimumVersion = [4, 7, 99];\r\n return function (animationData) {\r\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n var i;\r\n var len = animationData.chars.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n var charData = animationData.chars[i];\r\n\r\n if (charData.data && charData.data.shapes) {\r\n completeShapes(charData.data.shapes);\r\n charData.data.ip = 0;\r\n charData.data.op = 99999;\r\n charData.data.st = 0;\r\n charData.data.sr = 1;\r\n charData.data.ks = {\r\n p: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n s: {\r\n k: [100, 100],\r\n a: 0\r\n },\r\n a: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n r: {\r\n k: 0,\r\n a: 0\r\n },\r\n o: {\r\n k: 100,\r\n a: 0\r\n }\r\n };\r\n\r\n if (!animationData.chars[i].t) {\r\n charData.data.shapes.push({\r\n ty: 'no'\r\n });\r\n charData.data.shapes[0].it.push({\r\n p: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n s: {\r\n k: [100, 100],\r\n a: 0\r\n },\r\n a: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n r: {\r\n k: 0,\r\n a: 0\r\n },\r\n o: {\r\n k: 100,\r\n a: 0\r\n },\r\n sk: {\r\n k: 0,\r\n a: 0\r\n },\r\n sa: {\r\n k: 0,\r\n a: 0\r\n },\r\n ty: 'tr'\r\n });\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n var checkPathProperties = function () {\r\n var minimumVersion = [5, 7, 15];\r\n\r\n function updateTextLayer(textLayer) {\r\n var pathData = textLayer.t.p;\r\n\r\n if (typeof pathData.a === 'number') {\r\n pathData.a = {\r\n a: 0,\r\n k: pathData.a\r\n };\r\n }\r\n\r\n if (typeof pathData.p === 'number') {\r\n pathData.p = {\r\n a: 0,\r\n k: pathData.p\r\n };\r\n }\r\n\r\n if (typeof pathData.r === 'number') {\r\n pathData.r = {\r\n a: 0,\r\n k: pathData.r\r\n };\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n var checkColors = function () {\r\n var minimumVersion = [4, 1, 9];\r\n\r\n function iterateShapes(shapes) {\r\n var i;\r\n var len = shapes.length;\r\n var j;\r\n var jLen;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n iterateShapes(shapes[i].it);\r\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n jLen = shapes[i].c.k.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[i].c.k[j].s) {\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n\r\n if (shapes[i].c.k[j].e) {\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 4) {\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n var checkShapes = function () {\r\n var minimumVersion = [4, 4, 18];\r\n\r\n function completeClosingShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n arr[i].ks.k.c = arr[i].closed;\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n\r\n if (arr[i].ks.k[j].e) {\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeClosingShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n\r\n if (maskProps[j].pt.k[k].e) {\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (layerData.ty === 4) {\r\n completeClosingShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n function completeData(animationData) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkPathProperties(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets);\r\n completeChars(animationData.chars, animationData.assets);\r\n animationData.__complete = true;\r\n }\r\n\r\n function completeText(data) {\r\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n moduleOb.checkColors = checkColors;\r\n moduleOb.checkChars = checkChars;\r\n moduleOb.checkPathProperties = checkPathProperties;\r\n moduleOb.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n return moduleOb;\r\n }\r\n\r\n if (!_workerSelf.dataManager) {\r\n _workerSelf.dataManager = dataFunctionManager();\r\n }\r\n\r\n if (!_workerSelf.assetLoader) {\r\n _workerSelf.assetLoader = function () {\r\n function formatResponse(xhr) {\r\n // using typeof doubles the time of execution of this method,\r\n // so if available, it's better to use the header to validate the type\r\n var contentTypeHeader = xhr.getResponseHeader('content-type');\r\n\r\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\r\n return xhr.response;\r\n }\r\n\r\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\r\n return xhr.response;\r\n }\r\n\r\n if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n }\r\n\r\n if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function loadAsset(path, fullPath, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\r\n\r\n try {\r\n // This crashes on Android WebView prior to KitKat\r\n xhr.responseType = 'json';\r\n } catch (err) {} // eslint-disable-line no-empty\r\n\r\n\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n try {\r\n // Hack to workaround banner validation\r\n xhr.open(['G', 'E', 'T'].join(''), path, true);\r\n } catch (error) {\r\n // Hack to workaround banner validation\r\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\r\n }\r\n\r\n xhr.send();\r\n }\r\n\r\n return {\r\n load: loadAsset\r\n };\r\n }();\r\n }\r\n\r\n if (e.data.type === 'loadAnimation') {\r\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\r\n _workerSelf.dataManager.completeData(data);\r\n\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success'\r\n });\r\n }, function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error'\r\n });\r\n });\r\n } else if (e.data.type === 'complete') {\r\n var animation = e.data.animation;\r\n\r\n _workerSelf.dataManager.completeData(animation);\r\n\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: animation,\r\n status: 'success'\r\n });\r\n } else if (e.data.type === 'loadData') {\r\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success'\r\n });\r\n }, function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error'\r\n });\r\n });\r\n }\r\n });\r\n\r\n workerInstance.onmessage = function (event) {\r\n var data = event.data;\r\n var id = data.id;\r\n var process = processes[id];\r\n processes[id] = null;\r\n\r\n if (data.status === 'success') {\r\n process.onComplete(data.payload);\r\n } else if (process.onError) {\r\n process.onError();\r\n }\r\n };\r\n }\r\n }\r\n\r\n function createProcess(onComplete, onError) {\r\n _counterId += 1;\r\n var id = 'processId_' + _counterId;\r\n processes[id] = {\r\n onComplete: onComplete,\r\n onError: onError\r\n };\r\n return id;\r\n }\r\n\r\n function loadAnimation(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadAnimation',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId\r\n });\r\n }\r\n\r\n function loadData(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadData',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId\r\n });\r\n }\r\n\r\n function completeAnimation(anim, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'complete',\r\n animation: anim,\r\n id: processId\r\n });\r\n }\r\n\r\n return {\r\n loadAnimation: loadAnimation,\r\n loadData: loadData,\r\n completeAnimation: completeAnimation\r\n };\r\n }();\r\n\r\n var ImagePreloader = function () {\r\n var proxyImage = function () {\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgba(0,0,0,0)';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }();\r\n\r\n function imageLoaded() {\r\n this.loadedAssets += 1;\r\n\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, originalPath) {\r\n var path = '';\r\n\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = originalPath;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n\r\n return path;\r\n }\r\n\r\n function testImageLoaded(img) {\r\n var _count = 0;\r\n var intervalId = setInterval(function () {\r\n var box = img.getBBox();\r\n\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n\r\n clearInterval(intervalId);\r\n }\r\n\r\n _count += 1;\r\n }.bind(this), 50);\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createNS('image');\r\n\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n\r\n if (this._elementHelper.append) {\r\n this._elementHelper.append(img);\r\n } else {\r\n this._elementHelper.appendChild(img);\r\n }\r\n\r\n var ob = {\r\n img: img,\r\n assetData: assetData\r\n };\r\n return ob;\r\n }\r\n\r\n function createImgData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded, false);\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData\r\n };\r\n return ob;\r\n }\r\n\r\n function createFootageData(data) {\r\n var ob = {\r\n assetData: data\r\n };\r\n var path = getAssetsPath(data, this.assetsPath, this.path);\r\n dataManager.loadData(path, function (footageData) {\r\n ob.img = footageData;\r\n\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n\r\n this._footageLoaded();\r\n }.bind(this));\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb) {\r\n this.imagesLoadedCb = cb;\r\n var i;\r\n var len = assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!assets[i].layers) {\r\n if (!assets[i].t || assets[i].t === 'seq') {\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n } else if (assets[i].t === 3) {\r\n this.totalFootages += 1;\r\n this.images.push(this.createFootageData(assets[i]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setPath(path) {\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path) {\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getAsset(assetData) {\r\n var i = 0;\r\n var len = this.images.length;\r\n\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loadedImages() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n function loadedFootages() {\r\n return this.totalFootages === this.loadedFootagesCount;\r\n }\r\n\r\n function setCacheType(type, elementHelper) {\r\n if (type === 'svg') {\r\n this._elementHelper = elementHelper;\r\n this._createImageData = this.createImageData.bind(this);\r\n } else {\r\n this._createImageData = this.createImgData.bind(this);\r\n }\r\n }\r\n\r\n function ImagePreloaderFactory() {\r\n this._imageLoaded = imageLoaded.bind(this);\r\n this._footageLoaded = footageLoaded.bind(this);\r\n this.testImageLoaded = testImageLoaded.bind(this);\r\n this.createFootageData = createFootageData.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.totalFootages = 0;\r\n this.loadedAssets = 0;\r\n this.loadedFootagesCount = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n }\r\n\r\n ImagePreloaderFactory.prototype = {\r\n loadAssets: loadAssets,\r\n setAssetsPath: setAssetsPath,\r\n setPath: setPath,\r\n loadedImages: loadedImages,\r\n loadedFootages: loadedFootages,\r\n destroy: destroy,\r\n getAsset: getAsset,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\r\n footageLoaded: footageLoaded,\r\n setCacheType: setCacheType\r\n };\r\n return ImagePreloaderFactory;\r\n }();\r\n\r\n function BaseEvent() {}\r\n\r\n BaseEvent.prototype = {\r\n triggerEvent: function triggerEvent(eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var callbacks = this._cbs[eventName];\r\n\r\n for (var i = 0; i < callbacks.length; i += 1) {\r\n callbacks[i](args);\r\n }\r\n }\r\n },\r\n addEventListener: function addEventListener(eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\r\n\r\n this._cbs[eventName].push(callback);\r\n\r\n return function () {\r\n this.removeEventListener(eventName, callback);\r\n }.bind(this);\r\n },\r\n removeEventListener: function removeEventListener(eventName, callback) {\r\n if (!callback) {\r\n this._cbs[eventName] = null;\r\n } else if (this._cbs[eventName]) {\r\n var i = 0;\r\n var len = this._cbs[eventName].length;\r\n\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n\r\n i -= 1;\r\n len -= 1;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (!this._cbs[eventName].length) {\r\n this._cbs[eventName] = null;\r\n }\r\n }\r\n }\r\n };\r\n\r\n var markerParser = function () {\r\n function parsePayloadLines(payload) {\r\n var lines = payload.split('\\r\\n');\r\n var keys = {};\r\n var line;\r\n var keysCount = 0;\r\n\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n\r\n for (var i = 0; i < _markers.length; i += 1) {\r\n var _marker = _markers[i];\r\n var markerData = {\r\n time: _marker.tm,\r\n duration: _marker.dr\r\n };\r\n\r\n try {\r\n markerData.payload = JSON.parse(_markers[i].cm);\r\n } catch (_) {\r\n try {\r\n markerData.payload = parsePayloadLines(_markers[i].cm);\r\n } catch (__) {\r\n markerData.payload = {\r\n name: _markers[i].cm\r\n };\r\n }\r\n }\r\n\r\n markers.push(markerData);\r\n }\r\n\r\n return markers;\r\n };\r\n }();\r\n\r\n var ProjectInterface = function () {\r\n function registerComposition(comp) {\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function () {\r\n function _thisProjectFunction(name) {\r\n var i = 0;\r\n var len = this.compositions.length;\r\n\r\n while (i < len) {\r\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n\r\n return this.compositions[i].compInterface;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n return _thisProjectFunction;\r\n };\r\n }();\r\n\r\n var renderers = {};\r\n\r\n var registerRenderer = function registerRenderer(key, value) {\r\n renderers[key] = value;\r\n };\r\n\r\n function getRenderer(key) {\r\n return renderers[key];\r\n }\r\n\r\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); }\r\n\r\n var AnimationItem = function AnimationItem() {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.firstFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.isSubframeEnabled = getSubframeEnabled();\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n this.audioController = audioControllerFactory();\r\n this.markers = [];\r\n this.configAnimation = this.configAnimation.bind(this);\r\n this.onSetupError = this.onSetupError.bind(this);\r\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\r\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\r\n };\r\n\r\n extendPrototype([BaseEvent], AnimationItem);\r\n\r\n AnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n\r\n var animType = 'svg';\r\n\r\n if (params.animType) {\r\n animType = params.animType;\r\n } else if (params.renderer) {\r\n animType = params.renderer;\r\n }\r\n\r\n var RendererClass = getRenderer(animType);\r\n this.renderer = new RendererClass(this, params.rendererSettings);\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n\r\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\r\n this.loop = true;\r\n } else if (params.loop === false) {\r\n this.loop = false;\r\n } else {\r\n this.loop = parseInt(params.loop, 10);\r\n }\r\n\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n this.initialSegment = params.initialSegment;\r\n\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\r\n\r\n if (params.animationData) {\r\n this.setupAnimation(params.animationData);\r\n } else if (params.path) {\r\n if (params.path.lastIndexOf('\\\\') !== -1) {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n } else {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n }\r\n\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.onSetupError = function () {\r\n this.trigger('data_failed');\r\n };\r\n\r\n AnimationItem.prototype.setupAnimation = function (data) {\r\n dataManager.completeAnimation(data, this.configAnimation);\r\n };\r\n\r\n AnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (_typeof$4(animationData) !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\r\n }\r\n\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\r\n\r\n if (loop === 'false') {\r\n params.loop = false;\r\n } else if (loop === 'true') {\r\n params.loop = true;\r\n } else if (loop !== '') {\r\n params.loop = parseInt(loop, 10);\r\n }\r\n\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\r\n params.autoplay = autoplay !== 'false';\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n\r\n this.setParams(params);\r\n };\r\n\r\n AnimationItem.prototype.includeLayers = function (data) {\r\n if (data.op > this.animationData.op) {\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n\r\n var layers = this.animationData.layers;\r\n var i;\r\n var len = layers.length;\r\n var newLayers = data.layers;\r\n var j;\r\n var jLen = newLayers.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n\r\n while (i < len) {\r\n if (layers[i].id === newLayers[j].id) {\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n\r\n if (data.chars || data.fonts) {\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n\r\n if (data.assets) {\r\n len = data.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n\r\n this.animationData.__complete = false;\r\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\r\n };\r\n\r\n AnimationItem.prototype.onSegmentComplete = function (data) {\r\n this.animationData = data;\r\n var expressionsPlugin = getExpressionsPlugin();\r\n\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n\r\n this.loadNextSegment();\r\n };\r\n\r\n AnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n\r\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n };\r\n\r\n AnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n\r\n this.loadNextSegment();\r\n };\r\n\r\n AnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n };\r\n\r\n AnimationItem.prototype.preloadImages = function () {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n };\r\n\r\n AnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n\r\n try {\r\n this.animationData = animData;\r\n\r\n if (this.initialSegment) {\r\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n this.firstFrame = Math.round(this.initialSegment[0]);\r\n } else {\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n }\r\n\r\n this.renderer.configAnimation(animData);\r\n\r\n if (!animData.assets) {\r\n animData.assets = [];\r\n }\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n this.markers = markerParser(animData.markers || []);\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n\r\n if (this.isPaused) {\r\n this.audioController.pause();\r\n }\r\n } catch (error) {\r\n this.triggerConfigError(error);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n\r\n if (this.renderer.globalData.fontManager.isLoaded) {\r\n this.checkLoaded();\r\n } else {\r\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\r\n this.isLoaded = true;\r\n var expressionsPlugin = getExpressionsPlugin();\r\n\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n\r\n this.renderer.initItems();\r\n setTimeout(function () {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n };\r\n\r\n AnimationItem.prototype.resize = function (width, height) {\r\n // Adding this validation for backwards compatibility in case an event object was being passed down\r\n var _width = typeof width === 'number' ? width : undefined;\r\n\r\n var _height = typeof height === 'number' ? height : undefined;\r\n\r\n this.renderer.updateContainerSize(_width, _height);\r\n };\r\n\r\n AnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n };\r\n\r\n AnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n this.trigger('drawnFrame');\r\n };\r\n\r\n AnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\r\n\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch (error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.trigger('_pause');\r\n this.audioController.resume();\r\n\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n };\r\n\r\n AnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this.trigger('_play');\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n };\r\n\r\n AnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n if (this.isPaused === true) {\r\n this.play();\r\n } else {\r\n this.pause();\r\n }\r\n };\r\n\r\n AnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n };\r\n\r\n AnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n var numValue = Number(value);\r\n\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n\r\n if (marker) {\r\n this.goToAndStop(marker.time, true);\r\n }\r\n } else if (isFrame) {\r\n this.setCurrentRawFrameValue(value);\r\n } else {\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n\r\n this.pause();\r\n };\r\n\r\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n var numValue = Number(value);\r\n\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n\r\n if (marker) {\r\n if (!marker.duration) {\r\n this.goToAndStop(marker.time, true);\r\n } else {\r\n this.playSegments([marker.time, marker.time + marker.duration], true);\r\n }\r\n }\r\n } else {\r\n this.goToAndStop(numValue, isFrame, name);\r\n }\r\n\r\n this.play();\r\n };\r\n\r\n AnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\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.\r\n\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if (nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\r\n // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\r\n\r\n if (!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n };\r\n\r\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n\r\n if (arr[1] < arr[0]) {\r\n if (this.frameModifier > 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n\r\n this.totalFrames = arr[0] - arr[1];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if (arr[1] > arr[0]) {\r\n if (this.frameModifier < 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n\r\n this.totalFrames = arr[1] - arr[0];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n\r\n this.trigger('segmentStart');\r\n };\r\n\r\n AnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n\r\n if (this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.totalFrames = end - init;\r\n this.timeCompleted = this.totalFrames;\r\n\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n\r\n if (_typeof$4(arr[0]) === 'object') {\r\n var i;\r\n var len = arr.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n };\r\n\r\n AnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.checkSegments = function (offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n AnimationItem.prototype.destroy = function (name) {\r\n if (name && this.name !== name || !this.renderer) {\r\n return;\r\n }\r\n\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = null;\r\n this.onLoopComplete = null;\r\n this.onComplete = null;\r\n this.onSegmentStart = null;\r\n this.onDestroy = null;\r\n this.renderer = null;\r\n this.renderer = null;\r\n this.imagePreloader = null;\r\n this.projectInterface = null;\r\n };\r\n\r\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n };\r\n\r\n AnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n };\r\n\r\n AnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n };\r\n\r\n AnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.setVolume(val);\r\n };\r\n\r\n AnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n };\r\n\r\n AnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.mute();\r\n };\r\n\r\n AnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.unmute();\r\n };\r\n\r\n AnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection);\r\n };\r\n\r\n AnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n };\r\n\r\n AnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n\r\n return path;\r\n };\r\n\r\n AnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n AnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n };\r\n\r\n AnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n };\r\n\r\n AnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n };\r\n\r\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\r\n try {\r\n var element = this.renderer.getElementByPath(path);\r\n element.updateDocumentData(documentData, index);\r\n } catch (error) {// TODO: decide how to handle catch case\r\n }\r\n };\r\n\r\n AnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n\r\n case 'drawnFrame':\r\n this.drawnFrameEvent.currentTime = this.currentFrame;\r\n this.drawnFrameEvent.totalTime = this.totalFrames;\r\n this.drawnFrameEvent.direction = this.frameModifier;\r\n this.triggerEvent(name, this.drawnFrameEvent);\r\n break;\r\n\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n\r\n if (name === 'enterFrame' && this.onEnterFrame) {\r\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n }\r\n\r\n if (name === 'loopComplete' && this.onLoopComplete) {\r\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n }\r\n\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\r\n\r\n if (name === 'segmentStart' && this.onSegmentStart) {\r\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n }\r\n\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n };\r\n\r\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n };\r\n\r\n var animationManager = function () {\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev) {\r\n var i = 0;\r\n var animItem = ev.target;\r\n\r\n while (i < len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData) {\r\n if (!element) {\r\n return null;\r\n }\r\n\r\n var i = 0;\r\n\r\n while (i < len) {\r\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n return registeredAnimations[i].animation;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i;\r\n var lenAnims = registeredAnimations.length;\r\n var animations = [];\r\n\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n\r\n return animations;\r\n }\r\n\r\n function addPlayingCount() {\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount() {\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element) {\r\n animItem.addEventListener('destroy', removeElement);\r\n animItem.addEventListener('_active', addPlayingCount);\r\n animItem.addEventListener('_idle', subtractPlayingCount);\r\n registeredAnimations.push({\r\n elem: element,\r\n animation: animItem\r\n });\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params) {\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n function setSpeed(val, animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n\r\n initTime = nowTime;\r\n\r\n if (playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime) {\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value, isFrame, animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer) {\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n\r\n for (i = 0; i < lenAnims; i += 1) {\r\n if (renderer) {\r\n animElements[i].setAttribute('data-bm-type', renderer);\r\n }\r\n\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\r\n\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerText = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type', renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize() {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate() {\r\n if (!_isFrozen && playingAnimationsNum) {\r\n if (_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n function setVolume(val, animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setVolume(val, animation);\r\n }\r\n }\r\n\r\n function mute(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.mute(animation);\r\n }\r\n }\r\n\r\n function unmute(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.unmute(animation);\r\n }\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize; // moduleOb.start = start;\r\n\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.setVolume = setVolume;\r\n moduleOb.mute = mute;\r\n moduleOb.unmute = unmute;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n }();\r\n\r\n /* eslint-disable */\r\n var BezierFactory = function () {\r\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 */\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a, b, c, d, nm) {\r\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n\r\n\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) {\r\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n }\r\n\r\n function B(aA1, aA2) {\r\n return 3.0 * aA2 - 6.0 * aA1;\r\n }\r\n\r\n function C(aA1) {\r\n return 3.0 * aA1;\r\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n\r\n\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n\r\n\r\n function getSlope(aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n var currentX,\r\n currentT,\r\n i = 0;\r\n\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n\r\n return aGuessT;\r\n }\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n\r\n\r\n function BezierEasing(points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n get: function get(x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n // Private part\r\n _precompute: function _precompute() {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n\r\n if (mX1 !== mY1 || mX2 !== mY2) {\r\n this._calcSampleValues();\r\n }\r\n },\r\n _calcSampleValues: function _calcSampleValues() {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function _getTForX(aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n\r\n --currentSample; // Interpolate to provide an initial guess for t\r\n\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n }\r\n\r\n if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n }\r\n };\r\n return ob;\r\n }();\r\n\r\n var pooling = function () {\r\n function _double(arr) {\r\n return arr.concat(createSizedArray(arr.length));\r\n }\r\n\r\n return {\r\n \"double\": _double\r\n };\r\n }();\r\n\r\n var poolFactory = function () {\r\n return function (initialLength, _create, _release) {\r\n var _length = 0;\r\n var _maxLength = initialLength;\r\n var pool = createSizedArray(_maxLength);\r\n var ob = {\r\n newElement: newElement,\r\n release: release\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\r\n\r\n return element;\r\n }\r\n\r\n function release(element) {\r\n if (_length === _maxLength) {\r\n pool = pooling[\"double\"](pool);\r\n _maxLength *= 2;\r\n }\r\n\r\n if (_release) {\r\n _release(element);\r\n }\r\n\r\n pool[_length] = element;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n };\r\n }();\r\n\r\n var bezierLengthPool = function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', getDefaultCurveSegments()),\r\n lengths: createTypedArray('float32', getDefaultCurveSegments())\r\n };\r\n }\r\n\r\n return poolFactory(8, create);\r\n }();\r\n\r\n var segmentsLengthPool = function () {\r\n function create() {\r\n return {\r\n lengths: [],\r\n totalLength: 0\r\n };\r\n }\r\n\r\n function release(element) {\r\n var i;\r\n var len = element.lengths.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\r\n\r\n element.lengths.length = 0;\r\n }\r\n\r\n return poolFactory(8, create, release);\r\n }();\r\n\r\n function bezFunction() {\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n }\r\n\r\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n var diffDist;\r\n\r\n if (dist1 > dist2) {\r\n if (dist1 > dist3) {\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if (dist3 > dist2) {\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = function () {\r\n return function (pt1, pt2, pt3, pt4) {\r\n var curveSegments = getDefaultCurveSegments();\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point = [];\r\n var lastPoint = [];\r\n var lengthData = bezierLengthPool.newElement();\r\n len = pt3.length;\r\n\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\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];\r\n point[i] = ptCoord;\r\n\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n\r\n lastPoint[i] = point[i];\r\n }\r\n\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }();\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segmentsLengthPool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i;\r\n var len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n\r\n for (i = 0; i < len - 1; i += 1) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n\r\n if (closed && len) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length) {\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial, point) {\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = function () {\r\n var storedData = {};\r\n return function (pt1, pt2, pt3, pt4) {\r\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n\r\n if (!storedData[bezierName]) {\r\n var curveSegments = getDefaultCurveSegments();\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point;\r\n var lastPoint = null;\r\n\r\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])) {\r\n curveSegments = 2;\r\n }\r\n\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\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];\r\n point[i] = ptCoord;\r\n\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n }\r\n\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n\r\n return storedData[bezierName];\r\n };\r\n }();\r\n\r\n function getDistancePerc(perc, bezierData) {\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bmFloor((len - 1) * perc);\r\n var lengthPos = perc * bezierData.addedLength;\r\n var lPerc = 0;\r\n\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n\r\n while (flag) {\r\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n flag = false;\r\n } else {\r\n initPos += dir;\r\n }\r\n\r\n if (initPos < 0 || initPos >= len - 1) {\r\n // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if (initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n\r\n flag = false;\r\n }\r\n }\r\n\r\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent, bezierData);\r\n var u1 = 1 - t1;\r\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;\r\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;\r\n return [ptX, ptY];\r\n }\r\n\r\n var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n if (startPerc < 0) {\r\n startPerc = 0;\r\n } else if (startPerc > 1) {\r\n startPerc = 1;\r\n }\r\n\r\n var t0 = getDistancePerc(startPerc, bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc, bezierData);\r\n var i;\r\n var len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0 * u0 * u0;\r\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n\r\n var t0t0t0 = t0 * t0 * t0; //\r\n\r\n var u0u0u1 = u0 * u0 * u1;\r\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n\r\n var t0t0t1 = t0 * t0 * t1; //\r\n\r\n var u0u1u1 = u0 * u1 * u1;\r\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t0t1t1 = t0 * t1 * t1; //\r\n\r\n var u1u1u1 = u1 * u1 * u1;\r\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t1t1t1 = t1 * t1 * t1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\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\r\n\r\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\r\n\r\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\r\n\r\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\r\n }\r\n\r\n return bezierSegmentPoints;\r\n }\r\n\r\n return {\r\n getSegmentsLength: getSegmentsLength,\r\n getNewSegment: getNewSegment,\r\n getPointInSegment: getPointInSegment,\r\n buildBezierData: buildBezierData,\r\n pointOnLine2D: pointOnLine2D,\r\n pointOnLine3D: pointOnLine3D\r\n };\r\n }\r\n\r\n var bez = bezFunction();\r\n\r\n var PropertyFactory = function () {\r\n var initFrame = initialDefaultFrame;\r\n var mathAbs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n\r\n iterationIndex = 0;\r\n break;\r\n }\r\n\r\n if (nextKeyData.t - offsetTime > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\r\n\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n var k;\r\n var kLen;\r\n var perc;\r\n var jLen;\r\n var j;\r\n var fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n\r\n if (keyData.to) {\r\n if (!keyframeMetadata.bezierData) {\r\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n\r\n var bezierData = keyframeMetadata.bezierData;\r\n\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n } // caching._lastKeyframeIndex = -1;\r\n\r\n } else {\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\r\n var segmentPerc;\r\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\r\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (j < jLen - 1) {\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX;\r\n var outY;\r\n var inX;\r\n var inY;\r\n var keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n } else {\r\n for (i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if (frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if (keyData.o.x.constructor === Array) {\r\n if (!keyframeMetadata.__fnct) {\r\n keyframeMetadata.__fnct = [];\r\n }\r\n\r\n if (!keyframeMetadata.__fnct[i]) {\r\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyframeMetadata.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct[i];\r\n }\r\n } else if (!keyframeMetadata.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.keyframeMetadata = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct;\r\n }\r\n\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n } // based on @Toji's https://github.com/toji/gl-matrix/\r\n\r\n\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0];\r\n var ay = a[1];\r\n var az = a[2];\r\n var aw = a[3];\r\n var bx = b[0];\r\n var by = b[1];\r\n var bz = b[2];\r\n var bw = b[3];\r\n var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n\r\n if (1.0 - cosom > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n out[0] = heading / degToRads;\r\n out[1] = attitude / degToRads;\r\n out[2] = bank / degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n return [x, y, z, w];\r\n }\r\n\r\n function getValueAtCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n\r\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\r\n if (this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n\r\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0;\r\n var len = this.v.length;\r\n\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n\r\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i;\r\n var len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {\r\n lastFrame: initFrame,\r\n lastIndex: 0,\r\n value: 0,\r\n _lastKeyframeIndex: -1\r\n };\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n var i;\r\n var len = data.k.length;\r\n var s;\r\n var e;\r\n var to;\r\n var ti;\r\n\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n\r\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])) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n\r\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n\r\n this._caching = {\r\n lastFrame: initFrame,\r\n lastIndex: 0,\r\n value: createTypedArray('float32', arrLen)\r\n };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n\r\n if (!data.k.length) {\r\n p = new ValueProperty(elem, data, mult, container);\r\n } else if (typeof data.k[0] === 'number') {\r\n p = new MultiDimensionalProperty(elem, data, mult, container);\r\n } else {\r\n switch (type) {\r\n case 0:\r\n p = new KeyframedValueProperty(elem, data, mult, container);\r\n break;\r\n\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\r\n\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp\r\n };\r\n return ob;\r\n }();\r\n\r\n function DynamicPropertyContainer() {}\r\n\r\n DynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function addDynamicProperty(prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n this.container.addDynamicProperty(this);\r\n this._isAnimated = true;\r\n }\r\n },\r\n iterateDynamicProperties: function iterateDynamicProperties() {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\r\n this.container = container;\r\n this.dynamicProperties = [];\r\n this._mdf = false;\r\n this._isAnimated = false;\r\n }\r\n };\r\n\r\n var pointPool = function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n\r\n return poolFactory(8, create);\r\n }();\r\n\r\n function ShapePath() {\r\n this.c = false;\r\n this._length = 0;\r\n this._maxLength = 8;\r\n this.v = createSizedArray(this._maxLength);\r\n this.o = createSizedArray(this._maxLength);\r\n this.i = createSizedArray(this._maxLength);\r\n }\r\n\r\n ShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n\r\n while (i < len) {\r\n this.v[i] = pointPool.newElement();\r\n this.o[i] = pointPool.newElement();\r\n this.i[i] = pointPool.newElement();\r\n i += 1;\r\n }\r\n };\r\n\r\n ShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n\r\n this._length = len;\r\n };\r\n\r\n ShapePath.prototype.doubleArrayLength = function () {\r\n this.v = this.v.concat(createSizedArray(this._maxLength));\r\n this.i = this.i.concat(createSizedArray(this._maxLength));\r\n this.o = this.o.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n };\r\n\r\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n\r\n if (!arr[pos] || arr[pos] && !replace) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n };\r\n\r\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n this.setXYAt(vX, vY, 'v', pos, replace);\r\n this.setXYAt(oX, oY, 'o', pos, replace);\r\n this.setXYAt(iX, iY, 'i', pos, replace);\r\n };\r\n\r\n ShapePath.prototype.reverse = function () {\r\n var newPath = new ShapePath();\r\n newPath.setPathData(this.c, this._length);\r\n var vertices = this.v;\r\n var outPoints = this.o;\r\n var inPoints = this.i;\r\n var init = 0;\r\n\r\n if (this.c) {\r\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n var i;\r\n\r\n for (i = init; i < len; i += 1) {\r\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n\r\n return newPath;\r\n };\r\n\r\n ShapePath.prototype.length = function () {\r\n return this._length;\r\n };\r\n\r\n var shapePool = function () {\r\n function create() {\r\n return new ShapePath();\r\n }\r\n\r\n function release(shapePath) {\r\n var len = shapePath._length;\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n pointPool.release(shapePath.v[i]);\r\n pointPool.release(shapePath.i[i]);\r\n pointPool.release(shapePath.o[i]);\r\n shapePath.v[i] = null;\r\n shapePath.i[i] = null;\r\n shapePath.o[i] = null;\r\n }\r\n\r\n shapePath._length = 0;\r\n shapePath.c = false;\r\n }\r\n\r\n function clone(shape) {\r\n var cloned = factory.newElement();\r\n var i;\r\n var len = shape._length === undefined ? shape.v.length : shape._length;\r\n cloned.setLength(len);\r\n cloned.c = shape.c;\r\n\r\n for (i = 0; i < len; i += 1) {\r\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);\r\n }\r\n\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n return factory;\r\n }();\r\n\r\n function ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n }\r\n\r\n ShapeCollection.prototype.addShape = function (shapeData) {\r\n if (this._length === this._maxLength) {\r\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n }\r\n\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n };\r\n\r\n ShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n\r\n this._length = 0;\r\n };\r\n\r\n var shapeCollectionPool = function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release\r\n };\r\n var _length = 0;\r\n var _maxLength = 4;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n function newShapeCollection() {\r\n var shapeCollection;\r\n\r\n if (_length) {\r\n _length -= 1;\r\n shapeCollection = pool[_length];\r\n } else {\r\n shapeCollection = new ShapeCollection();\r\n }\r\n\r\n return shapeCollection;\r\n }\r\n\r\n function release(shapeCollection) {\r\n var i;\r\n var len = shapeCollection._length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\r\n\r\n shapeCollection._length = 0;\r\n\r\n if (_length === _maxLength) {\r\n pool = pooling[\"double\"](pool);\r\n _maxLength *= 2;\r\n }\r\n\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var ShapePropertyFactory = function () {\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS;\r\n var keyPropE;\r\n var isHold;\r\n var j;\r\n var k;\r\n var jLen;\r\n var kLen;\r\n var perc;\r\n var vertexValue;\r\n var kf = this.keyframes;\r\n\r\n if (frameNum < kf[0].t - this.offsetTime) {\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\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 } */\r\n\r\n isHold = true;\r\n } else {\r\n var i = iterationIndex;\r\n var len = kf.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n\r\n if (nextKeyData.t - this.offsetTime > frameNum) {\r\n break;\r\n }\r\n\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n\r\n if (!isHold) {\r\n if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n perc = 1;\r\n } else if (frameNum < keyData.t - this.offsetTime) {\r\n perc = 0;\r\n } else {\r\n var fnc;\r\n\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\r\n }\r\n\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n\r\n keyPropS = keyData.s[0];\r\n }\r\n\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n for (k = 0; k < kLen; k += 1) {\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n\r\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\r\n /// /\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\r\n }\r\n\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape() {\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n return false;\r\n }\r\n\r\n var i;\r\n var len = shape1._length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\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]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if (!shapesEqual(this.v, newPath)) {\r\n this.v = shapePool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n\r\n if (this.kf) {\r\n finalValue = this.pv;\r\n } else if (this.data.ks) {\r\n finalValue = this.data.ks.k;\r\n } else {\r\n finalValue = this.data.pt.k;\r\n }\r\n\r\n var i;\r\n var len = this.effectsSequence.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function ShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shapePool.clone(pathData);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.keyframesMetadata = [];\r\n this.k = true;\r\n this.kf = true;\r\n var len = this.keyframes[0].s[0].i.length;\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = {\r\n lastFrame: initFrame,\r\n lastIndex: 0\r\n };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = function () {\r\n var cPoint = roundCorner;\r\n\r\n function EllShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n }\r\n\r\n EllShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function convertEllToPath() {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var s0 = this.s.v[0] / 2;\r\n var s1 = this.s.v[1] / 2;\r\n\r\n var _cw = this.d !== 3;\r\n\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n }\r\n };\r\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n return EllShapePropertyFactory;\r\n }();\r\n\r\n var StarShapeProperty = function () {\r\n function StarShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n\r\n if (data.sy === 1) {\r\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n\r\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n }\r\n\r\n StarShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function convertStarToPath() {\r\n var numPts = Math.floor(this.pt.v) * 2;\r\n var angle = Math.PI * 2 / numPts;\r\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\r\n\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\r\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\r\n var i;\r\n var rad;\r\n var roundness;\r\n var perimSegment;\r\n var currentAng = -Math.PI / 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n\r\n for (i = 0; i < numPts; i += 1) {\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\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);\r\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; */\r\n\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function convertPolygonToPath() {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = Math.PI * 2 / numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\r\n var i;\r\n var currentAng = -Math.PI * 0.5;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n\r\n for (i = 0; i < numPts; i += 1) {\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\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);\r\n currentAng += angle * dir;\r\n }\r\n\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n }\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n return StarShapePropertyFactory;\r\n }();\r\n\r\n var RectShapeProperty = function () {\r\n function RectShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n }\r\n\r\n RectShapePropertyFactory.prototype = {\r\n convertRectToPath: function convertRectToPath() {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var v0 = this.s.v[0] / 2;\r\n var v1 = this.s.v[1] / 2;\r\n var round = bmMin(v0, v1, this.r.v);\r\n var cPoint = round * (1 - roundCorner);\r\n this.v._length = 0;\r\n\r\n if (this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n }\r\n } else {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n }\r\n }\r\n },\r\n getValue: function getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertRectToPath();\r\n }\r\n },\r\n reset: resetShape\r\n };\r\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n return RectShapePropertyFactory;\r\n }();\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n\r\n if (type === 3 || type === 4) {\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n\r\n if (keys.length) {\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n } else {\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n } else if (type === 5) {\r\n prop = new RectShapeProperty(elem, data);\r\n } else if (type === 6) {\r\n prop = new EllShapeProperty(elem, data);\r\n } else if (type === 7) {\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n }();\r\n\r\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 */\r\n\r\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 */\r\n\r\n var Matrix = function () {\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset() {\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx, sy) {\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay) {\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle) {\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\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);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if (!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\r\n\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n\r\n if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n var _p = this.props;\r\n\r\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) {\r\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] *= p2; // }\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if (!this._identityCalculated) {\r\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);\r\n this._identityCalculated = true;\r\n }\r\n\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\r\n };\r\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 }; */\r\n }\r\n\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function getInverseMatrix() {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5] / determinant;\r\n var b = -this.props[1] / determinant;\r\n var c = -this.props[4] / determinant;\r\n var d = this.props[0] / determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n var inverseMatrix = new Matrix();\r\n inverseMatrix.props[0] = a;\r\n inverseMatrix.props[1] = b;\r\n inverseMatrix.props[4] = c;\r\n inverseMatrix.props[5] = d;\r\n inverseMatrix.props[12] = e;\r\n inverseMatrix.props[13] = f;\r\n return inverseMatrix;\r\n }\r\n\r\n function inversePoint(pt) {\r\n var inverseMatrix = this.getInverseMatrix();\r\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n }\r\n\r\n function inversePoints(pts) {\r\n var i;\r\n var len = pts.length;\r\n var retPts = [];\r\n\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n\r\n if (this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0];\r\n var p1 = this.props[1];\r\n var p4 = this.props[4];\r\n var p5 = this.props[5];\r\n var p12 = this.props[12];\r\n var p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\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]];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if (this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n\r\n var _p = this.props;\r\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;\r\n }\r\n\r\n function toCSS() {\r\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.\r\n\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n\r\n while (i < 16) {\r\n cssValue += _rnd(props[i] * v) / v;\r\n cssValue += i === 15 ? ')' : ',';\r\n i += 1;\r\n }\r\n\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n\r\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\r\n return _rnd(val * v) / v;\r\n }\r\n\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\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.\r\n\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n\r\n var _a = roundMatrixProperty(props[0]);\r\n\r\n var _b = roundMatrixProperty(props[1]);\r\n\r\n var _c = roundMatrixProperty(props[4]);\r\n\r\n var _d = roundMatrixProperty(props[5]);\r\n\r\n var _e = roundMatrixProperty(props[12]);\r\n\r\n var _f = roundMatrixProperty(props[13]);\r\n\r\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n }\r\n\r\n return function () {\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n }();\r\n\r\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); }\r\n var lottie = {};\r\n var standalone = '__[STANDALONE]__';\r\n var animationData = '__[ANIMATIONDATA]__';\r\n var renderer = '';\r\n\r\n function setLocation(href) {\r\n setLocationHref(href);\r\n }\r\n\r\n function searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n }\r\n\r\n function setSubframeRendering(flag) {\r\n setSubframeEnabled(flag);\r\n }\r\n\r\n function setPrefix(prefix) {\r\n setIdPrefix(prefix);\r\n }\r\n\r\n function loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n\r\n return animationManager.loadAnimation(params);\r\n }\r\n\r\n function setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n setDefaultCurveSegments(200);\r\n break;\r\n\r\n default:\r\n case 'medium':\r\n setDefaultCurveSegments(50);\r\n break;\r\n\r\n case 'low':\r\n setDefaultCurveSegments(10);\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n setDefaultCurveSegments(value);\r\n }\r\n\r\n if (getDefaultCurveSegments() >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n }\r\n\r\n function inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n }\r\n\r\n function installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n setExpressionsPlugin(plugin);\r\n }\r\n }\r\n\r\n function getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n\r\n case 'matrix':\r\n return Matrix;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n lottie.play = animationManager.play;\r\n lottie.pause = animationManager.pause;\r\n lottie.setLocationHref = setLocation;\r\n lottie.togglePause = animationManager.togglePause;\r\n lottie.setSpeed = animationManager.setSpeed;\r\n lottie.setDirection = animationManager.setDirection;\r\n lottie.stop = animationManager.stop;\r\n lottie.searchAnimations = searchAnimations;\r\n lottie.registerAnimation = animationManager.registerAnimation;\r\n lottie.loadAnimation = loadAnimation;\r\n lottie.setSubframeRendering = setSubframeRendering;\r\n lottie.resize = animationManager.resize; // lottie.start = start;\r\n\r\n lottie.goToAndStop = animationManager.goToAndStop;\r\n lottie.destroy = animationManager.destroy;\r\n lottie.setQuality = setQuality;\r\n lottie.inBrowser = inBrowser;\r\n lottie.installPlugin = installPlugin;\r\n lottie.freeze = animationManager.freeze;\r\n lottie.unfreeze = animationManager.unfreeze;\r\n lottie.setVolume = animationManager.setVolume;\r\n lottie.mute = animationManager.mute;\r\n lottie.unmute = animationManager.unmute;\r\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\n lottie.useWebWorker = setWebWorker;\r\n lottie.setIDPrefix = setPrefix;\r\n lottie.__getFactory = getFactory;\r\n lottie.version = '5.10.0';\r\n\r\n function checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n }\r\n\r\n function getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n\r\n if (decodeURIComponent(pair[0]) == variable) {\r\n // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var queryString = '';\r\n\r\n if (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: ''\r\n };\r\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\r\n\r\n renderer = getQueryVariable('renderer');\r\n }\r\n\r\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\r\n\r\n try {\r\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\r\n ) {\r\n window.bodymovin = lottie;\r\n }\r\n } catch (err) {//\r\n }\r\n\r\n var ShapeModifiers = function () {\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm, factory) {\r\n if (!modifiers[nm]) {\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm, elem, data) {\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n function ShapeModifier() {}\r\n\r\n ShapeModifier.prototype.initModifierProperties = function () {};\r\n\r\n ShapeModifier.prototype.addShapeToModifier = function () {};\r\n\r\n ShapeModifier.prototype.addShape = function (data) {\r\n if (!this.closed) {\r\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.\r\n data.sh.container.addDynamicProperty(data.sh);\r\n var shapeData = {\r\n shape: data.sh,\r\n data: data,\r\n localShapeCollection: shapeCollectionPool.newShapeCollection()\r\n };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n };\r\n\r\n ShapeModifier.prototype.init = function (elem, data) {\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n };\r\n\r\n ShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n function TrimModifier() {}\r\n\r\n extendPrototype([ShapeModifier], TrimModifier);\r\n\r\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n };\r\n\r\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n };\r\n\r\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1\r\n });\r\n }\r\n\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n\r\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n\r\n return shapeSegments;\r\n };\r\n\r\n TrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n\r\n pathsData.length = 0;\r\n return pathsData;\r\n };\r\n\r\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n\r\n if (this._mdf || _isFirstFrame) {\r\n var o = this.o.v % 360 / 360;\r\n\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n\r\n if (this.s.v > 1) {\r\n s = 1 + o;\r\n } else if (this.s.v < 0) {\r\n s = 0 + o;\r\n } else {\r\n s = this.s.v + o;\r\n }\r\n\r\n if (this.e.v > 1) {\r\n e = 1 + o;\r\n } else if (this.e.v < 0) {\r\n e = 0 + o;\r\n } else {\r\n e = this.e.v + o;\r\n }\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var pathsData;\r\n var pathData;\r\n var totalShapeLength;\r\n var totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\r\n var segments = [];\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\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\r\n\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n\r\n jLen = edges.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength * shapeE\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * (shapeS - 1),\r\n e: shapeData.totalShapeLength * (shapeE - 1)\r\n });\r\n } else {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength\r\n });\r\n segments.push({\r\n s: 0,\r\n e: shapeData.totalShapeLength * (shapeE - 1)\r\n });\r\n }\r\n\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n }\r\n\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n }\r\n\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n // Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n };\r\n\r\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n };\r\n\r\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n };\r\n\r\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n };\r\n\r\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i;\r\n var len = shapeData.shape.paths._length;\r\n var j;\r\n var jLen;\r\n var addedLength = 0;\r\n var currentLengthData;\r\n var segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n\r\n if (!shapePath) {\r\n shapePath = shapePool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n\r\n shapes.push(shapePath);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if (addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\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]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\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]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n }\r\n\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n\r\n if (i < len - 1) {\r\n shapePath = shapePool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n\r\n return shapes;\r\n };\r\n\r\n function PuckerAndBloatModifier() {}\r\n\r\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\n\r\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this._isAnimated = !!this.amount.effectsSequence.length;\r\n };\r\n\r\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n var percent = amount / 100;\r\n var centerPoint = [0, 0];\r\n var pathLength = path._length;\r\n var i = 0;\r\n\r\n for (i = 0; i < pathLength; i += 1) {\r\n centerPoint[0] += path.v[i][0];\r\n centerPoint[1] += path.v[i][1];\r\n }\r\n\r\n centerPoint[0] /= pathLength;\r\n centerPoint[1] /= pathLength;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n\r\n for (i = 0; i < pathLength; i += 1) {\r\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n }\r\n\r\n return clonedPath;\r\n };\r\n\r\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n var TransformPropertyFactory = function () {\r\n var defaultVector = [0, 0];\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\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]);\r\n }\r\n\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n if (this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n var frameRate;\r\n this.v.cloneFromProps(this.pre.props);\r\n\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n\r\n if (this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\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]);\r\n }\r\n\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n\r\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px;\r\n var py = this.py;\r\n\r\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\r\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\r\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\r\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n }\r\n } else {\r\n v2 = defaultVector;\r\n v1 = v2;\r\n }\r\n\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n\r\n if (this.data.p && this.data.p.s) {\r\n if (this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if (!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n\r\n if (!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n\r\n if (this.sk) {\r\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n if (this.r) {\r\n if (!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n }\r\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\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]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {//\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem, data, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix(); // Precalculated matrix with non animated properties\r\n\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n\r\n if (data.p && data.p.s) {\r\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n\r\n if (data.p.z) {\r\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n }\r\n } else {\r\n this.p = PropertyFactory.getProp(elem, data.p || {\r\n k: [0, 0, 0]\r\n }, 1, 0, this);\r\n }\r\n\r\n if (data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n data.or.k[i].to = null;\r\n data.or.k[i].ti = null;\r\n }\r\n }\r\n\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\r\n\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || {\r\n k: 0\r\n }, 0, degToRads, this);\r\n }\r\n\r\n if (data.sk) {\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n\r\n this.a = PropertyFactory.getProp(elem, data.a || {\r\n k: [0, 0, 0]\r\n }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || {\r\n k: [100, 100, 100]\r\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.\r\n\r\n if (data.o) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n } else {\r\n this.o = {\r\n _mdf: false,\r\n v: 1\r\n };\r\n }\r\n\r\n this._isDirty = true;\r\n\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient\r\n };\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem, data, container) {\r\n return new TransformProperty(elem, data, container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty\r\n };\r\n }();\r\n\r\n function RepeaterModifier() {}\r\n\r\n extendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n this.data = data;\r\n\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n };\r\n\r\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n };\r\n\r\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, arr[pos]);\r\n\r\n while (pos > 0) {\r\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\r\n\r\n this._elements.unshift(arr[pos]);\r\n }\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n };\r\n\r\n RepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n };\r\n\r\n RepeaterModifier.prototype.cloneElements = function (elements) {\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n };\r\n\r\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n };\r\n\r\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var items;\r\n var itemsTransform;\r\n var i;\r\n var dir;\r\n var cont;\r\n var hasReloaded = false;\r\n\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n\r\n if (this._groups.length < copies) {\r\n while (this._groups.length < copies) {\r\n var group = {\r\n it: this.cloneElements(this._elements),\r\n ty: 'gr'\r\n };\r\n group.it.push({\r\n a: {\r\n a: 0,\r\n ix: 1,\r\n k: [0, 0]\r\n },\r\n nm: 'Transform',\r\n o: {\r\n a: 0,\r\n ix: 7,\r\n k: 100\r\n },\r\n p: {\r\n a: 0,\r\n ix: 2,\r\n k: [0, 0]\r\n },\r\n r: {\r\n a: 1,\r\n ix: 6,\r\n k: [{\r\n s: 0,\r\n e: 0,\r\n t: 0\r\n }, {\r\n s: 0,\r\n e: 0,\r\n t: 1\r\n }]\r\n },\r\n s: {\r\n a: 0,\r\n ix: 3,\r\n k: [100, 100]\r\n },\r\n sa: {\r\n a: 0,\r\n ix: 5,\r\n k: 0\r\n },\r\n sk: {\r\n a: 0,\r\n ix: 4,\r\n k: 0\r\n },\r\n ty: 'tr'\r\n });\r\n this.arr.splice(0, 0, group);\r\n\r\n this._groups.splice(0, 0, group);\r\n\r\n this._currentCopies += 1;\r\n }\r\n\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n\r\n cont = 0;\r\n var renderFlag;\r\n\r\n for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n\r\n if (transformData.transform.op.v !== 0) {\r\n transformData.transform.op._mdf = true;\r\n transformData.transform.op.v = 0;\r\n } else {\r\n transformData.transform.op._mdf = false;\r\n }\r\n }\r\n\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies; /// /\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset % 1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if (offset > 0) {\r\n while (iteration < roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if (offset < 0) {\r\n while (iteration > roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j;\r\n var jLen;\r\n\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\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));\r\n\r\n if (iteration !== 0) {\r\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n\r\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]);\r\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]);\r\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]);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n\r\n return hasReloaded;\r\n };\r\n\r\n RepeaterModifier.prototype.addShape = function () {};\r\n\r\n function RoundCornersModifier() {}\r\n\r\n extendPrototype([ShapeModifier], RoundCornersModifier);\r\n\r\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n };\r\n\r\n RoundCornersModifier.prototype.processPath = function (path, round) {\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var i;\r\n var len = path._length;\r\n var currentV;\r\n var currentI;\r\n var currentO;\r\n var closerV;\r\n var distance;\r\n var newPosPerc;\r\n var index = 0;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n\r\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n if ((i === 0 || i === len - 1) && !path.c) {\r\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\r\n\r\n index += 1;\r\n } else {\r\n if (i === 0) {\r\n closerV = path.v[len - 1];\r\n } else {\r\n closerV = path.v[i - 1];\r\n }\r\n\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = iX;\r\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n vY = iY;\r\n oX = vX - (vX - currentV[0]) * roundCorner;\r\n oY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n\r\n if (i === len - 1) {\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i + 1];\r\n }\r\n\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = oX;\r\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n vY = oY;\r\n iX = vX - (vX - currentV[0]) * roundCorner;\r\n iY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n }\r\n } else {\r\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);\r\n index += 1;\r\n }\r\n }\r\n\r\n return clonedPath;\r\n };\r\n\r\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var rd = this.rd.v;\r\n\r\n if (rd !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function floatEqual(a, b) {\r\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\r\n }\r\n\r\n function floatZero(f) {\r\n return Math.abs(f) <= 0.00001;\r\n }\r\n\r\n function lerp(p0, p1, amount) {\r\n return p0 * (1 - amount) + p1 * amount;\r\n }\r\n\r\n function lerpPoint(p0, p1, amount) {\r\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\r\n }\r\n\r\n function quadRoots(a, b, c) {\r\n // no root\r\n if (a === 0) return [];\r\n var s = b * b - 4 * a * c; // Complex roots\r\n\r\n if (s < 0) return [];\r\n var singleRoot = -b / (2 * a); // 1 root\r\n\r\n if (s === 0) return [singleRoot];\r\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\r\n\r\n return [singleRoot - delta, singleRoot + delta];\r\n }\r\n\r\n function polynomialCoefficients(p0, p1, p2, p3) {\r\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\r\n }\r\n\r\n function singlePoint(p) {\r\n return new PolynomialBezier(p, p, p, p, false);\r\n }\r\n\r\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\r\n if (linearize && pointEqual(p0, p1)) {\r\n p1 = lerpPoint(p0, p3, 1 / 3);\r\n }\r\n\r\n if (linearize && pointEqual(p2, p3)) {\r\n p2 = lerpPoint(p0, p3, 2 / 3);\r\n }\r\n\r\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\r\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\r\n this.a = [coeffx[0], coeffy[0]];\r\n this.b = [coeffx[1], coeffy[1]];\r\n this.c = [coeffx[2], coeffy[2]];\r\n this.d = [coeffx[3], coeffy[3]];\r\n this.points = [p0, p1, p2, p3];\r\n }\r\n\r\n PolynomialBezier.prototype.point = function (t) {\r\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]];\r\n };\r\n\r\n PolynomialBezier.prototype.derivative = function (t) {\r\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]];\r\n };\r\n\r\n PolynomialBezier.prototype.tangentAngle = function (t) {\r\n var p = this.derivative(t);\r\n return Math.atan2(p[1], p[0]);\r\n };\r\n\r\n PolynomialBezier.prototype.normalAngle = function (t) {\r\n var p = this.derivative(t);\r\n return Math.atan2(p[0], p[1]);\r\n };\r\n\r\n PolynomialBezier.prototype.inflectionPoints = function () {\r\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\r\n if (floatZero(denom)) return [];\r\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\r\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\r\n if (square < 0) return [];\r\n var root = Math.sqrt(square);\r\n\r\n if (floatZero(root)) {\r\n if (root > 0 && root < 1) return [tcusp];\r\n return [];\r\n }\r\n\r\n return [tcusp - root, tcusp + root].filter(function (r) {\r\n return r > 0 && r < 1;\r\n });\r\n };\r\n\r\n PolynomialBezier.prototype.split = function (t) {\r\n if (t <= 0) return [singlePoint(this.points[0]), this];\r\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\r\n var p10 = lerpPoint(this.points[0], this.points[1], t);\r\n var p11 = lerpPoint(this.points[1], this.points[2], t);\r\n var p12 = lerpPoint(this.points[2], this.points[3], t);\r\n var p20 = lerpPoint(p10, p11, t);\r\n var p21 = lerpPoint(p11, p12, t);\r\n var p3 = lerpPoint(p20, p21, t);\r\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\r\n };\r\n\r\n function extrema(bez, comp) {\r\n var min = bez.points[0][comp];\r\n var max = bez.points[bez.points.length - 1][comp];\r\n\r\n if (min > max) {\r\n var e = max;\r\n max = min;\r\n min = e;\r\n } // Derivative roots to find min/max\r\n\r\n\r\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\r\n\r\n for (var i = 0; i < f.length; i += 1) {\r\n if (f[i] > 0 && f[i] < 1) {\r\n var val = bez.point(f[i])[comp];\r\n if (val < min) min = val;else if (val > max) max = val;\r\n }\r\n }\r\n\r\n return {\r\n min: min,\r\n max: max\r\n };\r\n }\r\n\r\n PolynomialBezier.prototype.bounds = function () {\r\n return {\r\n x: extrema(this, 0),\r\n y: extrema(this, 1)\r\n };\r\n };\r\n\r\n PolynomialBezier.prototype.boundingBox = function () {\r\n var bounds = this.bounds();\r\n return {\r\n left: bounds.x.min,\r\n right: bounds.x.max,\r\n top: bounds.y.min,\r\n bottom: bounds.y.max,\r\n width: bounds.x.max - bounds.x.min,\r\n height: bounds.y.max - bounds.y.min,\r\n cx: (bounds.x.max + bounds.x.min) / 2,\r\n cy: (bounds.y.max + bounds.y.min) / 2\r\n };\r\n };\r\n\r\n function intersectData(bez, t1, t2) {\r\n var box = bez.boundingBox();\r\n return {\r\n cx: box.cx,\r\n cy: box.cy,\r\n width: box.width,\r\n height: box.height,\r\n bez: bez,\r\n t: (t1 + t2) / 2,\r\n t1: t1,\r\n t2: t2\r\n };\r\n }\r\n\r\n function splitData(data) {\r\n var split = data.bez.split(0.5);\r\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\r\n }\r\n\r\n function boxIntersect(b1, b2) {\r\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\r\n }\r\n\r\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\r\n if (!boxIntersect(d1, d2)) return;\r\n\r\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\r\n intersections.push([d1.t, d2.t]);\r\n return;\r\n }\r\n\r\n var d1s = splitData(d1);\r\n var d2s = splitData(d2);\r\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\r\n }\r\n\r\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\r\n if (tolerance === undefined) tolerance = 2;\r\n if (maxRecursion === undefined) maxRecursion = 7;\r\n var intersections = [];\r\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\r\n return intersections;\r\n };\r\n\r\n PolynomialBezier.shapeSegment = function (shapePath, index) {\r\n var nextIndex = (index + 1) % shapePath.length();\r\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\r\n };\r\n\r\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\r\n var nextIndex = (index + 1) % shapePath.length();\r\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\r\n };\r\n\r\n function crossProduct(a, b) {\r\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]];\r\n }\r\n\r\n function lineIntersection(start1, end1, start2, end2) {\r\n var v1 = [start1[0], start1[1], 1];\r\n var v2 = [end1[0], end1[1], 1];\r\n var v3 = [start2[0], start2[1], 1];\r\n var v4 = [end2[0], end2[1], 1];\r\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\r\n if (floatZero(r[2])) return null;\r\n return [r[0] / r[2], r[1] / r[2]];\r\n }\r\n\r\n function polarOffset(p, angle, length) {\r\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\r\n }\r\n\r\n function pointDistance(p1, p2) {\r\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\r\n }\r\n\r\n function pointEqual(p1, p2) {\r\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\r\n }\r\n\r\n function ZigZagModifier() {}\r\n\r\n extendPrototype([ShapeModifier], ZigZagModifier);\r\n\r\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\r\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\r\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\r\n };\r\n\r\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\r\n var angO = angle - Math.PI / 2;\r\n var angI = angle + Math.PI / 2;\r\n var px = point[0] + Math.cos(angle) * direction * amplitude;\r\n var py = point[1] - Math.sin(angle) * direction * amplitude;\r\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());\r\n }\r\n\r\n function getPerpendicularVector(pt1, pt2) {\r\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\r\n var rot = -Math.PI * 0.5;\r\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\r\n return rotatedVector;\r\n }\r\n\r\n function getProjectingAngle(path, cur) {\r\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\r\n var nextIndex = (cur + 1) % path.length();\r\n var prevPoint = path.v[prevIndex];\r\n var nextPoint = path.v[nextIndex];\r\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\r\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\r\n }\r\n\r\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\r\n var angle = getProjectingAngle(path, cur);\r\n var point = path.v[cur % path._length];\r\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\r\n var nextPoint = path.v[(cur + 1) % path._length];\r\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\r\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\r\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\r\n }\r\n\r\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\r\n for (var i = 0; i < frequency; i += 1) {\r\n var t = (i + 1) / (frequency + 1);\r\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;\r\n var angle = segment.normalAngle(t);\r\n var point = segment.point(t);\r\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\r\n direction = -direction;\r\n }\r\n\r\n return direction;\r\n }\r\n\r\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\r\n var count = path._length;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n\r\n if (!path.c) {\r\n count -= 1;\r\n }\r\n\r\n if (count === 0) return clonedPath;\r\n var direction = -1;\r\n var segment = PolynomialBezier.shapeSegment(path, 0);\r\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\r\n\r\n for (var i = 0; i < count; i += 1) {\r\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\r\n\r\n if (i === count - 1 && !path.c) {\r\n segment = null;\r\n } else {\r\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\r\n }\r\n\r\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\r\n }\r\n\r\n return clonedPath;\r\n };\r\n\r\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amplitude = this.amplitude.v;\r\n var frequency = Math.max(0, Math.round(this.frequency.v));\r\n var pointType = this.pointsType.v;\r\n\r\n if (amplitude !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function linearOffset(p1, p2, amount) {\r\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\r\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\r\n }\r\n\r\n function offsetSegment(segment, amount) {\r\n var p0;\r\n var p1a;\r\n var p1b;\r\n var p2b;\r\n var p2a;\r\n var p3;\r\n var e;\r\n e = linearOffset(segment.points[0], segment.points[1], amount);\r\n p0 = e[0];\r\n p1a = e[1];\r\n e = linearOffset(segment.points[1], segment.points[2], amount);\r\n p1b = e[0];\r\n p2b = e[1];\r\n e = linearOffset(segment.points[2], segment.points[3], amount);\r\n p2a = e[0];\r\n p3 = e[1];\r\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\r\n if (p1 === null) p1 = p1a;\r\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\r\n if (p2 === null) p2 = p2a;\r\n return new PolynomialBezier(p0, p1, p2, p3);\r\n }\r\n\r\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\r\n var p0 = seg1.points[3];\r\n var p1 = seg2.points[0]; // Bevel\r\n\r\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\r\n\r\n if (pointEqual(p0, p1)) return p0; // Round\r\n\r\n if (lineJoin === 2) {\r\n var angleOut = -seg1.tangentAngle(1);\r\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\r\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\r\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\r\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\r\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\r\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\r\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\r\n return p1;\r\n } // Miter\r\n\r\n\r\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\r\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\r\n var intersection = lineIntersection(t0, p0, p1, t1);\r\n\r\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\r\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\r\n return intersection;\r\n }\r\n\r\n return p0;\r\n }\r\n\r\n function getIntersection(a, b) {\r\n var intersect = a.intersections(b);\r\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\r\n if (intersect.length) return intersect[0];\r\n return null;\r\n }\r\n\r\n function pruneSegmentIntersection(a, b) {\r\n var outa = a.slice();\r\n var outb = b.slice();\r\n var intersect = getIntersection(a[a.length - 1], b[0]);\r\n\r\n if (intersect) {\r\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\r\n outb[0] = b[0].split(intersect[1])[1];\r\n }\r\n\r\n if (a.length > 1 && b.length > 1) {\r\n intersect = getIntersection(a[0], b[b.length - 1]);\r\n\r\n if (intersect) {\r\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\r\n }\r\n }\r\n\r\n return [outa, outb];\r\n }\r\n\r\n function pruneIntersections(segments) {\r\n var e;\r\n\r\n for (var i = 1; i < segments.length; i += 1) {\r\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\r\n segments[i - 1] = e[0];\r\n segments[i] = e[1];\r\n }\r\n\r\n if (segments.length > 1) {\r\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\r\n segments[segments.length - 1] = e[0];\r\n segments[0] = e[1];\r\n }\r\n\r\n return segments;\r\n }\r\n\r\n function offsetSegmentSplit(segment, amount) {\r\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 */\r\n var flex = segment.inflectionPoints();\r\n var left;\r\n var right;\r\n var split;\r\n var mid;\r\n\r\n if (flex.length === 0) {\r\n return [offsetSegment(segment, amount)];\r\n }\r\n\r\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\r\n split = segment.split(flex[0]);\r\n left = split[0];\r\n right = split[1];\r\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\r\n }\r\n\r\n split = segment.split(flex[0]);\r\n left = split[0];\r\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\r\n split = split[1].split(t);\r\n mid = split[0];\r\n right = split[1];\r\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\r\n }\r\n\r\n function OffsetPathModifier() {}\r\n\r\n extendPrototype([ShapeModifier], OffsetPathModifier);\r\n\r\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\r\n this.lineJoin = data.lj;\r\n this._isAnimated = this.amount.effectsSequence.length !== 0;\r\n };\r\n\r\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\r\n var outputBezier = shapePool.newElement();\r\n outputBezier.c = inputBezier.c;\r\n var count = inputBezier.length();\r\n\r\n if (!inputBezier.c) {\r\n count -= 1;\r\n }\r\n\r\n var i;\r\n var j;\r\n var segment;\r\n var multiSegments = [];\r\n\r\n for (i = 0; i < count; i += 1) {\r\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\r\n multiSegments.push(offsetSegmentSplit(segment, amount));\r\n }\r\n\r\n if (!inputBezier.c) {\r\n for (i = count - 1; i >= 0; i -= 1) {\r\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\r\n multiSegments.push(offsetSegmentSplit(segment, amount));\r\n }\r\n }\r\n\r\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\r\n\r\n var lastPoint = null;\r\n var lastSeg = null;\r\n\r\n for (i = 0; i < multiSegments.length; i += 1) {\r\n var multiSegment = multiSegments[i];\r\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\r\n lastSeg = multiSegment[multiSegment.length - 1];\r\n\r\n for (j = 0; j < multiSegment.length; j += 1) {\r\n segment = multiSegment[j];\r\n\r\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\r\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\r\n } else {\r\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());\r\n }\r\n\r\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());\r\n lastPoint = segment.points[3];\r\n }\r\n }\r\n\r\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\r\n return outputBezier;\r\n };\r\n\r\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n var miterLimit = this.miterLimit.v;\r\n var lineJoin = this.lineJoin;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n var fWeight = 'normal';\r\n var fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n style: fStyle,\r\n weight: fontData.fWeight || fWeight\r\n };\r\n }\r\n\r\n var FontManager = function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n data: {\r\n shapes: []\r\n }\r\n };\r\n var combinedCharacters = []; // Hindi characters\r\n\r\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]);\r\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\r\n var zeroWidthJoiner = [65039, 8205];\r\n\r\n function trimFontOptions(font) {\r\n var familyArray = font.split(',');\r\n var i;\r\n var len = familyArray.length;\r\n var enabledFamilies = [];\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n enabledFamilies.push(familyArray[i]);\r\n }\r\n }\r\n\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span'); // Node is invisible to screen readers.\r\n\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span'); // Characters that vary significantly among different fonts\r\n\r\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\r\n\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\r\n\r\n parentNode.style.fontSize = '300px'; // Reset any font properties\r\n\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode); // Remember width with no applied web font\r\n\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return {\r\n node: node,\r\n w: width,\r\n parent: parentNode\r\n };\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i;\r\n var len = this.fonts.length;\r\n var node;\r\n var w;\r\n var loadedCount = len;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.fonts[i].loaded) {\r\n loadedCount -= 1;\r\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n\r\n if (this.fonts[i].loaded) {\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n setTimeout(this.checkLoadedFontsBinded, 20);\r\n } else {\r\n setTimeout(this.setIsLoadedBinded, 10);\r\n }\r\n }\r\n\r\n function createHelper(fontData, def) {\r\n var engine = document.body && def ? 'svg' : 'canvas';\r\n var helper;\r\n var fontProps = getFontProperties(fontData);\r\n\r\n if (engine === 'svg') {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontProps.style);\r\n tHelper.setAttribute('font-weight', fontProps.weight);\r\n tHelper.textContent = '1';\r\n\r\n if (fontData.fClass) {\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n\r\n def.appendChild(tHelper);\r\n helper = tHelper;\r\n } else {\r\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\r\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\r\n helper = tCanvasHelper;\r\n }\r\n\r\n function measure(text) {\r\n if (engine === 'svg') {\r\n helper.textContent = text;\r\n return helper.getComputedTextLength();\r\n }\r\n\r\n return helper.measureText(text).width;\r\n }\r\n\r\n return {\r\n measureText: measure\r\n };\r\n }\r\n\r\n function addFonts(fontData, defs) {\r\n if (!fontData) {\r\n this.isLoaded = true;\r\n return;\r\n }\r\n\r\n if (this.chars) {\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n if (!document.body) {\r\n this.isLoaded = true;\r\n fontData.list.forEach(function (data) {\r\n data.helper = createHelper(data);\r\n data.cache = {};\r\n });\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n var fontArr = fontData.list;\r\n var i;\r\n var len = fontArr.length;\r\n var _pendingFonts = len;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n\r\n if (!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = 'text/css';\r\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = 'text/css';\r\n l.rel = 'stylesheet';\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel', 'stylesheet');\r\n sc.setAttribute('href', fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n\r\n fontArr[i].helper = createHelper(fontArr[i], defs);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n // Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars) {\r\n if (!chars) {\r\n return;\r\n }\r\n\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\r\n\r\n var i;\r\n var len = chars.length;\r\n var j;\r\n var jLen = this.chars.length;\r\n var found;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n\r\n while (j < jLen) {\r\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n found = true;\r\n }\r\n\r\n j += 1;\r\n }\r\n\r\n if (!found) {\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(_char, style, font) {\r\n var i = 0;\r\n var len = this.chars.length;\r\n\r\n while (i < len) {\r\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n return this.chars[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\r\n && !this._warned) {\r\n this._warned = true;\r\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\r\n }\r\n\r\n return emptyChar;\r\n }\r\n\r\n function measureText(_char2, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n\r\n var index = _char2.charCodeAt(0);\r\n\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n\r\n if (_char2 === ' ') {\r\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\r\n var singleSize = tHelper.measureText('||');\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n fontData.cache[index + 1] = tHelper.measureText(_char2) / 100;\r\n }\r\n }\r\n\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name) {\r\n var i = 0;\r\n var len = this.fonts.length;\r\n\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return this.fonts[0];\r\n }\r\n\r\n function isModifier(firstCharCode, secondCharCode) {\r\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\r\n return surrogateModifiers.indexOf(sum) !== -1;\r\n }\r\n\r\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\r\n if (!secondCharCode) {\r\n return firstCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n function isCombinedCharacter(_char3) {\r\n return combinedCharacters.indexOf(_char3) !== -1;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function Font() {\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this._warned = false;\r\n this.initTime = Date.now();\r\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n };\r\n\r\n Font.isModifier = isModifier;\r\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\r\n Font.isCombinedCharacter = isCombinedCharacter;\r\n var fontPrototype = {\r\n addChars: addChars,\r\n addFonts: addFonts,\r\n getCharData: getCharData,\r\n getFontByName: getFontByName,\r\n measureText: measureText,\r\n checkLoadedFonts: checkLoadedFonts,\r\n setIsLoaded: setIsLoaded\r\n };\r\n Font.prototype = fontPrototype;\r\n return Font;\r\n }();\r\n\r\n function RenderableElement() {}\r\n\r\n RenderableElement.prototype = {\r\n initRenderable: function initRenderable() {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false; // layer's display state\r\n\r\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\r\n\r\n this.isTransparent = false; // list of animated components\r\n\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function addRenderableComponent(component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function removeRenderableComponent(component) {\r\n if (this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function prepareRenderableFrame(num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function checkTransparency() {\r\n if (this.finalTransform.mProp.o.v <= 0) {\r\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if (this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n\r\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 */\r\n checkLayerLimits: function checkLayerLimits(num) {\r\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n if (this.isInRange !== true) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else if (this.isInRange !== false) {\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n },\r\n renderRenderable: function renderRenderable() {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n\r\n },\r\n sourceRectAtTime: function sourceRectAtTime() {\r\n return {\r\n top: 0,\r\n left: 0,\r\n width: 100,\r\n height: 100\r\n };\r\n },\r\n getLayerSize: function getLayerSize() {\r\n if (this.data.ty === 5) {\r\n return {\r\n w: this.data.textData.width,\r\n h: this.data.textData.height\r\n };\r\n }\r\n\r\n return {\r\n w: this.data.width,\r\n h: this.data.height\r\n };\r\n }\r\n };\r\n\r\n var getBlendMode = function () {\r\n var blendModeEnums = {\r\n 0: 'source-over',\r\n 1: 'multiply',\r\n 2: 'screen',\r\n 3: 'overlay',\r\n 4: 'darken',\r\n 5: 'lighten',\r\n 6: 'color-dodge',\r\n 7: 'color-burn',\r\n 8: 'hard-light',\r\n 9: 'soft-light',\r\n 10: 'difference',\r\n 11: 'exclusion',\r\n 12: 'hue',\r\n 13: 'saturation',\r\n 14: 'color',\r\n 15: 'luminosity'\r\n };\r\n return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n }();\r\n\r\n function SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n }\r\n\r\n function PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n }\r\n\r\n function LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function NoValueEffect() {\r\n this.p = {};\r\n }\r\n\r\n function EffectsManager(data, element) {\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i;\r\n var len = effects.length;\r\n var effectItem;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n effectItem = new GroupEffect(effects[i], element);\r\n this.effectElements.push(effectItem);\r\n }\r\n }\r\n\r\n function GroupEffect(data, element) {\r\n this.init(data, element);\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], GroupEffect);\r\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\n GroupEffect.prototype.init = function (data, element) {\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i;\r\n var len = this.data.ef.length;\r\n var eff;\r\n var effects = this.data.ef;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n };\r\n\r\n function BaseElement() {}\r\n\r\n BaseElement.prototype = {\r\n checkMasks: function checkMasks() {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n\r\n while (i < len) {\r\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\r\n return true;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return false;\r\n },\r\n initExpressions: function initExpressions() {\r\n var expressionsInterfaces = getExpressionInterfaces();\r\n\r\n if (!expressionsInterfaces) {\r\n return;\r\n }\r\n\r\n var LayerExpressionInterface = expressionsInterfaces('layer');\r\n var EffectsExpressionInterface = expressionsInterfaces('effects');\r\n var ShapeExpressionInterface = expressionsInterfaces('shape');\r\n var TextExpressionInterface = expressionsInterfaces('text');\r\n var CompExpressionInterface = expressionsInterfaces('comp');\r\n this.layerInterface = LayerExpressionInterface(this);\r\n\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if (this.data.ty === 0 || this.data.xt) {\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if (this.data.ty === 4) {\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if (this.data.ty === 5) {\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function setBlendMode() {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function initBaseData(data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\r\n\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n } // effects manager\r\n\r\n\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function getType() {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function sourceRectAtTime() {}\r\n };\r\n\r\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 */\r\n function FrameElement() {}\r\n\r\n FrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function initFrame() {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false; // list of animated properties\r\n\r\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\r\n\r\n this._mdf = false;\r\n },\r\n\r\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 */\r\n prepareProperties: function prepareProperties(num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\r\n this.dynamicProperties[i].getValue();\r\n\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function addDynamicProperty(prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n }\r\n };\r\n\r\n function FootageElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n this.initBaseData(data, globalData, comp);\r\n }\r\n\r\n FootageElement.prototype.prepareFrame = function () {};\r\n\r\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\n FootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n FootageElement.prototype.renderFrame = function () {};\r\n\r\n FootageElement.prototype.destroy = function () {};\r\n\r\n FootageElement.prototype.initExpressions = function () {\r\n var expressionsInterfaces = getExpressionInterfaces();\r\n\r\n if (!expressionsInterfaces) {\r\n return;\r\n }\r\n\r\n var FootageInterface = expressionsInterfaces('footage');\r\n this.layerInterface = FootageInterface(this);\r\n };\r\n\r\n FootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n };\r\n\r\n function AudioElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initBaseData(data, globalData, comp);\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this._volumeMultiplier = 1;\r\n this._volume = 1;\r\n this._previousVolume = null;\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\r\n k: [100]\r\n }, 1, 0.01, this);\r\n }\r\n\r\n AudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n\r\n this._volume = this.lv.v[0];\r\n var totalVolume = this._volume * this._volumeMultiplier;\r\n\r\n if (this._previousVolume !== totalVolume) {\r\n this._previousVolume = totalVolume;\r\n this.audio.volume(totalVolume);\r\n }\r\n };\r\n\r\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\n AudioElement.prototype.renderFrame = function () {\r\n if (this.isInRange && this._canPlay) {\r\n if (!this._isPlaying) {\r\n this.audio.play();\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n this._isPlaying = true;\r\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n };\r\n\r\n AudioElement.prototype.show = function () {// this.audio.play()\r\n };\r\n\r\n AudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n };\r\n\r\n AudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n };\r\n\r\n AudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n };\r\n\r\n AudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n };\r\n\r\n AudioElement.prototype.volume = function (volumeValue) {\r\n this._volumeMultiplier = volumeValue;\r\n this._previousVolume = volumeValue * this._volume;\r\n this.audio.volume(this._previousVolume);\r\n };\r\n\r\n AudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n AudioElement.prototype.destroy = function () {};\r\n\r\n AudioElement.prototype.sourceRectAtTime = function () {};\r\n\r\n AudioElement.prototype.initExpressions = function () {};\r\n\r\n function BaseRenderer() {}\r\n\r\n BaseRenderer.prototype.checkLayers = function (num) {\r\n var i;\r\n var len = this.layers.length;\r\n var data;\r\n this.completeLayers = true;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n\r\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\r\n this.buildItem(i);\r\n }\r\n }\r\n\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n\r\n this.checkPendingElements();\r\n };\r\n\r\n BaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n\r\n case 0:\r\n return this.createComp(layer);\r\n\r\n case 1:\r\n return this.createSolid(layer);\r\n\r\n case 3:\r\n return this.createNull(layer);\r\n\r\n case 4:\r\n return this.createShape(layer);\r\n\r\n case 5:\r\n return this.createText(layer);\r\n\r\n case 6:\r\n return this.createAudio(layer);\r\n\r\n case 13:\r\n return this.createCamera(layer);\r\n\r\n case 15:\r\n return this.createFootage(layer);\r\n\r\n default:\r\n return this.createNull(layer);\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n };\r\n\r\n BaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n };\r\n\r\n BaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n };\r\n\r\n BaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n\r\n this.checkPendingElements();\r\n };\r\n\r\n BaseRenderer.prototype.includeLayers = function (newLayers) {\r\n this.completeLayers = false;\r\n var i;\r\n var len = newLayers.length;\r\n var j;\r\n var jLen = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n\r\n while (j < jLen) {\r\n if (this.layers[j].id === newLayers[i].id) {\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n\r\n j += 1;\r\n }\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n };\r\n\r\n BaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i = 0;\r\n var len = layers.length;\r\n\r\n while (i < len) {\r\n if (layers[i].ind == parentName) {\r\n // eslint-disable-line eqeqeq\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n\r\n if (layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n\r\n i += 1;\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n };\r\n\r\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.getElementByPath = function (path) {\r\n var pathValue = path.shift();\r\n var element;\r\n\r\n if (typeof pathValue === 'number') {\r\n element = this.elements[pathValue];\r\n } else {\r\n var i;\r\n var len = this.elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i].data.nm === pathValue) {\r\n element = this.elements[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (path.length === 0) {\r\n return element;\r\n }\r\n\r\n return element.getElementByPath(path);\r\n };\r\n\r\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.audioController = this.animationItem.audioController;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h\r\n };\r\n };\r\n\r\n function TransformElement() {}\r\n\r\n TransformElement.prototype = {\r\n initTransform: function initTransform() {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\r\n o: 0\r\n },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix()\r\n };\r\n\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n } // TODO: check TYPE 11: Guided elements\r\n\r\n\r\n if (this.data.ty !== 11) {// this.createElements();\r\n }\r\n },\r\n renderTransform: function renderTransform() {\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0;\r\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n\r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function globalToLocal(pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n\r\n return pt;\r\n },\r\n mHelper: new Matrix()\r\n };\r\n\r\n function MaskElement(data, element, globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i;\r\n var len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n var path;\r\n var properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j;\r\n var jLen;\r\n var layerId = createElementID();\r\n var rect;\r\n var expansor;\r\n var feMorph;\r\n var x;\r\n var maskType = 'clipPath';\r\n var maskRef = 'clip-path';\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n rect = createNS('rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS('path');\r\n\r\n if (properties[i].mode === 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n elem: path,\r\n lastPath: ''\r\n };\r\n defs.appendChild(path);\r\n } else {\r\n count += 1;\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n path.setAttribute('clip-rule', 'nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id', filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator', 'erode');\r\n feMorph.setAttribute('in', 'SourceGraphic');\r\n feMorph.setAttribute('radius', '0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n } // TODO move this to a factory or to a constructor\r\n\r\n\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator: '',\r\n filterId: filterID,\r\n lastRadius: 0\r\n };\r\n\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\r\n\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.setAttribute('id', layerId + '_' + count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n } // TODO move this to a factory or to a constructor\r\n\r\n\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n invRect: rect\r\n };\r\n\r\n if (!this.viewData[i].prop.k) {\r\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n }\r\n }\r\n\r\n this.maskElement = createNS(maskType);\r\n len = currentMasks.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if (count > 0) {\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n MaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n };\r\n\r\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i;\r\n var len = this.masksProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n\r\n if (this.viewData[i].op._mdf || isFirstFrame) {\r\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n }\r\n\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n }\r\n\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n\r\n if (this.storedData[i].x.v < 0) {\r\n if (this.storedData[i].lastOperator !== 'erode') {\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\r\n }\r\n\r\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n } else {\r\n if (this.storedData[i].lastOperator !== 'dilate') {\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter', null);\r\n }\r\n\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n MaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n };\r\n\r\n MaskElement.prototype.createLayerSolidPath = function () {\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w;\r\n path += ' v' + this.globalData.compSize.h;\r\n path += ' h-' + this.globalData.compSize.w;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n };\r\n\r\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n var i;\r\n var len;\r\n len = pathNodes._length;\r\n\r\n for (i = 1; i < len; i += 1) {\r\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];\r\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];\r\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];\r\n\r\n\r\n if (pathNodes.c && len > 1) {\r\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];\r\n } // pathNodes.__renderedString = pathString;\r\n\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n\r\n viewData.lastPath = pathString;\r\n }\r\n };\r\n\r\n MaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n };\r\n\r\n var filtersFactory = function () {\r\n var ob = {};\r\n ob.createFilter = createFilter;\r\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n function createFilter(filId, skipCoordinates) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\r\n\r\n if (skipCoordinates !== true) {\r\n fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n fil.setAttribute('x', '0%');\r\n fil.setAttribute('y', '0%');\r\n fil.setAttribute('width', '100%');\r\n fil.setAttribute('height', '100%');\r\n }\r\n\r\n return fil;\r\n }\r\n\r\n function createAlphaToLuminanceFilter() {\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var featureSupport = function () {\r\n var ob = {\r\n maskType: true\r\n };\r\n\r\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)) {\r\n ob.maskType = false;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var registeredEffects = {};\r\n var idPrefix = 'filter_result_';\r\n\r\n function SVGEffects(elem) {\r\n var i;\r\n var source = 'SourceGraphic';\r\n var len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId, true);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n var type = elem.data.ef[i].ty;\r\n\r\n if (registeredEffects[type]) {\r\n var Effect = registeredEffects[type].effect;\r\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\r\n source = idPrefix + count;\r\n\r\n if (registeredEffects[type].countsAsEffect) {\r\n count += 1;\r\n }\r\n }\r\n\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n }\r\n\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n };\r\n\r\n function registerEffect(id, effect, countsAsEffect) {\r\n registeredEffects[id] = {\r\n effect: effect,\r\n countsAsEffect: countsAsEffect\r\n };\r\n }\r\n\r\n function SVGBaseElement() {}\r\n\r\n SVGBaseElement.prototype = {\r\n initRendererElement: function initRendererElement() {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function createContainerElements() {\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null; // If this layer acts as a mask for the following layer\r\n\r\n if (this.data.td) {\r\n this.matteMasks = {};\r\n var symbolElement = createNS('symbol');\r\n symbolElement.setAttribute('id', this.layerId);\r\n var gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n symbolElement.appendChild(gg);\r\n layerElementParent = gg;\r\n this.globalData.defs.appendChild(symbolElement);\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n\r\n\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS('clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id', clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\r\n }\r\n }\r\n\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function renderElement() {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function destroyBaseElement() {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function getBaseElement() {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function createRenderableComponents() {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n getMatte: function getMatte(matteType) {\r\n if (!this.matteMasks[matteType]) {\r\n var id = this.layerId + '_' + matteType;\r\n var filId;\r\n var fil;\r\n var useElement;\r\n var gg;\r\n\r\n if (matteType === 1 || matteType === 3) {\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', id);\r\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\r\n useElement = createNS('use');\r\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\r\n masker.appendChild(useElement);\r\n this.globalData.defs.appendChild(masker);\r\n\r\n if (!featureSupport.maskType && matteType === 1) {\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(useElement);\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n }\r\n } else if (matteType === 2) {\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', id);\r\n maskGroup.setAttribute('mask-type', 'alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId); /// /\r\n\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in', 'SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type', 'table');\r\n feFunc.setAttribute('tableValues', '1.0 0.0');\r\n feCTr.appendChild(feFunc); /// /\r\n\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x', '0');\r\n alphaRect.setAttribute('y', '0');\r\n alphaRect.setAttribute('fill', '#ffffff');\r\n alphaRect.setAttribute('opacity', '0');\r\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n useElement = createNS('use');\r\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\r\n maskGrouper.appendChild(useElement);\r\n\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n maskGrouper.appendChild(gg);\r\n }\r\n\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n\r\n this.matteMasks[matteType] = id;\r\n }\r\n\r\n return this.matteMasks[matteType];\r\n },\r\n setMatte: function setMatte(id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n\r\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\r\n }\r\n };\r\n\r\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n function HierarchyElement() {}\r\n\r\n HierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function initHierarchy() {\r\n // element's parent list\r\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\r\n\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\r\n\r\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 */\r\n setHierarchy: function setHierarchy(hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function setAsParent() {\r\n this._isParent = true;\r\n },\r\n\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function checkParenting() {\r\n if (this.data.parent !== undefined) {\r\n this.comp.buildElementParenting(this, this.data.parent, []);\r\n }\r\n }\r\n };\r\n\r\n function RenderableDOMElement() {}\r\n\r\n (function () {\r\n var _prototype = {\r\n initElement: function initElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function hide() {\r\n // console.log('HIDE', this);\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function show() {\r\n // console.log('SHOW', this);\r\n if (this.isInRange && !this.isTransparent) {\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function renderFrame() {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function renderInnerContent() {},\r\n prepareFrame: function prepareFrame(num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function destroy() {\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n }\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n })();\r\n\r\n function IImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n this.sourceRect = {\r\n top: 0,\r\n left: 0,\r\n width: this.assetData.w,\r\n height: this.assetData.h\r\n };\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\n IImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.innerElem);\r\n };\r\n\r\n IImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n };\r\n\r\n function ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n }\r\n\r\n function IShapeElement() {}\r\n\r\n IShapeElement.prototype = {\r\n addShapeToModifiers: function addShapeToModifiers(data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n renderModifiers: function renderModifiers() {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n\r\n var i;\r\n var len = this.shapes.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n var shouldBreakProcess;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\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\r\n // TODO: find a better solution for this\r\n\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n searchProcessedElement: function searchProcessedElement(elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return 0;\r\n },\r\n addProcessedElement: function addProcessedElement(elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n\r\n while (i) {\r\n i -= 1;\r\n\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function prepareFrame(num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n }\r\n };\r\n\r\n var lineCapEnum = {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square'\r\n };\r\n var lineJoinEnum = {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel'\r\n };\r\n\r\n function SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n\r\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\r\n\r\n var i = 0;\r\n var len = transformers.length;\r\n\r\n while (i < len) {\r\n if (transformers[i].mProps.dynamicProperties.length) {\r\n this._isAnimated = true;\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n\r\n SVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n };\r\n\r\n function SVGStyleData(data, level) {\r\n this.data = data;\r\n this.type = data.ty;\r\n this.d = '';\r\n this.lvl = level;\r\n this._mdf = false;\r\n this.closed = data.hd === true;\r\n this.pElem = createNS('path');\r\n this.msElem = null;\r\n }\r\n\r\n SVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n };\r\n\r\n function DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i;\r\n var len = data.length || 0;\r\n var prop;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = {\r\n n: data[i].n,\r\n p: prop\r\n };\r\n }\r\n\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n\r\n this._isAnimated = this.k;\r\n }\r\n\r\n DashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.dataProps[i].n !== 'o') {\r\n if (this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n } else {\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n } else {\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n function SVGStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n function SVGFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n function SVGNoStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.style = styleOb;\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\r\n\r\n function GradientProperty(elem, data, container) {\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p * 4);\r\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n }\r\n\r\n GradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n GradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\r\n\r\n if (this.data.k.k[0].s) {\r\n var i = 0;\r\n var len = this.data.k.k.length;\r\n\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n\r\n i += 1;\r\n }\r\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n GradientProperty.prototype.getValue = function (forceRender) {\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n\r\n if (this.prop._mdf || forceRender) {\r\n var i;\r\n var len = this.data.p * 4;\r\n var mult;\r\n var val;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n mult = i % 4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i] * mult);\r\n\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n\r\n for (i = this.data.p * 4; i < len; i += 1) {\r\n mult = i % 2 === 0 ? 100 : 1;\r\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n\r\n if (this.o[i - this.data.p * 4] !== val) {\r\n this.o[i - this.data.p * 4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n\r\n this._mdf = !forceRender;\r\n }\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n function SVGGradientFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n }\r\n\r\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n this.h = PropertyFactory.getProp(elem, data.h || {\r\n k: 0\r\n }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || {\r\n k: 0\r\n }, 0, degToRads, this);\r\n this.g = new GradientProperty(elem, data.g, this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n };\r\n\r\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id', gradientId);\r\n gfill.setAttribute('spreadMethod', 'pad');\r\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n var stops = [];\r\n var stop;\r\n var j;\r\n var jLen;\r\n jLen = data.g.p * 4;\r\n\r\n for (j = 0; j < jLen; j += 4) {\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\r\n this.gf = gfill;\r\n this.cst = stops;\r\n };\r\n\r\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n if (this.g._hasOpacity && !this.g._collapsable) {\r\n var stop;\r\n var j;\r\n var jLen;\r\n var mask = createNS('mask');\r\n var maskElement = createNS('path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id', maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id', opacityId);\r\n opFill.setAttribute('spreadMethod', 'pad');\r\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n\r\n for (j = data.g.p * 4; j < jLen; j += 2) {\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\r\n\r\n if (data.ty === 'gs') {\r\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n\r\n if (data.lj === 1) {\r\n maskElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n }\r\n\r\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n function ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n }\r\n\r\n function SVGTransformData(mProps, op, container) {\r\n this.transform = {\r\n mProps: mProps,\r\n op: op,\r\n container: container\r\n };\r\n this.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n }\r\n\r\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\r\n\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i;\r\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n\r\n for (i = 1; i < length; i += 1) {\r\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]);\r\n }\r\n\r\n if (closed && length) {\r\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]);\r\n shapeString += 'z';\r\n }\r\n\r\n return shapeString;\r\n };\r\n\r\n var SVGElementsRenderer = function () {\r\n var _identityMatrix = new Matrix();\r\n\r\n var _matrixHelper = new Matrix();\r\n\r\n var ob = {\r\n createRenderFunction: createRenderFunction\r\n };\r\n\r\n function createRenderFunction(data) {\r\n switch (data.ty) {\r\n case 'fl':\r\n return renderFill;\r\n\r\n case 'gf':\r\n return renderGradient;\r\n\r\n case 'gs':\r\n return renderGradientStroke;\r\n\r\n case 'st':\r\n return renderStroke;\r\n\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n\r\n case 'tr':\r\n return renderContentTransform;\r\n\r\n case 'no':\r\n return renderNoop;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n if (isFirstFrame || itemData.transform.op._mdf) {\r\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n }\r\n\r\n if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n }\r\n }\r\n\r\n function renderNoop() {}\r\n\r\n function renderPath(styleData, itemData, isFirstFrame) {\r\n var j;\r\n var jLen;\r\n var pathStringTransformed;\r\n var redraw;\r\n var pathNodes;\r\n var l;\r\n var lLen = itemData.styles.length;\r\n var lvl = itemData.lvl;\r\n var paths;\r\n var mat;\r\n var props;\r\n var iterations;\r\n var k;\r\n\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n\r\n if (itemData.styles[l].lvl < lvl) {\r\n mat = _matrixHelper.reset();\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n\r\n while (!redraw && iterations > 0) {\r\n redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n\r\n while (iterations > 0) {\r\n props = itemData.transformers[k].mProps.v.props;\r\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n }\r\n } else {\r\n mat = _identityMatrix;\r\n }\r\n\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\r\n\r\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n }\r\n }\r\n\r\n function renderFill(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n }\r\n }\r\n\r\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n renderGradient(styleData, itemData, isFirstFrame);\r\n renderStroke(styleData, itemData, isFirstFrame);\r\n }\r\n\r\n function renderGradient(styleData, itemData, isFirstFrame) {\r\n var gfill = itemData.gf;\r\n var hasOpacity = itemData.g._hasOpacity;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n }\r\n\r\n if (itemData.s._mdf || isFirstFrame) {\r\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n gfill.setAttribute(attr1, pt1[0]);\r\n gfill.setAttribute(attr2, pt1[1]);\r\n\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute(attr1, pt1[0]);\r\n itemData.of.setAttribute(attr2, pt1[1]);\r\n }\r\n }\r\n\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n\r\n if (itemData.g._cmdf || isFirstFrame) {\r\n stops = itemData.cst;\r\n var cValues = itemData.g.c;\r\n len = stops.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n stop.setAttribute('offset', cValues[i * 4] + '%');\r\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n }\r\n }\r\n\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n\r\n len = stops.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\r\n }\r\n\r\n if (styleData.t === 1) {\r\n if (itemData.e._mdf || isFirstFrame) {\r\n gfill.setAttribute('x2', pt2[0]);\r\n gfill.setAttribute('y2', pt2[1]);\r\n\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('x2', pt2[0]);\r\n itemData.of.setAttribute('y2', pt2[1]);\r\n }\r\n }\r\n } else {\r\n var rad;\r\n\r\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n gfill.setAttribute('r', rad);\r\n\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\r\n }\r\n\r\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n if (!rad) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n }\r\n\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n var percent = itemData.h.v;\r\n\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n gfill.setAttribute('fx', x);\r\n gfill.setAttribute('fy', y);\r\n\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('fx', x);\r\n itemData.of.setAttribute('fy', y);\r\n }\r\n } // gfill.setAttribute('fy','200');\r\n\r\n }\r\n }\r\n\r\n function renderStroke(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n\r\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n }\r\n\r\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n\r\n if (styleElem.msElem) {\r\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n }\r\n }\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n function SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = []; // Full shape data\r\n\r\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\r\n\r\n this.stylesList = []; // List of modifiers that will be applied to shapes\r\n\r\n this.shapeModifiers = []; // List of items in shape tree\r\n\r\n this.itemsData = []; // List of items in previous shape tree\r\n\r\n this.processedElements = []; // List of animated components\r\n\r\n this.animatedContents = [];\r\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.\r\n // List of elements that have been created\r\n\r\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.\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\n SVGShapeElement.prototype.initSecondaryElement = function () {};\r\n\r\n SVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\n SVGShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n };\r\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\r\n\r\n\r\n SVGShapeElement.prototype.filterUniqueShapes = function () {\r\n var i;\r\n var len = this.shapes.length;\r\n var shape;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n var style;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n\r\n if (shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n // TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n var pathElement = styleOb.pElem;\r\n\r\n if (data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if (data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new GradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\r\n }\r\n } else if (data.ty === 'no') {\r\n elementData = new SVGNoStyleData(this, data, styleOb);\r\n }\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n pathElement.setAttribute('fill-opacity', '0');\r\n\r\n if (data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n if (data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if (data.ln) {\r\n pathElement.setAttribute('id', data.ln);\r\n }\r\n\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data\r\n });\r\n };\r\n\r\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n\r\n this.renderModifiers();\r\n };\r\n\r\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n var ownTransformers = [].concat(transformers);\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var currentTransform;\r\n var modifier;\r\n var processedPos;\r\n\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n if (arr[i]._render) {\r\n if (itemsData[i].style.pElem.parentNode !== container) {\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n\r\n if (arr[i]._render) {\r\n if (itemsData[i].gr.parentNode !== container) {\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n }\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n\r\n this.setElementStyles(itemsData[i]);\r\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') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n\r\n ownModifiers.push(modifier);\r\n }\r\n\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n\r\n len = ownStyles.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n\r\n len = ownModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\r\n\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if (this.stylesList[i].msElem) {\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\r\n\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n\r\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n };\r\n\r\n function LetterProps(o, sw, sc, fc, m, p) {\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n o: true,\r\n sw: !!sw,\r\n sc: !!sc,\r\n fc: !!fc,\r\n m: true,\r\n p: true\r\n };\r\n }\r\n\r\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n this._mdf.o = false;\r\n this._mdf.sw = false;\r\n this._mdf.sc = false;\r\n this._mdf.fc = false;\r\n this._mdf.m = false;\r\n this._mdf.p = false;\r\n var updated = false;\r\n\r\n if (this.o !== o) {\r\n this.o = o;\r\n this._mdf.o = true;\r\n updated = true;\r\n }\r\n\r\n if (this.sw !== sw) {\r\n this.sw = sw;\r\n this._mdf.sw = true;\r\n updated = true;\r\n }\r\n\r\n if (this.sc !== sc) {\r\n this.sc = sc;\r\n this._mdf.sc = true;\r\n updated = true;\r\n }\r\n\r\n if (this.fc !== fc) {\r\n this.fc = fc;\r\n this._mdf.fc = true;\r\n updated = true;\r\n }\r\n\r\n if (this.m !== m) {\r\n this.m = m;\r\n this._mdf.m = true;\r\n updated = true;\r\n }\r\n\r\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])) {\r\n this.p = p;\r\n this._mdf.p = true;\r\n updated = true;\r\n }\r\n\r\n return updated;\r\n };\r\n\r\n function TextProperty(elem, data) {\r\n this._frameId = initialDefaultFrame;\r\n this.pv = '';\r\n this.v = '';\r\n this.kf = false;\r\n this._isFirstFrame = true;\r\n this._mdf = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = this.elem.comp;\r\n this.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n this.currentData = {\r\n ascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz: 0,\r\n ps: null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize: 0,\r\n finalText: [],\r\n finalLineHeight: 0,\r\n __complete: false\r\n };\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if (!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n }\r\n\r\n TextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\n TextProperty.prototype.copyData = function (obj, data) {\r\n for (var s in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n\r\n return obj;\r\n };\r\n\r\n TextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n };\r\n\r\n TextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n TextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n\r\n this.lock = true;\r\n this._mdf = false;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n // Checking if index changed to prevent creating a new object every time the expression updates.\r\n if (currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n\r\n this.v = this.currentData;\r\n this.pv = this.v;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n };\r\n\r\n TextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0;\r\n var len = textKeys.length;\r\n\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n\r\n return this.data.d.k[this.keysIndex].s;\r\n };\r\n\r\n TextProperty.prototype.buildFinalText = function (text) {\r\n var charactersArray = [];\r\n var i = 0;\r\n var len = text.length;\r\n var charCode;\r\n var secondCharCode;\r\n var shouldCombine = false;\r\n\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n\r\n if (FontManager.isCombinedCharacter(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n\r\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\r\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n shouldCombine = false;\r\n } else {\r\n charactersArray.push(text.substr(i, 2));\r\n }\r\n\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (charCode > 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n\r\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\r\n shouldCombine = true;\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n shouldCombine = true;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return charactersArray;\r\n };\r\n\r\n TextProperty.prototype.completeTextData = function (documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i;\r\n var len;\r\n var newLineFlag;\r\n var index = 0;\r\n var val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0;\r\n var currentPos = 0;\r\n var currentLine = 0;\r\n var lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j;\r\n var jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData;\r\n var cLength = 0;\r\n var fontProps = getFontProperties(fontData);\r\n documentData.fWeight = fontProps.weight;\r\n documentData.fStyle = fontProps.style;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n len = documentData.finalText.length;\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\r\n var charCode;\r\n\r\n if (documentData.sz) {\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight;\r\n var finalText;\r\n\r\n while (flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n\r\n if (finalText[i] === ' ') {\r\n lastSpaceIndex = i;\r\n } else if (charCode === 13 || charCode === 3) {\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n }\r\n\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\r\n } else {\r\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n\r\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n if (lastSpaceIndex === -1) {\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n } else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n\r\n currentHeight += fontData.ascent * documentData.finalSize / 100;\r\n\r\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n }\r\n\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = -2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n } else {\r\n val = currentChar;\r\n }\r\n\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\r\n } else {\r\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n } //\r\n\r\n\r\n if (currentChar === ' ') {\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n\r\n letters.push({\r\n l: cLength,\r\n an: cLength,\r\n add: currentSize,\r\n n: newLineFlag,\r\n anIndexes: [],\r\n val: val,\r\n line: currentLine,\r\n animatorJustifyOffset: 0\r\n });\r\n\r\n if (anchorGrouping == 2) {\r\n // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\r\n\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) {\r\n // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\r\n\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n } else {\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n\r\n if (documentData.sz) {\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n } else {\r\n documentData.boxWidth = maxLineWidth;\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n\r\n documentData.lineWidths = lineWidths;\r\n var animators = data.a;\r\n var animatorData;\r\n var letterData;\r\n jLen = animators.length;\r\n var based;\r\n var ind;\r\n var indexes = [];\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\r\n\r\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n documentData.fillColorAnim = true;\r\n }\r\n\r\n ind = 0;\r\n based = animatorData.s.b;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n\r\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)) {\r\n // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n\r\n ind += 1;\r\n }\r\n }\r\n\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1;\r\n var newInd;\r\n\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n\r\n if (currentInd != letterData.anIndexes[j]) {\r\n // eslint-disable-line eqeqeq\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n }\r\n\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\r\n };\r\n\r\n TextProperty.prototype.updateDocumentData = function (newData, index) {\r\n index = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n TextProperty.prototype.recalculate = function (index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n };\r\n\r\n TextProperty.prototype.canResizeFont = function (_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n var TextSelectorProp = function () {\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorPropFactory(elem, data) {\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem, data.s || {\r\n k: 0\r\n }, 0, 0, this);\r\n\r\n if ('e' in data) {\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n } else {\r\n this.e = {\r\n v: 100\r\n };\r\n }\r\n\r\n this.o = PropertyFactory.getProp(elem, data.o || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.sm = PropertyFactory.getProp(elem, data.sm || {\r\n k: 100\r\n }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function getMult(ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n\r\n if (this.ne.v > 0) {\r\n x1 = this.ne.v / 100.0;\r\n } else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n\r\n if (this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n } else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n\r\n if (type === 2) {\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n } else {\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot / 2 + ind;\r\n var a = tot / 2;\r\n mult = Math.sqrt(1 - x * x / (a * a));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\r\n }\r\n\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n\r\n mult = easer(mult);\r\n } // Smoothness implementation.\r\n // The smoothness represents a reduced range of the original [0; 1] range.\r\n // if smoothness is 25%, the new range will be [0.375; 0.625]\r\n // Steps are:\r\n // - find the lower value of the new range (threshold)\r\n // - if multiplier is smaller than that value, floor it to 0\r\n // - if it is larger,\r\n // - subtract the threshold\r\n // - divide it by the smoothness (this will return the range to [0; 1])\r\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\r\n\r\n\r\n if (this.sm.v !== 100) {\r\n var smoothness = this.sm.v * 0.01;\r\n\r\n if (smoothness === 0) {\r\n smoothness = 0.00000001;\r\n }\r\n\r\n var threshold = 0.5 - smoothness * 0.5;\r\n\r\n if (mult < threshold) {\r\n mult = 0;\r\n } else {\r\n mult = (mult - threshold) / smoothness;\r\n\r\n if (mult > 1) {\r\n mult = 1;\r\n }\r\n }\r\n }\r\n\r\n return mult * this.a.v;\r\n },\r\n getValue: function getValue(newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v / divisor;\r\n var s = this.s.v / divisor + o;\r\n var e = this.e.v / divisor + o;\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n\r\n this.finalS = s;\r\n this.finalE = e;\r\n }\r\n };\r\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n function getTextSelectorProp(elem, data, arr) {\r\n return new TextSelectorPropFactory(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp\r\n };\r\n }();\r\n\r\n function TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = {\r\n propType: false\r\n };\r\n var getProp = PropertyFactory.getProp;\r\n var textAnimatorAnimatables = animatorProps.a;\r\n this.a = {\r\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\r\n };\r\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n }\r\n\r\n function TextAnimatorProperty(textData, renderType, elem) {\r\n this._isFirstFrame = true;\r\n this._hasMaskedPath = false;\r\n this._frameId = -1;\r\n this._textData = textData;\r\n this._renderType = renderType;\r\n this._elem = elem;\r\n this._animatorsData = createSizedArray(this._textData.a.length);\r\n this._pathData = {};\r\n this._moreOptions = {\r\n alignment: {}\r\n };\r\n this.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n }\r\n\r\n TextAnimatorProperty.prototype.searchProperties = function () {\r\n var i;\r\n var len = this._textData.a.length;\r\n var animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n\r\n if (this._textData.p && 'm' in this._textData.p) {\r\n this._pathData = {\r\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\r\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\r\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n };\r\n\r\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var xPos;\r\n var yPos;\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var pathInfo;\r\n var currentLength;\r\n var currentPoint;\r\n var segmentLength;\r\n var flag;\r\n var pointInd;\r\n var segmentInd;\r\n var prevPoint;\r\n var points;\r\n var segments;\r\n var partialLength;\r\n var totalLength;\r\n var perc;\r\n var tanAngle;\r\n var mask;\r\n\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n\r\n if (this._pathData.r.v) {\r\n paths = paths.reverse();\r\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n\r\n\r\n pathInfo = {\r\n tLength: 0,\r\n segments: []\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\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]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n\r\n i = len;\r\n\r\n if (mask.v.c) {\r\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]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n\r\n this._pathData.pi = pathInfo;\r\n }\r\n\r\n pathInfo = this._pathData.pi;\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n }\r\n\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps;\r\n var animatorSelector;\r\n var j;\r\n var jLen;\r\n var letterValue;\r\n jLen = animators.length;\r\n var mult;\r\n var ind = -1;\r\n var offf;\r\n var xPathPos;\r\n var yPathPos;\r\n var initPathPos = currentLength;\r\n var initSegmentInd = segmentInd;\r\n var initPointInd = pointInd;\r\n var currentLine = -1;\r\n var elemOpacity;\r\n var sc;\r\n var sw;\r\n var fc;\r\n var k;\r\n var letterSw;\r\n var letterSc;\r\n var letterFc;\r\n var letterM = '';\r\n var letterP = this.defaultPropsArray;\r\n var letterO; //\r\n\r\n if (documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n\r\n isNewLine = false;\r\n }\r\n }\r\n\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n } //\r\n\r\n\r\n for (i = 0; i < len; i += 1) {\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n\r\n if (letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos;\r\n firstLine = false;\r\n\r\n if (this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n\r\n letterM = '';\r\n letterFc = '';\r\n letterSw = '';\r\n letterO = '';\r\n letterP = this.defaultPropsArray;\r\n } else {\r\n if (this._hasMaskedPath) {\r\n if (currentLine !== letters[i].line) {\r\n switch (documentData.j) {\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n currentLine = letters[i].line;\r\n }\r\n\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n\r\n currentLength += alignment[0] * letters[i].an * 0.005;\r\n var animatorOffset = 0;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n }\r\n\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n }\r\n }\r\n\r\n flag = true; // Force alignment only works with a single line for now\r\n\r\n if (this._pathData.a.v) {\r\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);\r\n currentLength += this._pathData.f.v;\r\n }\r\n\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\r\n\r\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\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\"\r\n\r\n if (xPos !== 0 || documentData.j !== 0) {\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n currentLength += animatorProps.t.v * mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v * mult;\r\n }\r\n } else if (mult.length) {\r\n xPos += animatorProps.t.v * mult[0];\r\n } else {\r\n xPos += animatorProps.t.v * mult;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n\r\n if (documentData.strokeColorAnim) {\r\n if (documentData.sc) {\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n } else {\r\n sc = [0, 0, 0];\r\n }\r\n }\r\n\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\r\n } else {\r\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (animatorProps.sk.propType) {\r\n if (mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.r.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.ry.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n } else {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.rx.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.o.propType) {\r\n if (mult.length) {\r\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\r\n } else {\r\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\r\n }\r\n }\r\n\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if (mult.length) {\r\n sw += animatorProps.sw.v * mult[0];\r\n } else {\r\n sw += animatorProps.sw.v * mult;\r\n }\r\n }\r\n\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n } else {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n }\r\n }\r\n }\r\n\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if (animatorProps.fc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n } else {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n }\r\n }\r\n }\r\n\r\n if (animatorProps.fh.propType) {\r\n if (mult.length) {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.fs.propType) {\r\n if (mult.length) {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.fb.propType) {\r\n if (mult.length) {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n } else if (mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }\r\n }\r\n\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n\r\n if (documentData.strokeColorAnim) {\r\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n }\r\n\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n }\r\n\r\n if (this._hasMaskedPath) {\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\r\n\r\n if (this._pathData.p.v) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\r\n\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n\r\n matrixHelper.rotate(-rot * Math.PI / 180);\r\n }\r\n\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= alignment[0] * letters[i].an * 0.005;\r\n\r\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n currentLength += letters[i].an / 2;\r\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\r\n }\r\n } else {\r\n matrixHelper.translate(xPos, yPos, 0);\r\n\r\n if (documentData.ps) {\r\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n break;\r\n\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(offf, 0, 0);\r\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\r\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\r\n }\r\n\r\n if (renderType === 'html') {\r\n letterM = matrixHelper.toCSS();\r\n } else if (renderType === 'svg') {\r\n letterM = matrixHelper.to2dCSS();\r\n } else {\r\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]];\r\n }\r\n\r\n letterO = elemOpacity;\r\n }\r\n\r\n if (renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n };\r\n\r\n TextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n };\r\n\r\n TextAnimatorProperty.prototype.mHelper = new Matrix();\r\n TextAnimatorProperty.prototype.defaultPropsArray = [];\r\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n function ITextElement() {}\r\n\r\n ITextElement.prototype.initElement = function (data, globalData, comp) {\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n };\r\n\r\n ITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n\r\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n };\r\n\r\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n var j;\r\n var jLen = shapes.length;\r\n var pathNodes;\r\n var shapeStr = '';\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[j].ty === 'sh') {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n }\r\n\r\n return shapeStr;\r\n };\r\n\r\n ITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n };\r\n\r\n ITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n };\r\n\r\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n };\r\n\r\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if (documentData.ps) {\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n break;\r\n\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n matrixHelper.translate(xPos, yPos, 0);\r\n };\r\n\r\n ITextElement.prototype.buildColor = function (colorData) {\r\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n };\r\n\r\n ITextElement.prototype.emptyProp = new LetterProps();\r\n\r\n ITextElement.prototype.destroy = function () {};\r\n\r\n var emptyShapeData = {\r\n shapes: []\r\n };\r\n\r\n function SVGTextLottieElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\n SVGTextLottieElement.prototype.createContent = function () {\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n };\r\n\r\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n var i = 0;\r\n var len = textArray.length;\r\n var textContents = [];\r\n var currentTextContent = '';\r\n\r\n while (i < len) {\r\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n };\r\n\r\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\r\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\r\n // but since text internal content gets only rendered once and then it's never rerendered,\r\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\r\n // Avoiding cloning is preferred since cloning each character shape data is expensive\r\n if (data.shapes && data.shapes.length) {\r\n var shape = data.shapes[0];\r\n\r\n if (shape.it) {\r\n var shapeItem = shape.it[shape.it.length - 1];\r\n\r\n if (shapeItem.s) {\r\n shapeItem.s.k[0] = scale;\r\n shapeItem.s.k[1] = scale;\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n };\r\n\r\n SVGTextLottieElement.prototype.buildNewText = function () {\r\n this.addDynamicProperty(this);\r\n var i;\r\n var len;\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n\r\n if (documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n } else {\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n\r\n if (documentData.sc) {\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n\r\n if (fontData.fClass) {\r\n this.layerElement.setAttribute('class', fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapeStr = '';\r\n var singleShape = this.data.singleShape;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n\r\n default:\r\n justify = 'start';\r\n break;\r\n }\r\n\r\n tElement.setAttribute('text-anchor', justify);\r\n tElement.setAttribute('letter-spacing', trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i].span || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n\r\n if (!this.textSpans[i]) {\r\n this.textSpans[i] = {\r\n span: null,\r\n glyph: null\r\n };\r\n }\r\n\r\n this.textSpans[i].span = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n\r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var charData;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.textSpans[i]) {\r\n this.textSpans[i] = {\r\n span: null,\r\n childSpan: null,\r\n glyph: null\r\n };\r\n }\r\n\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\r\n\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n this.textSpans[i].span = tSpan;\r\n\r\n if (usesGlyphs) {\r\n var childSpan = createNS('g');\r\n tSpan.appendChild(childSpan);\r\n this.textSpans[i].childSpan = childSpan;\r\n }\r\n\r\n this.textSpans[i].span = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n\r\n if (singleShape) {\r\n if (letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n\r\n xPos += trackingOffset;\r\n }\r\n\r\n if (usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\r\n\r\n if (charData.t === 1) {\r\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\r\n } else {\r\n var data = emptyShapeData;\r\n\r\n if (charData.data && charData.data.shapes) {\r\n data = this.buildShapeData(charData.data, documentData.finalSize);\r\n }\r\n\r\n glyphElement = new SVGShapeElement(data, this.globalData, this);\r\n }\r\n\r\n if (this.textSpans[i].glyph) {\r\n var glyph = this.textSpans[i].glyph;\r\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\r\n glyph.destroy();\r\n }\r\n\r\n this.textSpans[i].glyph = glyphElement;\r\n glyphElement._debug = true;\r\n glyphElement.prepareFrame(0);\r\n glyphElement.renderFrame();\r\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\r\n // this might have issues with strokes and might need a different solution\r\n\r\n if (charData.t === 1) {\r\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\r\n }\r\n } else {\r\n if (singleShape) {\r\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n }\r\n\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n } //\r\n\r\n }\r\n\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].span.style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n };\r\n\r\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n\r\n if (this._sizeChanged) {\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height\r\n };\r\n }\r\n\r\n return this.bbox;\r\n };\r\n\r\n SVGTextLottieElement.prototype.getValue = function () {\r\n var i;\r\n var len = this.textSpans.length;\r\n var glyphElement;\r\n this.renderedFrame = this.comp.renderedFrame;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n glyphElement = this.textSpans[i].glyph;\r\n\r\n if (glyphElement) {\r\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n\r\n if (glyphElement._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n SVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape || this._mdf) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n\r\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n this._sizeChanged = true;\r\n var i;\r\n var len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n var letters = this.textProperty.currentData.l;\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var glyphElement;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i].span;\r\n glyphElement = this.textSpans[i].glyph;\r\n\r\n if (glyphElement) {\r\n glyphElement.renderFrame();\r\n }\r\n\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n\r\n if (renderedLetter._mdf.fc) {\r\n textSpan.setAttribute('fill', renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n function ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([IImageElement], ISolidElement);\r\n\r\n ISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n };\r\n\r\n function NullElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n }\r\n\r\n NullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n };\r\n\r\n NullElement.prototype.renderFrame = function () {};\r\n\r\n NullElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n NullElement.prototype.destroy = function () {};\r\n\r\n NullElement.prototype.sourceRectAtTime = function () {};\r\n\r\n NullElement.prototype.hide = function () {};\r\n\r\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n function SVGRendererBase() {}\r\n\r\n extendPrototype([BaseRenderer], SVGRendererBase);\r\n\r\n SVGRendererBase.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\r\n\r\n if (this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n }\r\n\r\n if (!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width', animData.w);\r\n this.svgElement.setAttribute('height', animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\r\n }\r\n\r\n if (this.renderConfig.width) {\r\n this.svgElement.setAttribute('width', this.renderConfig.width);\r\n }\r\n\r\n if (this.renderConfig.height) {\r\n this.svgElement.setAttribute('height', this.renderConfig.height);\r\n }\r\n\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n\r\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\r\n\r\n var defs = this.globalData.defs;\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n var maskElement = createNS('clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width', animData.w);\r\n rect.setAttribute('height', animData.h);\r\n rect.setAttribute('x', 0);\r\n rect.setAttribute('y', 0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n };\r\n\r\n SVGRendererBase.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n };\r\n\r\n SVGRendererBase.prototype.updateContainerSize = function () {};\r\n\r\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\r\n var i = 0;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ind === ind) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n };\r\n\r\n SVGRendererBase.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n elements[pos] = element;\r\n\r\n if (getExpressionsPlugin()) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n\r\n element.initExpressions();\r\n }\r\n\r\n this.appendElementInPos(element, pos);\r\n\r\n if (this.layers[pos].tt) {\r\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\r\n\r\n if (elementIndex === -1) {\r\n return;\r\n }\r\n\r\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\r\n this.buildItem(elementIndex);\r\n this.addPendingElement(element);\r\n } else {\r\n var matteElement = elements[elementIndex];\r\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\r\n element.setMatte(matteMask);\r\n }\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\r\n var matteElement = this.elements[elementIndex];\r\n var matteMask = matteElement.getMatte(this.layers[i].tt);\r\n element.setMatte(matteMask);\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n } // console.log('-------');\r\n // console.log('FRAME ',num);\r\n\r\n\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i;\r\n var len = this.layers.length;\r\n\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n\r\n if (this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n\r\n if (!newElement) {\r\n return;\r\n }\r\n\r\n var i = 0;\r\n var nextElement;\r\n\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (nextElement) {\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n };\r\n\r\n SVGRendererBase.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n };\r\n\r\n function ICompElement() {}\r\n\r\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\n ICompElement.prototype.initElement = function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n\r\n this.hide();\r\n };\r\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 }; */\r\n\r\n\r\n ICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n\r\n if (!this.isInRange && !this.data.xt) {\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n\r\n var i;\r\n var len = this.elements.length;\r\n\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n } // This iteration needs to be backwards because of how expressions connect between each other\r\n\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n ICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n };\r\n\r\n ICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n };\r\n\r\n ICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n };\r\n\r\n ICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n };\r\n\r\n ICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n };\r\n\r\n function SVGCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n SVGCompElement.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n };\r\n\r\n function SVGRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\r\n\r\n var defs = createNS('defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n contentVisibility: config && config.contentVisibility || 'visible',\r\n progressiveLoad: config && config.progressiveLoad || false,\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n viewBoxOnly: config && config.viewBoxOnly || false,\r\n viewBoxSize: config && config.viewBoxSize || false,\r\n className: config && config.className || '',\r\n id: config && config.id || '',\r\n focusable: config && config.focusable,\r\n filterSize: {\r\n width: config && config.filterSize && config.filterSize.width || '100%',\r\n height: config && config.filterSize && config.filterSize.height || '100%',\r\n x: config && config.filterSize && config.filterSize.x || '0%',\r\n y: config && config.filterSize && config.filterSize.y || '0%'\r\n },\r\n width: config && config.width,\r\n height: config && config.height,\r\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n }\r\n\r\n extendPrototype([SVGRendererBase], SVGRenderer);\r\n\r\n SVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n };\r\n\r\n function CVContextData() {\r\n this.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i;\r\n var len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n\r\n this._length = len;\r\n }\r\n\r\n CVContextData.prototype.duplicate = function () {\r\n var newLength = this._length * 2;\r\n var currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n\r\n this._length = newLength;\r\n };\r\n\r\n CVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n };\r\n\r\n function ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n }\r\n\r\n ShapeTransformManager.prototype = {\r\n addTransformSequence: function addTransformSequence(transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n\r\n var sequence = this.sequences[key];\r\n\r\n if (!sequence) {\r\n sequence = {\r\n transforms: [].concat(transforms),\r\n finalTransform: new Matrix(),\r\n _mdf: false\r\n };\r\n this.sequences[key] = sequence;\r\n this.sequenceList.push(sequence);\r\n }\r\n\r\n return sequence;\r\n },\r\n processSequence: function processSequence(sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n\r\n while (i < len && !isFirstFrame) {\r\n if (sequence.transforms[i].transform.mProps._mdf) {\r\n _mdf = true;\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n props = sequence.transforms[i].transform.mProps.v.props;\r\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n }\r\n }\r\n\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function processSequences(isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.processSequence(this.sequenceList[i], isFirstFrame);\r\n }\r\n },\r\n getNewKey: function getNewKey() {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n }\r\n };\r\n\r\n function CVEffects() {}\r\n\r\n CVEffects.prototype.renderFrame = function () {};\r\n\r\n function CVMaskElement(data, element) {\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i;\r\n var len = this.masksProperties.length;\r\n var hasMasks = false;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n hasMasks = true;\r\n }\r\n\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n\r\n this.hasMasks = hasMasks;\r\n\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n CVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\r\n\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i;\r\n var len = this.masksProperties.length;\r\n var pt;\r\n var pts;\r\n var data;\r\n ctx.beginPath();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j;\r\n var jLen = data._length;\r\n\r\n for (j = 1; j < jLen; j += 1) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n };\r\n\r\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\n CVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n };\r\n\r\n function CVBaseElement() {}\r\n\r\n CVBaseElement.prototype = {\r\n createElements: function createElements() {},\r\n initRendererElement: function initRendererElement() {},\r\n createContainerElements: function createContainerElements() {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function createContent() {},\r\n setBlendMode: function setBlendMode() {\r\n var globalData = this.globalData;\r\n\r\n if (globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function createRenderableComponents() {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function hideElement() {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function showElement() {\r\n if (this.isInRange && !this.isTransparent) {\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function renderFrame() {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n var forceRealStack = this.data.ty === 0;\r\n this.globalData.renderer.save(forceRealStack);\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore(forceRealStack);\r\n\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function destroy() {\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix()\r\n };\r\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n function CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0, 0, 0, 0, 0, 0];\r\n var ty = 4;\r\n\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n\r\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n var i;\r\n var len = styles.length;\r\n var styledShape;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: []\r\n };\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n }\r\n\r\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n function CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n CVShapeElement.prototype.transformHelper = {\r\n opacity: 1,\r\n _opMdf: false\r\n };\r\n CVShapeElement.prototype.dashResetter = [];\r\n\r\n CVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n };\r\n\r\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true\r\n };\r\n var elementData = {};\r\n\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n\r\n if (!elementData.c.k) {\r\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n elementData.h = PropertyFactory.getProp(this, data.h || {\r\n k: 0\r\n }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || {\r\n k: 0\r\n }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n styleElem.lc = lineCapEnum[data.lc || 2];\r\n styleElem.lj = lineJoinEnum[data.lj || 2];\r\n\r\n if (data.lj == 1) {\r\n // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\r\n\r\n if (data.d) {\r\n var d = new DashProperty(this, data.d, 'canvas', this);\r\n elementData.d = d;\r\n\r\n if (!elementData.d.k) {\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem[\"do\"] = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: []\r\n };\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.createTransformElement = function (data) {\r\n var elementData = {\r\n transform: {\r\n opacity: 1,\r\n _opMdf: false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\r\n }\r\n };\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n };\r\n\r\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var processedPos;\r\n var modifier;\r\n var currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n\r\n ownModifiers.push(modifier);\r\n }\r\n\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderInnerContent = function () {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n };\r\n\r\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.drawLayer = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var elems;\r\n var nodes;\r\n var renderer = this.globalData.renderer;\r\n var ctx = this.globalData.canvasContext;\r\n var type;\r\n var currentStyle;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type; // Skipping style when\r\n // Stroke width equals 0\r\n // style should not be rendered (extra unused repeaters)\r\n // current opacity equals 0\r\n // global opacity equals 0\r\n\r\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n\r\n if (type === 'st' || type === 'gs') {\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle[\"do\"];\r\n }\r\n }\r\n\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (nodes[k].t === 'm') {\r\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n } else if (nodes[k].t === 'c') {\r\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]);\r\n } else {\r\n ctx.closePath();\r\n }\r\n }\r\n\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n\r\n renderer.restore();\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n var i;\r\n var len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n\r\n for (i = len; i >= 0; i -= 1) {\r\n if (items[i].ty === 'tr') {\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n this.renderPath(items[i], data[i]);\r\n } else if (items[i].ty === 'fl') {\r\n this.renderFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'st') {\r\n this.renderStroke(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n this.renderGradientFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gr') {\r\n this.renderShape(groupTransform, items[i].it, data[i].it);\r\n } else if (items[i].ty === 'tm') {//\r\n }\r\n }\r\n\r\n if (isMain) {\r\n this.drawLayer();\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i;\r\n var len;\r\n var j;\r\n var jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\r\n });\r\n }\r\n\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\r\n });\r\n }\r\n\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\r\n });\r\n }\r\n\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\r\n });\r\n shapeNodes.push({\r\n t: 'z'\r\n });\r\n }\r\n }\r\n }\r\n\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n if (pathData.hd !== true && pathData._shouldRender) {\r\n var i;\r\n var len = itemData.styledShapes.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n\r\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\r\n var ctx = this.globalData.canvasContext;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n var percent = itemData.h.v;\r\n\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i;\r\n var len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i * 2 + 1];\r\n }\r\n\r\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n\r\n styleElem.grd = grd;\r\n }\r\n\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n };\r\n\r\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n\r\n if (d && (d._mdf || this._isFirstFrame)) {\r\n styleElem.da = d.dashArray;\r\n styleElem[\"do\"] = d.dashoffset[0];\r\n }\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n\r\n if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.destroy = function () {\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n };\r\n\r\n function CVTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: ''\r\n };\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\n CVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var hasFill = false;\r\n\r\n if (documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n } else {\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n\r\n if (documentData.sc) {\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\r\n\r\n var charData;\r\n var shapeData;\r\n var k;\r\n var kLen;\r\n var shapes;\r\n var j;\r\n var jLen;\r\n var pathNodes;\r\n var commands;\r\n var pathArr;\r\n var singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var cnt = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = charData && charData.data || {};\r\n matrixHelper.reset();\r\n\r\n if (singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n\r\n commands = createSizedArray(jLen - 1);\r\n var commandsCounter = 0;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[j].ty === 'sh') {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n\r\n for (k = 1; k < kLen; k += 1) {\r\n if (k === 1) {\r\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));\r\n }\r\n\r\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));\r\n }\r\n\r\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));\r\n commands[commandsCounter] = pathArr;\r\n commandsCounter += 1;\r\n }\r\n }\r\n\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = {\r\n elem: commands\r\n };\r\n }\r\n\r\n cnt += 1;\r\n }\r\n };\r\n\r\n CVTextElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i;\r\n var len;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n var letters = this.textProperty.currentData.l;\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null;\r\n var lastStroke = null;\r\n var lastStrokeW = null;\r\n var commands;\r\n var pathArr;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n\r\n if (renderedLetter) {\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n\r\n if (this.fill) {\r\n if (renderedLetter && renderedLetter.fc) {\r\n if (lastFill !== renderedLetter.fc) {\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n } else if (lastFill !== this.values.fill) {\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill(); /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n\r\n if (this.stroke) {\r\n if (renderedLetter && renderedLetter.sw) {\r\n if (lastStrokeW !== renderedLetter.sw) {\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n } else if (lastStrokeW !== this.values.sWidth) {\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n\r\n if (renderedLetter && renderedLetter.sc) {\r\n if (lastStroke !== renderedLetter.sc) {\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n } else if (lastStroke !== this.values.stroke) {\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke(); /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n };\r\n\r\n function CVImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getAsset(this.assetData);\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\n CVImageElement.prototype.createContent = function () {\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w / this.assetData.h;\r\n var widthCrop;\r\n var heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n\r\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop * canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop / canvasRel;\r\n }\r\n\r\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n this.img = canvas;\r\n }\r\n };\r\n\r\n CVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n };\r\n\r\n CVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n };\r\n\r\n function CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\n CVSolidElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh); //\r\n };\r\n\r\n function CanvasRendererBase(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\r\n context: config && config.context || null,\r\n progressiveLoad: config && config.progressiveLoad || false,\r\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n contentVisibility: config && config.contentVisibility || 'visible',\r\n className: config && config.className || '',\r\n id: config && config.id || ''\r\n };\r\n this.renderConfig.dpr = config && config.dpr || 1;\r\n\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\r\n }\r\n\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n }\r\n\r\n extendPrototype([BaseRenderer], CanvasRendererBase);\r\n\r\n CanvasRendererBase.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\n CanvasRendererBase.prototype.ctxTransform = function (props) {\r\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n return;\r\n }\r\n\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n return;\r\n }\r\n\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]); // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n };\r\n\r\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\r\n /* if(op === 1){\r\n return;\r\n } */\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n\r\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n\r\n this.contextData.reset();\r\n };\r\n\r\n CanvasRendererBase.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n\r\n var props = this.contextData.cTr.props;\r\n\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n };\r\n\r\n CanvasRendererBase.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i;\r\n var arr = this.contextData.cTr.props;\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\r\n\r\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n\r\n if (this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.configAnimation = function (animData) {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.container = createTag('canvas');\r\n var containerStyle = this.animationItem.container.style;\r\n containerStyle.width = '100%';\r\n containerStyle.height = '100%';\r\n var origin = '0px 0px 0px';\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n containerStyle['-webkit-transform'] = origin;\r\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n\r\n if (this.renderConfig.id) {\r\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n }\r\n } else {\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h: animData.h,\r\n sx: 0,\r\n sy: 0,\r\n tx: 0,\r\n ty: 0\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n this.updateContainerSize();\r\n };\r\n\r\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n\r\n if (width) {\r\n elementWidth = width;\r\n elementHeight = height;\r\n this.canvasContext.canvas.width = elementWidth;\r\n this.canvasContext.canvas.height = elementHeight;\r\n } else {\r\n if (this.animationItem.wrapper && this.animationItem.container) {\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n } else {\r\n elementWidth = this.canvasContext.canvas.width;\r\n elementHeight = this.canvasContext.canvas.height;\r\n }\r\n\r\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\r\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\r\n }\r\n\r\n var elementRel;\r\n var animationRel;\r\n\r\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0, 4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth / elementHeight;\r\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n\r\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n } else {\r\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\r\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n\r\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\r\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n } else {\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\n\r\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];\r\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n };\r\n\r\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\r\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\r\n return;\r\n }\r\n\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\r\n // console.log('NEW: ',num);\r\n\r\n var i;\r\n var len = this.layers.length;\r\n\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n\r\n if (this.globalData._mdf) {\r\n if (this.renderConfig.clearCanvas === true) {\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n } else {\r\n this.save();\r\n }\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n\r\n if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n\r\n var element = this.createItem(this.layers[pos], this, this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\r\n };\r\n\r\n CanvasRendererBase.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n };\r\n\r\n CanvasRendererBase.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n };\r\n\r\n function CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\r\n\r\n CVCompElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.beginPath();\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.data.w, 0);\r\n ctx.lineTo(this.data.w, this.data.h);\r\n ctx.lineTo(0, this.data.h);\r\n ctx.lineTo(0, 0);\r\n ctx.clip();\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n };\r\n\r\n CVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n\r\n this.layers = null;\r\n this.elements = null;\r\n };\r\n\r\n CVCompElement.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n };\r\n\r\n function CanvasRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\r\n context: config && config.context || null,\r\n progressiveLoad: config && config.progressiveLoad || false,\r\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n contentVisibility: config && config.contentVisibility || 'visible',\r\n className: config && config.className || '',\r\n id: config && config.id || '',\r\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n };\r\n this.renderConfig.dpr = config && config.dpr || 1;\r\n\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\r\n }\r\n\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n }\r\n\r\n extendPrototype([CanvasRendererBase], CanvasRenderer);\r\n\r\n CanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n };\r\n\r\n function HBaseElement() {}\r\n\r\n HBaseElement.prototype = {\r\n checkBlendMode: function checkBlendMode() {},\r\n initRendererElement: function initRendererElement() {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n\r\n if (this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function createContainerElements() {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function renderElement() {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n\r\n if (this.finalTransform._matMdf) {\r\n var matrixValue = this.finalTransform.mat.toCSS();\r\n transformedElementStyle.transform = matrixValue;\r\n transformedElementStyle.webkitTransform = matrixValue;\r\n }\r\n\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function renderFrame() {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function destroy() {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n\r\n if (this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function createRenderableComponents() {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function addEffects() {},\r\n setMatte: function setMatte() {}\r\n };\r\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\r\n\r\n function HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\n HSolidElement.prototype.createContent = function () {\r\n var rect;\r\n\r\n if (this.data.hasMask) {\r\n rect = createNS('rect');\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.svgElement.setAttribute('width', this.data.sw);\r\n this.svgElement.setAttribute('height', this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n\r\n this.layerElement.appendChild(rect);\r\n };\r\n\r\n function HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = []; // Full shape data\r\n\r\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\r\n\r\n this.stylesList = []; // List of modifiers that will be applied to shapes\r\n\r\n this.shapeModifiers = []; // List of items in shape tree\r\n\r\n this.itemsData = []; // List of items in previous shape tree\r\n\r\n this.processedElements = []; // List of animated components\r\n\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\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.\r\n // List of elements that have been created\r\n\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0\r\n };\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\n HShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width', size.w);\r\n cont.setAttribute('height', size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n };\r\n\r\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n\r\n return point;\r\n };\r\n\r\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i;\r\n var len = shape._length;\r\n var vPoint;\r\n var oPoint;\r\n var nextIPoint;\r\n var nextVPoint;\r\n\r\n if (len <= 1) {\r\n return;\r\n }\r\n\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n\r\n if (shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n };\r\n\r\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n };\r\n\r\n HShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n };\r\n HShapeElement.prototype.tempBoundingBox = {\r\n x: 0,\r\n xMax: 0,\r\n y: 0,\r\n yMax: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n\r\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\r\n // eslint-disable-line no-plusplus\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n b |= 0; // eslint-disable-line no-bitwise\r\n\r\n a |= 0; // eslint-disable-line no-bitwise\r\n\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {//\r\n } else if (a === 0) {\r\n t = -c / b;\r\n\r\n if (t > 0 && t < 1) {\r\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n }\r\n } else {\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac >= 0) {\r\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n }\r\n }\r\n }\r\n\r\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n };\r\n\r\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\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];\r\n };\r\n\r\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n } else if (itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\r\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\r\n }\r\n }\r\n };\r\n\r\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\r\n var width = 0;\r\n\r\n if (widthProperty.keyframes) {\r\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\r\n var kfw = widthProperty.keyframes[i].s;\r\n\r\n if (kfw > width) {\r\n width = kfw;\r\n }\r\n }\r\n\r\n width *= widthProperty.mult;\r\n } else {\r\n width = widthProperty.v * widthProperty.mult;\r\n }\r\n\r\n boundingBox.x -= width;\r\n boundingBox.xMax += width;\r\n boundingBox.y -= width;\r\n boundingBox.yMax += width;\r\n };\r\n\r\n HShapeElement.prototype.currentBoxContains = function (box) {\r\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;\r\n };\r\n\r\n HShapeElement.prototype.renderInnerContent = function () {\r\n this._renderShapeFrame();\r\n\r\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\r\n\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n\r\n var changed = false;\r\n\r\n if (this.currentBBox.w !== tempBoundingBox.width) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n changed = true;\r\n }\r\n\r\n if (this.currentBBox.h !== tempBoundingBox.height) {\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n changed = true;\r\n }\r\n\r\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n var shapeStyle = this.shapeCont.style;\r\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n shapeStyle.transform = shapeTransform;\r\n shapeStyle.webkitTransform = shapeTransform;\r\n }\r\n }\r\n };\r\n\r\n function HTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\n HTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n\r\n if (this.isMasked) {\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width', this.compW);\r\n this.svgElement.setAttribute('height', this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n };\r\n\r\n HTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n innerElemStyle.fill = textColor;\r\n innerElemStyle.color = textColor;\r\n\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n\r\n if (fontData.fClass) {\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan;\r\n var tParent;\r\n var tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var cnt = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.globalData.fontManager.chars) {\r\n if (!this.textPaths[cnt]) {\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\r\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n\r\n if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n tParent = createTag('div');\r\n tParent.style.lineHeight = 0;\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n } else if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n } // tSpan.setAttribute('visibility', 'hidden');\r\n\r\n\r\n if (this.globalData.fontManager.chars) {\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n\r\n matrixHelper.reset();\r\n\r\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n shapeStr = this.createPathShape(matrixHelper, shapes);\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n\r\n if (shapeData && shapeData.shapes) {\r\n // document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width', boundingBox.width + 2);\r\n tCont.setAttribute('height', boundingBox.height + 2);\r\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n var tContStyle = tCont.style;\r\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n tContStyle.transform = tContTranslation;\r\n tContStyle.webkitTransform = tContTranslation;\r\n letters[i].yOffset = boundingBox.y - 1;\r\n } else {\r\n tCont.setAttribute('width', 1);\r\n tCont.setAttribute('height', 1);\r\n }\r\n\r\n tParent.appendChild(tCont);\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent); //\r\n\r\n var tStyle = tSpan.style;\r\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n tStyle.transform = tSpanTranslation;\r\n tStyle.webkitTransform = tSpanTranslation;\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } //\r\n\r\n\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n\r\n while (cnt < this.textSpans.length) {\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n };\r\n\r\n HTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n }\r\n\r\n if (this.isMasked && this.finalTransform._matMdf) {\r\n // Todo Benchmark if using this is better than getBBox\r\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n svgStyle = this.svgElement.style;\r\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n svgStyle.transform = translation;\r\n svgStyle.webkitTransform = translation;\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n var letters = this.textProperty.currentData.l;\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n count += 1;\r\n } else {\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n\r\n if (renderedLetter._mdf.m) {\r\n if (!this.isMasked) {\r\n textSpan.style.webkitTransform = renderedLetter.m;\r\n textSpan.style.transform = renderedLetter.m;\r\n } else {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n\r\n\r\n textSpan.style.opacity = renderedLetter.o;\r\n\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n\r\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n textPath.setAttribute('fill', renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n }\r\n\r\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if (this.currentBBox.w !== boundingBox.width) {\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width', boundingBox.width);\r\n }\r\n\r\n if (this.currentBBox.h !== boundingBox.height) {\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height', boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\n\r\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) {\r\n this.currentBBox.w = boundingBox.width + margin * 2;\r\n this.currentBBox.h = boundingBox.height + margin * 2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n svgStyle = this.svgElement.style;\r\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n svgStyle.transform = svgTransform;\r\n svgStyle.webkitTransform = svgTransform;\r\n }\r\n }\r\n };\r\n\r\n function HCameraElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this, data.pe, 0, 0, this);\r\n\r\n if (data.ks.p.s) {\r\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n } else {\r\n this.p = getProp(this, data.ks.p, 1, 0, this);\r\n }\r\n\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\r\n\r\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n var i;\r\n var len = data.ks.or.k.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n\r\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n this.or.sh = true;\r\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n\r\n this.finalTransform = {\r\n mProp: this\r\n };\r\n }\r\n\r\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\n HCameraElement.prototype.setup = function () {\r\n var i;\r\n var len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n\r\n if (comp.type === '3d') {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n containerStyle = comp.container.style;\r\n var perspective = this.pe.v + 'px';\r\n var origin = '0px 0px 0px';\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n perspectiveStyle.perspective = perspective;\r\n perspectiveStyle.webkitPerspective = perspective;\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n perspectiveStyle.transform = matrix;\r\n perspectiveStyle.webkitTransform = matrix;\r\n }\r\n }\r\n };\r\n\r\n HCameraElement.prototype.createElements = function () {};\r\n\r\n HCameraElement.prototype.hide = function () {};\r\n\r\n HCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\n\r\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) {\r\n this.mat.reset();\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length - 1;\r\n\r\n for (i = len; i >= 0; i -= 1) {\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n }\r\n }\r\n\r\n if (this.p) {\r\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n } else {\r\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n }\r\n\r\n if (this.a) {\r\n var diffVector;\r\n\r\n if (this.p) {\r\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]];\r\n } else {\r\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n }\r\n\r\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));\r\n\r\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\r\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\r\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n }\r\n\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n this.mat.translate(0, 0, this.pe.v);\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n\r\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n\r\n if (comp.type === '3d') {\r\n if (hasMatrixChanged) {\r\n var matValue = this.mat.toCSS();\r\n containerStyle = comp.container.style;\r\n containerStyle.transform = matValue;\r\n containerStyle.webkitTransform = matValue;\r\n }\r\n\r\n if (this.pe._mdf) {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n perspectiveStyle.perspective = this.pe.v + 'px';\r\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n }\r\n }\r\n }\r\n\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n\r\n this._isFirstFrame = false;\r\n };\r\n\r\n HCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n };\r\n\r\n HCameraElement.prototype.destroy = function () {};\r\n\r\n HCameraElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n function HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\n HImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if (this.data.hasMask) {\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width', this.assetData.w);\r\n this.baseElement.setAttribute('height', this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n };\r\n\r\n function HybridRendererBase(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: config && config.className || '',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: config && config.filterSize && config.filterSize.width || '400%',\r\n height: config && config.filterSize && config.filterSize.height || '400%',\r\n x: config && config.filterSize && config.filterSize.x || '-100%',\r\n y: config && config.filterSize && config.filterSize.y || '-100%'\r\n }\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n }\r\n\r\n extendPrototype([BaseRenderer], HybridRendererBase);\r\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\n HybridRendererBase.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n\r\n var layer = this.layers[pos];\r\n\r\n if (!layer.ddd || !this.supports3d) {\r\n if (this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement;\r\n var nextLayer;\r\n var tmpDOMElement;\r\n\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (nextDOMElement) {\r\n if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n } else {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n\r\n return new HShapeElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n\r\n return new HTextElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n };\r\n\r\n HybridRendererBase.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n\r\n return new HImageElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n\r\n return new HSolidElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n\r\n while (i < len) {\r\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\r\n var perspectiveElem = createTag('div');\r\n var style;\r\n var containerStyle;\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n\r\n if (type === '3d') {\r\n style = perspectiveElem.style;\r\n style.width = this.globalData.compSize.w + 'px';\r\n style.height = this.globalData.compSize.h + 'px';\r\n var center = '50% 50%';\r\n style.webkitTransformOrigin = center;\r\n style.mozTransformOrigin = center;\r\n style.transformOrigin = center;\r\n containerStyle = container.style;\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n containerStyle.transform = matrix;\r\n containerStyle.webkitTransform = matrix;\r\n }\r\n\r\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\r\n\r\n var threeDContainerData = {\r\n container: container,\r\n perspectiveElem: perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n };\r\n\r\n HybridRendererBase.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n if (currentContainer !== '3d') {\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n }\r\n\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n } else {\r\n if (currentContainer !== '2d') {\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n }\r\n\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n\r\n len = this.threeDElements.length;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n\r\n while (i < len) {\r\n if (pos <= this.threeDElements[i].endPos) {\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n\r\n j += 1;\r\n }\r\n\r\n if (nextElement) {\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.configAnimation = function (animData) {\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n var style = resizerElem.style;\r\n style.width = animData.w + 'px';\r\n style.height = animData.h + 'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n style.transformStyle = 'flat';\r\n style.mozTransformStyle = 'flat';\r\n style.webkitTransformStyle = 'flat';\r\n\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n\r\n wrapper.appendChild(resizerElem);\r\n style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width', '1');\r\n svg.setAttribute('height', '1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData; // Mask animation\r\n\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n };\r\n\r\n HybridRendererBase.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.elements[i].destroy();\r\n }\r\n\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n };\r\n\r\n HybridRendererBase.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth / elementHeight;\r\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n var sx;\r\n var sy;\r\n var tx;\r\n var ty;\r\n\r\n if (animationRel > elementRel) {\r\n sx = elementWidth / this.globalData.compSize.w;\r\n sy = elementWidth / this.globalData.compSize.w;\r\n tx = 0;\r\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\r\n } else {\r\n sx = elementHeight / this.globalData.compSize.h;\r\n sy = elementHeight / this.globalData.compSize.h;\r\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n ty = 0;\r\n }\r\n\r\n var style = this.resizerElem.style;\r\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n style.transform = style.webkitTransform;\r\n };\r\n\r\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\n HybridRendererBase.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n };\r\n\r\n HybridRendererBase.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n };\r\n\r\n HybridRendererBase.prototype.initItems = function () {\r\n this.buildAllItems();\r\n\r\n if (this.camera) {\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i;\r\n var len = this.threeDElements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n var style = this.threeDElements[i].perspectiveElem.style;\r\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n style.perspective = style.webkitPerspective;\r\n }\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n };\r\n\r\n function HCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\r\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\n HCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n\r\n\r\n if (this.data.hasMask) {\r\n this.svgElement.setAttribute('width', this.data.w);\r\n this.svgElement.setAttribute('height', this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n };\r\n\r\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n\r\n j += 1;\r\n }\r\n\r\n if (nextElement) {\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n };\r\n\r\n HCompElement.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n\r\n return new HCompElement(data, this.globalData, this);\r\n };\r\n\r\n function HybridRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: config && config.className || '',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: config && config.filterSize && config.filterSize.width || '400%',\r\n height: config && config.filterSize && config.filterSize.height || '400%',\r\n x: config && config.filterSize && config.filterSize.x || '-100%',\r\n y: config && config.filterSize && config.filterSize.y || '-100%'\r\n },\r\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n }\r\n\r\n extendPrototype([HybridRendererBase], HybridRenderer);\r\n\r\n HybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n\r\n return new HCompElement(data, this.globalData, this);\r\n };\r\n\r\n var CompExpressionInterface = function () {\r\n return function (comp) {\r\n function _thisLayerFunction(name) {\r\n var i = 0;\r\n var len = comp.layers.length;\r\n\r\n while (i < len) {\r\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n return comp.elements[i].layerInterface;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null; // return {active:false};\r\n }\r\n\r\n Object.defineProperty(_thisLayerFunction, '_name', {\r\n value: comp.data.nm\r\n });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n }();\r\n\r\n var Expressions = function () {\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n function initExpressions(animation) {\r\n var stackCount = 0;\r\n var registers = [];\r\n\r\n function pushExpression() {\r\n stackCount += 1;\r\n }\r\n\r\n function popExpression() {\r\n stackCount -= 1;\r\n\r\n if (stackCount === 0) {\r\n releaseInstances();\r\n }\r\n }\r\n\r\n function registerExpressionProperty(expression) {\r\n if (registers.indexOf(expression) === -1) {\r\n registers.push(expression);\r\n }\r\n }\r\n\r\n function releaseInstances() {\r\n var i;\r\n var len = registers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\r\n\r\n registers.length = 0;\r\n }\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var MaskManagerInterface = function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function get() {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n\r\n return this._mask.prop;\r\n }\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function get() {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n\r\n return this._mask.op.v * 100;\r\n }\r\n });\r\n\r\n var MaskManager = function MaskManager(maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n\r\n var i;\r\n var len = maskManager.viewData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n }\r\n\r\n var maskFunction = function maskFunction(name) {\r\n i = 0;\r\n\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n return maskFunction;\r\n };\r\n\r\n return MaskManager;\r\n }();\r\n\r\n var ExpressionPropertyInterface = function () {\r\n var defaultUnidimensionalValue = {\r\n pv: 0,\r\n v: 0,\r\n mult: 1\r\n };\r\n var defaultMultidimensionalValue = {\r\n pv: [0, 0, 0],\r\n v: [0, 0, 0],\r\n mult: 1\r\n };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function get() {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n }\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n\r\n var value = '';\r\n\r\n if ('s' in property.keyframes[pos - 1]) {\r\n value = property.keyframes[pos - 1].s;\r\n } else if ('e' in property.keyframes[pos - 2]) {\r\n value = property.keyframes[pos - 2].e;\r\n } else {\r\n value = property.keyframes[pos - 2].s;\r\n }\r\n\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n\r\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n return valueProp;\r\n };\r\n\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n\r\n val = property.v * mult;\r\n\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n\r\n return expressionValue;\r\n };\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n\r\n var mult = 1 / property.mult;\r\n var len = property.data && property.data.l || property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n\r\n for (var i = 0; i < len; i += 1) {\r\n arrValue[i] = property.v[i] * mult;\r\n expressionValue[i] = arrValue[i];\r\n }\r\n\r\n return expressionValue;\r\n };\r\n } // TODO: try to avoid using this getter\r\n\r\n\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n\r\n return function (property) {\r\n if (!property) {\r\n return defaultGetter;\r\n }\r\n\r\n if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n }();\r\n\r\n var TransformExpressionInterface = function () {\r\n return function (transform) {\r\n function _thisFunction(name) {\r\n switch (name) {\r\n case 'scale':\r\n case 'Scale':\r\n case 'ADBE Scale':\r\n case 6:\r\n return _thisFunction.scale;\r\n\r\n case 'rotation':\r\n case 'Rotation':\r\n case 'ADBE Rotation':\r\n case 'ADBE Rotate Z':\r\n case 10:\r\n return _thisFunction.rotation;\r\n\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n\r\n case 'anchorPoint':\r\n case 'AnchorPoint':\r\n case 'Anchor Point':\r\n case 'ADBE AnchorPoint':\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz)\r\n });\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r)\r\n });\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx)\r\n });\r\n Object.defineProperty(_thisFunction, 'yRotation', {\r\n get: ExpressionPropertyInterface(transform.ry)\r\n });\r\n Object.defineProperty(_thisFunction, 'scale', {\r\n get: ExpressionPropertyInterface(transform.s)\r\n });\r\n\r\n var _px;\r\n\r\n var _py;\r\n\r\n var _pz;\r\n\r\n var _transformFactory;\r\n\r\n if (transform.p) {\r\n _transformFactory = ExpressionPropertyInterface(transform.p);\r\n } else {\r\n _px = ExpressionPropertyInterface(transform.px);\r\n _py = ExpressionPropertyInterface(transform.py);\r\n\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function get() {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n\r\n return [_px(), _py(), _pz ? _pz() : 0];\r\n }\r\n });\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px)\r\n });\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py)\r\n });\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz)\r\n });\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a)\r\n });\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o)\r\n });\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk)\r\n });\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa)\r\n });\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or)\r\n });\r\n return _thisFunction;\r\n };\r\n }();\r\n\r\n var LayerExpressionInterface = function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n\r\n propMatrix.clone(toWorldMat);\r\n } else {\r\n var transformMat = this._elem.finalTransform.mProp;\r\n transformMat.applyToMatrix(toWorldMat);\r\n }\r\n\r\n return toWorldMat;\r\n }\r\n\r\n function toWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function toWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function applyPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n\r\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n }\r\n\r\n function invertPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n\r\n return matrix.inversePoint(arr);\r\n }\r\n\r\n function fromComp(arr) {\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1, 1, 1, 1];\r\n }\r\n\r\n return function (elem) {\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager) {\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n\r\n function _registerEffectsInterface(effects) {\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Root Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n\r\n case 1:\r\n case 6:\r\n case 'Transform':\r\n case 'transform':\r\n case 'ADBE Transform Group':\r\n return transformInterface;\r\n\r\n case 4:\r\n case 'ADBE Effect Parade':\r\n case 'effects':\r\n case 'Effects':\r\n return _thisLayerFunction.effect;\r\n\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n _thisLayerFunction.getMatrix = getMatrix;\r\n _thisLayerFunction.invertPoint = invertPoint;\r\n _thisLayerFunction.applyPoint = applyPoint;\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.toWorldVec = toWorldVec;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction, {\r\n hasParent: {\r\n get: function get() {\r\n return elem.hierarchy.length;\r\n }\r\n },\r\n parent: {\r\n get: function get() {\r\n return elem.hierarchy[0].layerInterface;\r\n }\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function get() {\r\n return transformInterface;\r\n }\r\n },\r\n active: {\r\n get: function get() {\r\n return elem.isInRange;\r\n }\r\n }\r\n });\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n }();\r\n\r\n var propertyGroupFactory = function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n }();\r\n\r\n var PropertyInterface = function () {\r\n return function (propertyName, propertyGroup) {\r\n var interfaceFunction = {\r\n _name: propertyName\r\n };\r\n\r\n function _propertyGroup(val) {\r\n val = val === undefined ? 1 : val;\r\n\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n }();\r\n\r\n var EffectsExpressionInterface = function () {\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup) {\r\n if (elem.effectsManager) {\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i;\r\n var len = elem.effectsManager.effectElements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n }\r\n\r\n var effects = elem.data.ef || [];\r\n\r\n var groupInterface = function groupInterface(name) {\r\n i = 0;\r\n len = effects.length;\r\n\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n return effectElements[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function get() {\r\n return effects.length;\r\n }\r\n });\r\n return groupInterface;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function createGroupInterface(data, elements, propertyGroup, elem) {\r\n function groupInterface(name) {\r\n var effects = data.ef;\r\n var i = 0;\r\n var len = effects.length;\r\n\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n if (effects[i].ty === 5) {\r\n return effectElements[i];\r\n }\r\n\r\n return effectElements[i]();\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n throw new Error();\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n var effectElements = [];\r\n var i;\r\n var len = data.ef.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (data.ef[i].ty === 5) {\r\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n if (data.mn === 'ADBE Color Control') {\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function get() {\r\n return effectElements[0]();\r\n }\r\n });\r\n }\r\n\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function get() {\r\n return data.np;\r\n }\r\n },\r\n _name: {\r\n value: data.nm\r\n },\r\n propertyGroup: {\r\n value: _propertyGroup\r\n }\r\n });\r\n groupInterface.enabled = data.en !== 0;\r\n groupInterface.active = groupInterface.enabled;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup) {\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n\r\n return expressionProperty();\r\n }\r\n\r\n if (element.p.setGroupProperty) {\r\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var ShapePathInterface = function () {\r\n return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n var prop = view.sh;\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n return interfaceFunction.path;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function get() {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n\r\n return prop;\r\n }\r\n },\r\n shape: {\r\n get: function get() {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n\r\n return prop;\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n ix: {\r\n value: shape.ix\r\n },\r\n propertyIndex: {\r\n value: shape.ix\r\n },\r\n mn: {\r\n value: shape.mn\r\n },\r\n propertyGroup: {\r\n value: propertyGroup\r\n }\r\n });\r\n return interfaceFunction;\r\n };\r\n }();\r\n\r\n var ShapeExpressionInterface = function () {\r\n function iterateElements(shapes, view, propertyGroup) {\r\n var arr = [];\r\n var i;\r\n var len = shapes ? shapes.length : 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'fl') {\r\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'st') {\r\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tm') {\r\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if (shapes[i].ty === 'el') {\r\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sr') {\r\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sh') {\r\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rc') {\r\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rd') {\r\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rp') {\r\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'gf') {\r\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else {\r\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n }\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n\r\n while (i < len) {\r\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n return interfaces[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\r\n\r\n return null;\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.transform = transformInterface;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n switch (value) {\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n // Not necessary for now. Keeping them here in case a new case appears\r\n // case 'ADBE Vector Transform Group':\r\n // case 3:\r\n\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function get() {\r\n return shape.nm;\r\n }\r\n }); // interfaceFunction.content = interfaceFunction;\r\n\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c)\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n value: shape.mn\r\n }\r\n });\r\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Start Point' || val === 'start point') {\r\n return interfaceFunction.startPoint;\r\n }\r\n\r\n if (val === 'End Point' || val === 'end point') {\r\n return interfaceFunction.endPoint;\r\n }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n startPoint: {\r\n get: ExpressionPropertyInterface(view.s)\r\n },\r\n endPoint: {\r\n get: ExpressionPropertyInterface(view.e)\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n type: {\r\n get: function get() {\r\n return 'a';\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n value: shape.mn\r\n }\r\n });\r\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function defaultInterfaceFactory() {\r\n function interfaceFunction() {\r\n return null;\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\r\n });\r\n }\r\n\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c)\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n strokeWidth: {\r\n get: ExpressionPropertyInterface(view.w)\r\n },\r\n dash: {\r\n get: function get() {\r\n return dashOb;\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n value: shape.mn\r\n }\r\n });\r\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n return interfaceFunction.end;\r\n }\r\n\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n interfaceFunction.propertyIndex = shape.ix;\r\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n Object.defineProperties(interfaceFunction, {\r\n start: {\r\n get: ExpressionPropertyInterface(view.s)\r\n },\r\n end: {\r\n get: ExpressionPropertyInterface(view.e)\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.a.ix === value || value === 'Anchor Point') {\r\n return interfaceFunction.anchorPoint;\r\n }\r\n\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n\r\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n\r\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n if (view.transform.mProps.sk) {\r\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n }\r\n\r\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o)\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p)\r\n },\r\n anchorPoint: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a)\r\n },\r\n scale: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s)\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r)\r\n },\r\n skew: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\r\n },\r\n skewAxis: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s)\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\r\n\r\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n return interfaceFunction.innerRadius;\r\n }\r\n\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n if (shape.ir) {\r\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(prop.r)\r\n },\r\n points: {\r\n get: ExpressionPropertyInterface(prop.pt)\r\n },\r\n outerRadius: {\r\n get: ExpressionPropertyInterface(prop.or)\r\n },\r\n outerRoundness: {\r\n get: ExpressionPropertyInterface(prop.os)\r\n },\r\n innerRadius: {\r\n get: ExpressionPropertyInterface(prop.ir)\r\n },\r\n innerRoundness: {\r\n get: ExpressionPropertyInterface(prop.is)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\r\n\r\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n return interfaceFunction.size;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n roundness: {\r\n get: ExpressionPropertyInterface(prop.r)\r\n },\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.r.ix === value || value === 'Round Corners 1') {\r\n return interfaceFunction.radius;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.c.ix === value || value === 'Copies') {\r\n return interfaceFunction.copies;\r\n }\r\n\r\n if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n copies: {\r\n get: ExpressionPropertyInterface(prop.c)\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(prop.o)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n return function (shapes, view, propertyGroup) {\r\n var interfaces;\r\n\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n\r\n return interfaces[value - 1];\r\n }\r\n\r\n var i = 0;\r\n var len = interfaces.length;\r\n\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\r\n\r\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n _interfaceFunction._name = 'Contents';\r\n return _interfaceFunction;\r\n };\r\n }();\r\n\r\n var TextExpressionInterface = function () {\r\n return function (elem) {\r\n var _prevValue;\r\n\r\n var _sourceText;\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function get() {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n\r\n if (stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n\r\n return _sourceText;\r\n }\r\n });\r\n return _thisLayerFunction;\r\n };\r\n }();\r\n\r\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); }\r\n\r\n var FootageInterface = function () {\r\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n\r\n if (_typeof$2(currentProperty) === 'object') {\r\n return searchProperty;\r\n }\r\n\r\n return currentProperty;\r\n }\r\n\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n\r\n if (_typeof$2(currentProperty) === 'object') {\r\n return searchProperty;\r\n }\r\n\r\n return currentProperty;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n return init;\r\n };\r\n\r\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n interfaceFunction._name = 'Outline';\r\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n return interfaceFunction;\r\n };\r\n\r\n return function (elem) {\r\n function _interfaceFunction(value) {\r\n if (value === 'Data') {\r\n return _interfaceFunction.dataInterface;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n _interfaceFunction._name = 'Data';\r\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n return _interfaceFunction;\r\n };\r\n }();\r\n\r\n var interfaces = {\r\n layer: LayerExpressionInterface,\r\n effects: EffectsExpressionInterface,\r\n comp: CompExpressionInterface,\r\n shape: ShapeExpressionInterface,\r\n text: TextExpressionInterface,\r\n footage: FootageInterface\r\n };\r\n\r\n function getInterface(type) {\r\n return interfaces[type] || null;\r\n }\r\n\r\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); }\r\n\r\n /* eslint-disable */\r\n\r\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 */\r\n function seedRandom(pool, math) {\r\n //\r\n // The following constants are related to IEEE 754 limits.\r\n //\r\n var global = this,\r\n width = 256,\r\n // each RC4 output is 0 <= x < 256\r\n chunks = 6,\r\n // at least six RC4 outputs for each double\r\n digits = 52,\r\n // there are 52 significant digits in a double\r\n rngname = 'random',\r\n // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n //\r\n // seedrandom()\r\n // This is the seedrandom function described above.\r\n //\r\n\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = options === true ? {\r\n entropy: true\r\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\r\n\r\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\r\n\r\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n\r\n var prng = function prng() {\r\n var n = arc4.g(chunks),\r\n // Start with a numerator n < 2 ^ 48\r\n d = startdenom,\r\n // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n\r\n while (n < significance) {\r\n // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n\r\n d *= width; // denominator and generating a\r\n\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n\r\n while (n >= overflow) {\r\n // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n\r\n d /= 2; // right using integer math until\r\n\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function () {\r\n return arc4.g(4) | 0;\r\n };\r\n\r\n prng.quick = function () {\r\n return arc4.g(4) / 0x100000000;\r\n };\r\n\r\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\r\n\r\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\r\n\r\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) {\r\n copy(state, arc4);\r\n } // Only provide the .state method if requested via options.state.\r\n\r\n\r\n prng.state = function () {\r\n return copy(arc4, {});\r\n };\r\n } // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n\r\n\r\n if (is_math_call) {\r\n math[rngname] = prng;\r\n return seed;\r\n } // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\r\n }\r\n\r\n math['seed' + rngname] = seedrandom; //\r\n // ARC4\r\n //\r\n // An ARC4 implementation. The constructor takes a key in the form of\r\n // an array of at most (width) integers that should be 0 <= x < (width).\r\n //\r\n // The g(count) method returns a pseudorandom integer that concatenates\r\n // the next (count) outputs from ARC4. Its return value is a number x\r\n // that is in the range 0 <= x < (width ^ count).\r\n //\r\n\r\n function ARC4(key) {\r\n var t,\r\n keylen = key.length,\r\n me = this,\r\n i = 0,\r\n j = me.i = me.j = 0,\r\n s = me.S = []; // The empty key [] is treated as [0].\r\n\r\n if (!keylen) {\r\n key = [keylen++];\r\n } // Set up S using the standard key scheduling algorithm.\r\n\r\n\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\r\n s[j] = t;\r\n } // The \"g\" method returns the next (count) outputs as one number.\r\n\r\n\r\n me.g = function (count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t,\r\n r = 0,\r\n i = me.i,\r\n j = me.j,\r\n s = me.S;\r\n\r\n while (count--) {\r\n t = s[i = mask & i + 1];\r\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\r\n }\r\n\r\n me.i = i;\r\n me.j = j;\r\n return r; // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n } //\r\n // copy()\r\n // Copies internal state of ARC4 to or from a plain object.\r\n //\r\n\r\n\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n } //\r\n // flatten()\r\n // Converts an object tree to nested arrays of strings.\r\n //\r\n\r\n\r\n function flatten(obj, depth) {\r\n var result = [],\r\n typ = _typeof$1(obj),\r\n prop;\r\n\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try {\r\n result.push(flatten(obj[prop], depth - 1));\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\r\n } //\r\n // mixkey()\r\n // Mixes a string seed into a key that is an array of integers, and\r\n // returns a shortened string seed that is equivalent to the result key.\r\n //\r\n\r\n\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '',\r\n smear,\r\n j = 0;\r\n\r\n while (j < stringseed.length) {\r\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\r\n }\r\n\r\n return tostring(key);\r\n } //\r\n // autoseed()\r\n // Returns an object for autoseeding, using window.crypto and Node crypto\r\n // module if available.\r\n //\r\n\r\n\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) {\r\n return tostring(nodecrypto.randomBytes(width));\r\n }\r\n\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n } //\r\n // tostring()\r\n // Converts an array of charcodes to a string\r\n //\r\n\r\n\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n } //\r\n // When seedrandom.js is loaded, we immediately mix a few bits\r\n // from the built-in RNG into the entropy pool. Because we do\r\n // not want to interfere with deterministic PRNG state later,\r\n // seedrandom will not call math.random on its own again after\r\n // initialization.\r\n //\r\n\r\n\r\n mixkey(math.random(), pool); //\r\n // Nodejs and AMD support: export the implementation as a module using\r\n // either convention.\r\n //\r\n // End anonymous scope, and pass initial values.\r\n }\r\n\r\n ;\r\n\r\n function initialize$2(BMMath) {\r\n seedRandom([], BMMath);\r\n }\r\n\r\n var propTypes = {\r\n SHAPE: 'shape'\r\n };\r\n\r\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); }\r\n\r\n var ExpressionManager = function () {\r\n 'use strict';\r\n\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n var XMLHttpRequest = null;\r\n var fetch = null;\r\n var frames = null;\r\n initialize$2(BMMath);\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a) {\r\n var tOfA = _typeof(a);\r\n\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n\r\n return -a;\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n function sum(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] += b;\r\n return a;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] + b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n\r\n return a - b;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] -= b;\r\n return a;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] - b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n var arr;\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i;\r\n var len;\r\n\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n var arr;\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n\r\n var i;\r\n var len;\r\n\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n\r\n return a % b;\r\n }\r\n\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if (min > max) {\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val / degToRads;\r\n }\r\n\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n\r\n var degrees_to_radians = radiansToDegrees;\r\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0];\r\n var g = val[1];\r\n var b = val[2];\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h;\r\n var s;\r\n var l = (max + min) / 2;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n\r\n s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l, val[3]];\r\n }\r\n\r\n function hue2rgb(p, q, t) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n function hslToRgb(val) {\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n\r\n b = l; // achromatic\r\n\r\n g = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return [r, g, b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2) {\r\n if (value1 === undefined || value2 === undefined) {\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n\r\n if (t <= tMin) {\r\n return value1;\r\n }\r\n\r\n if (t >= tMax) {\r\n return value2;\r\n }\r\n\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function random(min, max) {\r\n if (max === undefined) {\r\n if (min === undefined) {\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (min === undefined) {\r\n min = 0;\r\n }\r\n\r\n var rndm = BMMath.random();\r\n return min + rndm * (max - min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i;\r\n var len = points.length;\r\n var path = shapePool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0, 0];\r\n var inVertexPoint;\r\n var outVertexPoint;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\r\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);\r\n }\r\n\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n // Bail out if we don't want expressions\r\n function noOp(_value) {\r\n return _value;\r\n }\r\n\r\n if (!elem.globalData.renderConfig.runExpressions) {\r\n return noOp;\r\n }\r\n\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n\r\n var elemType = elem.data.ty;\r\n var transform;\r\n var $bm_transform;\r\n var content;\r\n var effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function get() {\r\n return thisProperty.v;\r\n }\r\n });\r\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn;\r\n var loop_in;\r\n var loopOut;\r\n var loop_out;\r\n var smooth;\r\n var toWorld;\r\n var fromWorld;\r\n var fromComp;\r\n var toComp;\r\n var fromCompToSurface;\r\n var position;\r\n var rotation;\r\n var anchorPoint;\r\n var scale;\r\n var thisLayer;\r\n var thisComp;\r\n var mask;\r\n var valueAtTime;\r\n var velocityAtTime;\r\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\r\n\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n\r\n var numKeys = property.kf ? data.k.length : 0;\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq, amp) {\r\n var iWiggle;\r\n var j;\r\n var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', lenWiggle);\r\n freq = 5;\r\n var iterations = Math.floor(time * freq);\r\n iWiggle = 0;\r\n j = 0;\r\n\r\n while (iWiggle < iterations) {\r\n // var rnd = BMMath.random();\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n\r\n iWiggle += 1;\r\n } // var rnd2 = BMMath.random();\r\n\r\n\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n\r\n if (lenWiggle > 1) {\r\n for (j = 0; j < lenWiggle; j += 1) {\r\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;\r\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n }.bind(this);\r\n\r\n if (thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if (thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if (thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type, duration) {\r\n return loopIn(type, duration, true);\r\n }\r\n\r\n function loopOutDuration(type, duration) {\r\n return loopOut(type, duration, true);\r\n }\r\n\r\n if (this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if (this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1, elem2) {\r\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n return [yaw, pitch, 0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if (val1 === undefined) {\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n\r\n var mult = fn(t);\r\n\r\n if ($bm_isInstanceOfArray(val1)) {\r\n var iKey;\r\n var lenKey = val1.length;\r\n var arr = createTypedArray('float32', lenKey);\r\n\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return (val2 - val1) * mult + val1;\r\n }\r\n\r\n function nearestKey(time) {\r\n var iKey;\r\n var lenKey = data.k.length;\r\n var index;\r\n var keyTime;\r\n\r\n if (!data.k.length || typeof data.k[0] === 'number') {\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n if (time === data.k[iKey].t) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n break;\r\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n index = iKey + 2;\r\n keyTime = data.k[iKey + 1].t;\r\n } else {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (index === -1) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n }\r\n }\r\n\r\n var obKey = {};\r\n obKey.index = index;\r\n obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n return obKey;\r\n }\r\n\r\n function key(ind) {\r\n var obKey;\r\n var iKey;\r\n var lenKey;\r\n\r\n if (!data.k.length || typeof data.k[0] === 'number') {\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n\r\n ind -= 1;\r\n obKey = {\r\n time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n value: []\r\n };\r\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n lenKey = arr.length;\r\n\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n obKey[iKey] = arr[iKey];\r\n obKey.value[iKey] = arr[iKey];\r\n }\r\n\r\n return obKey;\r\n }\r\n\r\n function framesToTime(fr, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n\r\n return fr / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed) {\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substring(init);\r\n }\r\n\r\n return value.substring(init, end);\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substr(init);\r\n }\r\n\r\n return value.substr(init, end);\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function posterizeTime(framesPerSecond) {\r\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n value = valueAtTime(time);\r\n }\r\n\r\n var time;\r\n var velocity;\r\n var value;\r\n var text;\r\n var textIndex;\r\n var textTotal;\r\n var selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random() * 1000000);\r\n var globalData = elem.globalData;\r\n\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n\r\n if (this.propType === 'textSelector') {\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n\r\n if (transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\r\n }\r\n }\r\n\r\n if (elemType === 4 && !content) {\r\n content = thisLayer('ADBE Root Vectors Group');\r\n }\r\n\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n\r\n if (_needsRandom) {\r\n seedRandom(randSeed + time);\r\n }\r\n\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n // Changed this to a ternary operation because Rollup failed compiling it correctly\r\n\r\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\r\n return scoped_bm_rt;\r\n } // Bundlers will see these as dead code and unless we reference them\r\n\r\n\r\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];\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\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];\r\n return ob;\r\n }();\r\n\r\n var expressionHelpers = function () {\r\n function searchExpressions(elem, data, prop) {\r\n if (data.x) {\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n\r\n if (frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n\r\n return this._cachingAtTime.value;\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n\r\n if (v1.length) {\r\n var i;\r\n\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if (this.vel !== undefined) {\r\n return this.vel;\r\n }\r\n\r\n var delta = -0.001; // frameNum += this.elem.data.st;\r\n\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n\r\n for (i = 0; i < v1.length; i += 1) {\r\n // removing frameRate\r\n // if needed, don't add it here\r\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i]) / delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1) / delta;\r\n }\r\n\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup) {\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n return {\r\n searchExpressions: searchExpressions,\r\n getSpeedAtTime: getSpeedAtTime,\r\n getVelocityAtTime: getVelocityAtTime,\r\n getValueAtTime: getValueAtTime,\r\n getStaticValueAtTime: getStaticValueAtTime,\r\n setGroupProperty: setGroupProperty\r\n };\r\n }();\r\n\r\n function addPropertyDecorator() {\r\n function loopOut(type, duration, durationFlag) {\r\n if (!this.k || !this.keyframes) {\r\n return this.pv;\r\n }\r\n\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n }\r\n\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n\r\n var i;\r\n var len;\r\n var ret;\r\n\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n\r\n if (iterations % 2 !== 0) {\r\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return (endV - initV) * repeats + current;\r\n } else if (type === 'continue') {\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\r\n }\r\n\r\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n\r\n function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n }\r\n\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n\r\n var i;\r\n var len;\r\n var ret;\r\n\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n\r\n if (iterations % 2 === 0) {\r\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return current - (endV - initV) * repeats;\r\n } else if (type === 'continue') {\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\r\n }\r\n\r\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0;\r\n var j = 0;\r\n var value;\r\n\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n\r\n var sampleValue;\r\n\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n if (!this._transformCachingAtTime) {\r\n this._transformCachingAtTime = {\r\n v: new Matrix()\r\n };\r\n } /// /\r\n\r\n\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\r\n }\r\n\r\n if (this.appliedTransformations < 2) {\r\n var scale = this.s.getValueAtTime(time);\r\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\r\n }\r\n\r\n if (this.sk && this.appliedTransformations < 3) {\r\n var skew = this.sk.getValueAtTime(time);\r\n var skewAxis = this.sa.getValueAtTime(time);\r\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n }\r\n\r\n if (this.r && this.appliedTransformations < 4) {\r\n var rotation = this.r.getValueAtTime(time);\r\n matrix.rotate(-rotation * this.r.mult);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n var rotationZ = this.rz.getValueAtTime(time);\r\n var rotationY = this.ry.getValueAtTime(time);\r\n var rotationX = this.rx.getValueAtTime(time);\r\n var orientation = this.or.getValueAtTime(time);\r\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);\r\n }\r\n\r\n if (this.data.p && this.data.p.s) {\r\n var positionX = this.px.getValueAtTime(time);\r\n var positionY = this.py.getValueAtTime(time);\r\n\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\r\n } else {\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n }\r\n } else {\r\n var position = this.p.getValueAtTime(time);\r\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\r\n }\r\n\r\n return matrix; /// /\r\n }\r\n\r\n function getTransformStaticValueAtTime() {\r\n return this.v.clone(new Matrix());\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n\r\n if (prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n\r\n if (prop.kf) {\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n\r\n if (type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value\r\n };\r\n expressionHelpers.searchExpressions(elem, data, prop);\r\n\r\n if (prop.k) {\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shapePool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame\r\n };\r\n }\r\n\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n\r\n if (frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions() {}\r\n\r\n ShapeExpressions.prototype = {\r\n vertices: function vertices(prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n\r\n var shapePath = this.v;\r\n\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n\r\n var i;\r\n var len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n }\r\n\r\n return arr;\r\n },\r\n points: function points(time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function inTangents(time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function outTangents(time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function isClosed() {\r\n return this.v.c;\r\n },\r\n pointOnPath: function pointOnPath(perc, time) {\r\n var shapePath = this.v;\r\n\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n\r\n if (!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0;\r\n var len = lengths.length;\r\n var accumulatedLength = 0;\r\n var pt;\r\n\r\n while (i < len) {\r\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (!pt) {\r\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n }\r\n\r\n return pt;\r\n },\r\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\r\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n if (perc == 1) {\r\n // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) {\r\n // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\r\n\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\r\n\r\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function tangentOnPath(perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function normalOnPath(perc, time) {\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n\r\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n\r\n if (type === 3) {\r\n expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n } else if (type === 4) {\r\n expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n }\r\n\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n }\r\n\r\n function initialize$1() {\r\n addPropertyDecorator();\r\n }\r\n\r\n function addDecorator() {\r\n function searchExpressions() {\r\n if (this.data.d.x) {\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n\r\n if (currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n\r\n return currentValue;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n }\r\n\r\n function initialize() {\r\n addDecorator();\r\n }\r\n\r\n function SVGComposableEffect() {}\r\n\r\n SVGComposableEffect.prototype = {\r\n createMergeNode: function createMergeNode(resultId, ins) {\r\n var feMerge = createNS('feMerge');\r\n feMerge.setAttribute('result', resultId);\r\n var feMergeNode;\r\n var i;\r\n\r\n for (i = 0; i < ins.length; i += 1) {\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', ins[i]);\r\n feMerge.appendChild(feMergeNode);\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n\r\n return feMerge;\r\n }\r\n };\r\n\r\n function SVGTintFilter(filter, filterManager, elem, id, source) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\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');\r\n feColorMatrix.setAttribute('result', id + '_tint_1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', id + '_tint_2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\r\n filter.appendChild(feMerge);\r\n }\r\n\r\n extendPrototype([SVGComposableEffect], SVGTintFilter);\r\n\r\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v / 100;\r\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 ' + opacity + ' 0');\r\n }\r\n };\r\n\r\n function SVGFillFilter(filter, filterManager, elem, id) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', id);\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n }\r\n\r\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\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');\r\n }\r\n };\r\n\r\n function SVGStrokeEffect(fil, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n }\r\n\r\n SVGStrokeEffect.prototype.initialize = function () {\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path;\r\n var groupPath;\r\n var i;\r\n var len;\r\n\r\n if (this.filterManager.effectElements[1].p.v === 1) {\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n\r\n groupPath = createNS('g');\r\n groupPath.setAttribute('fill', 'none');\r\n groupPath.setAttribute('stroke-linecap', 'round');\r\n groupPath.setAttribute('stroke-dashoffset', 1);\r\n\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({\r\n p: path,\r\n m: i\r\n });\r\n }\r\n\r\n if (this.filterManager.effectElements[10].p.v === 3) {\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id', id);\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\r\n\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke', '#fff');\r\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (this.filterManager.effectElements[10].p.v === 2) {\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke', '#fff');\r\n }\r\n\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n };\r\n\r\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.paths[i].m !== -1) {\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\r\n\r\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) {\r\n var dasharrayValue;\r\n\r\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n var lineLength = l * (e - s);\r\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n var units = Math.floor(lineLength / segment);\r\n var j;\r\n\r\n for (j = 0; j < units; j += 1) {\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n }\r\n\r\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n }\r\n\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\r\n }\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n }\r\n\r\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n }\r\n }\r\n };\r\n\r\n function SVGTritoneFilter(filter, filterManager, elem, id) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\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');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n feComponentTransfer.setAttribute('result', id);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n filter.appendChild(feComponentTransfer);\r\n }\r\n\r\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n }\r\n };\r\n\r\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\r\n\r\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) {\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n } // Green\r\n\r\n\r\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) {\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n } // Blue\r\n\r\n\r\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) {\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n } // Alpha\r\n\r\n\r\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) {\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n } // RGB\r\n\r\n\r\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n }\r\n\r\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) {\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n feComponentTransfer.setAttribute('result', id);\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n }\r\n\r\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n };\r\n\r\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null, {\r\n length: segments\r\n });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n\r\n if (perc <= min) {\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if (perc >= max) {\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\r\n }\r\n\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n\r\n return table.join(' ');\r\n };\r\n\r\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n\r\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)) {\r\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues', val);\r\n this.feFuncGComposed.setAttribute('tableValues', val);\r\n this.feFuncBComposed.setAttribute('tableValues', val);\r\n }\r\n\r\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)) {\r\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues', val);\r\n }\r\n\r\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)) {\r\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues', val);\r\n }\r\n\r\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)) {\r\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues', val);\r\n }\r\n\r\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)) {\r\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues', val);\r\n }\r\n }\r\n };\r\n\r\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\r\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n var filterSize = filterManager.data.fs || globalFilterSize;\r\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\r\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\r\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\r\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', id + '_drop_shadow_1');\r\n feOffset.setAttribute('result', id + '_drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color', '#00ff00');\r\n feFlood.setAttribute('flood-opacity', '1');\r\n feFlood.setAttribute('result', id + '_drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', id + '_drop_shadow_3');\r\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', id + '_drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\r\n filter.appendChild(feMerge); //\r\n }\r\n\r\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\r\n\r\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n }\r\n };\r\n\r\n var _svgMatteSymbols = [];\r\n\r\n function SVGMatte3Effect(filterElem, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n }\r\n\r\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n\r\n if (!parentNode) {\r\n return;\r\n }\r\n\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n var nextChild;\r\n\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n\r\n if (nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n };\r\n\r\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n if (!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n\r\n _svgMatteSymbols.push(mask);\r\n\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n\r\n elem.setMatte(mask.layerId);\r\n };\r\n\r\n SVGMatte3Effect.prototype.initialize = function () {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0;\r\n var len = elements.length;\r\n\r\n while (i < len) {\r\n if (elements[i] && elements[i].data.ind === ind) {\r\n this.setElementAsMask(this.elem, elements[i]);\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n this.initialized = true;\r\n };\r\n\r\n SVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n };\r\n\r\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\r\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n filter.setAttribute('x', '-100%');\r\n filter.setAttribute('y', '-100%');\r\n filter.setAttribute('width', '300%');\r\n filter.setAttribute('height', '300%');\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('result', id);\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n }\r\n\r\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n // Empirical value, matching AE's blur appearance.\r\n var kBlurrinessToSigma = 0.3;\r\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n\r\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n };\r\n\r\n registerRenderer('canvas', CanvasRenderer);\r\n registerRenderer('html', HybridRenderer);\r\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\r\n\r\n ShapeModifiers.registerModifier('tm', TrimModifier);\r\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\r\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\r\n\r\n setExpressionsPlugin(Expressions);\r\n setExpressionInterfaces(getInterface);\r\n initialize$1();\r\n initialize(); // Registering svg effects\r\n\r\n registerEffect(20, SVGTintFilter, true);\r\n registerEffect(21, SVGFillFilter, true);\r\n registerEffect(22, SVGStrokeEffect, false);\r\n registerEffect(23, SVGTritoneFilter, true);\r\n registerEffect(24, SVGProLevelsFilter, true);\r\n registerEffect(25, SVGDropShadowEffect, true);\r\n registerEffect(28, SVGMatte3Effect, false);\r\n registerEffect(29, SVGGaussianBlurEffect, true);\r\n\r\n return lottie;\r\n\r\n}));\r\n","/**\n * Copyright 2021 Design Barn Inc.\n */\n\nimport { css } from \"lit\";\n\nexport default css`\n * {\n box-sizing: border-box;\n }\n\n :host {\n --lottie-player-toolbar-height: 35px;\n --lottie-player-toolbar-background-color: transparent;\n --lottie-player-toolbar-icon-color: #999;\n --lottie-player-toolbar-icon-hover-color: #222;\n --lottie-player-toolbar-icon-active-color: #555;\n --lottie-player-seeker-track-color: #ccc;\n --lottie-player-seeker-thumb-color: rgba(0, 107, 120, 0.8);\n --lottie-player-seeker-display: block;\n\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .main {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n }\n\n .animation {\n width: 100%;\n height: 100%;\n display: flex;\n }\n .animation.controls {\n height: calc(100% - 35px);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n justify-items: center;\n background-color: var(--lottie-player-toolbar-background-color);\n margin: 0 5px;\n height: 35px;\n }\n\n .toolbar button {\n cursor: pointer;\n fill: var(--lottie-player-toolbar-icon-color);\n display: flex;\n background: none;\n border: 0;\n padding: 0;\n outline: none;\n height: 100%;\n }\n\n .toolbar button:hover {\n fill: var(--lottie-player-toolbar-icon-hover-color);\n }\n\n .toolbar button.active {\n fill: var(--lottie-player-toolbar-icon-active-color);\n }\n\n .toolbar button.active:hover {\n fill: var(--lottie-player-toolbar-icon-hover-color);\n }\n\n .toolbar button:focus {\n outline: 1px dotted var(--lottie-player-toolbar-icon-active-color);\n }\n\n .toolbar button svg {\n }\n\n .toolbar button.disabled svg {\n display: none;\n }\n\n .seeker {\n -webkit-appearance: none;\n width: 95%;\n outline: none;\n background-color: var(--lottie-player-toolbar-background-color);\n display: var(--lottie-player-seeker-display);\n }\n\n .seeker::-webkit-slider-runnable-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-webkit-slider-thumb {\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n -webkit-appearance: none;\n margin-top: -5px;\n }\n .seeker:focus::-webkit-slider-runnable-track {\n background: #999;\n }\n .seeker::-moz-range-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-moz-range-thumb {\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n }\n .seeker::-ms-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n }\n .seeker::-ms-fill-lower {\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-ms-fill-upper {\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-ms-thumb {\n border: 0;\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n }\n .seeker:focus::-ms-fill-lower {\n background: var(--lottie-player-seeker-track-color);\n }\n .seeker:focus::-ms-fill-upper {\n background: var(--lottie-player-seeker-track-color);\n }\n\n .error {\n display: flex;\n justify-content: center;\n height: 100%;\n align-items: center;\n }\n`;\n","// eslint-disable-next-line header/header\nimport { LitElement, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { TemplateResult } from \"lit/html.js\";\nimport * as lottie from \"lottie-web/build/player/lottie\";\n\n// import ResizeObserver from \"resize-observer-polyfill\";\nimport styles from \"./lottie-player.styles\";\n\n// Define valid player states\nexport enum PlayerState {\n Destroyed = \"destroyed\",\n Error = \"error\",\n Frozen = \"frozen\",\n Loading = \"loading\",\n Paused = \"paused\",\n Playing = \"playing\",\n Stopped = \"stopped\",\n}\n\n// Define play modes\nexport enum PlayMode {\n Bounce = \"bounce\",\n Normal = \"normal\",\n}\n\n// Define player events\nexport enum PlayerEvents {\n Complete = \"complete\",\n Destroyed = \"destroyed\",\n Error = \"error\",\n Frame = \"frame\",\n Freeze = \"freeze\",\n Load = \"load\",\n Loop = \"loop\",\n Pause = \"pause\",\n Play = \"play\",\n Ready = \"ready\",\n Rendered = \"rendered\",\n Stop = \"stop\",\n}\n\n/**\n * Parse a resource into a JSON object or a URL string\n */\nexport function parseSrc(src: string | object): string | object {\n if (typeof src === \"object\") {\n return src;\n }\n\n try {\n return JSON.parse(src);\n } catch (e) {\n // Try construct an absolute URL from the src URL\n const srcUrl: URL = new URL(src, window.location.href);\n\n return srcUrl.toString();\n }\n}\n\nfunction isLottie(json: Record): boolean {\n const mandatory: string[] = [\"v\", \"ip\", \"op\", \"layers\", \"fr\", \"w\", \"h\"];\n\n return mandatory.every((field: string) =>\n Object.prototype.hasOwnProperty.call(json, field)\n );\n}\n\nasync function fromURL(url: string): Promise> {\n if (typeof url !== \"string\") {\n throw new Error(`The url value must be a string`);\n }\n\n let json;\n\n try {\n // Try construct an absolute URL from the src URL\n const srcUrl: URL = new URL(url);\n\n // Fetch the JSON file from the URL\n const result: any = await fetch(srcUrl.toString());\n\n json = await result.json();\n } catch (err) {\n throw new Error(\n `An error occurred while trying to load the Lottie file from URL`\n );\n }\n\n return json;\n}\n/**\n * LottiePlayer web component class\n *\n * @export\n * @class LottiePlayer\n * @extends {LitElement}\n */\n@customElement(\"lottie-player\")\nexport class LottiePlayer extends LitElement {\n /**\n * Autoplay animation on load.\n */\n @property({ type: Boolean })\n public autoplay: boolean = false;\n\n /**\n * Background color.\n */\n @property({ type: String, reflect: true })\n public background?: string = \"transparent\";\n\n /**\n * Show controls.\n */\n @property({ type: Boolean })\n public controls: boolean = false;\n\n /**\n * Number of times to loop animation.\n */\n @property({ type: Number })\n public count?: number;\n\n /**\n * Player state.\n */\n @property({ type: String })\n public currentState: PlayerState = PlayerState.Loading;\n\n /**\n * Animation description for screen readers.\n */\n @property({ type: String })\n public description: string = \"Lottie animation\";\n\n /**\n * Direction of animation.\n */\n @property({ type: Number })\n public direction: number = 1;\n\n /**\n * Disable checking if the Lottie is valid before loading\n */\n @property({ type: Boolean })\n public disableCheck?: boolean = false;\n\n /**\n * Whether to play on mouse hover\n */\n @property({ type: Boolean })\n public hover: boolean = false;\n\n /**\n * Intermission\n */\n @property()\n public intermission: number = 1;\n\n /**\n * Whether to loop animation.\n */\n @property({ type: Boolean, reflect: true })\n public loop: boolean = false;\n\n /**\n * Play mode.\n */\n @property()\n public mode: PlayMode = PlayMode.Normal;\n\n /**\n * Aspect ratio to pass to lottie-web.\n */\n @property({ type: String })\n public preserveAspectRatio: string = \"xMidYMid meet\";\n\n /**\n * Renderer to use.\n */\n @property({ type: String })\n public renderer: \"svg\" = \"svg\";\n\n /**\n * seeker\n */\n\n @property()\n public seeker: any;\n\n /**\n * Animation speed.\n */\n @property({ type: Number })\n public speed: number = 1;\n\n /**\n * Bodymovin JSON data or URL to JSON.\n */\n @property({ type: String })\n public src?: string;\n\n /**\n * Enable web workers\n */\n @property({ type: Boolean })\n public webworkers?: boolean;\n\n /**\n * Animation container.\n */\n @query(\".animation\")\n protected container!: HTMLElement;\n\n private _io: IntersectionObserver | undefined = undefined;\n\n // private _ro: ResizeObserver | undefined = undefined;\n private _lottie?: any;\n\n private _prevState?: any;\n\n private _counter: number = 1;\n\n /**\n * Configure and initialize lottie-web player instance.\n */\n public async load(src: string | object) {\n if (!this.shadowRoot) {\n return;\n }\n\n const options: any = {\n container: this.container,\n loop: false,\n autoplay: false,\n renderer: this.renderer,\n rendererSettings: {\n preserveAspectRatio: this.preserveAspectRatio,\n clearCanvas: false,\n progressiveLoad: true,\n hideOnTransparent: true,\n },\n };\n\n // Load the resource information\n try {\n const srcParsed = parseSrc(src);\n let jsonData = {};\n let srcAttrib = typeof srcParsed === \"string\" ? \"path\" : \"animationData\";\n\n // Clear previous animation, if any\n if (this._lottie) {\n this._lottie.destroy();\n }\n\n if (this.webworkers) {\n lottie.useWebWorker(true);\n }\n\n // Initialize lottie player and load animation\n this._lottie = lottie.loadAnimation({\n ...options,\n\n [srcAttrib]: srcParsed,\n });\n\n // Attach the event listeners before we check the requested json file for errors\n this._attachEventListeners();\n\n if (!this.disableCheck) {\n // Fetch resource if src is a remote URL\n if (srcAttrib === \"path\") {\n jsonData = await fromURL(srcParsed as string);\n srcAttrib = \"animationData\";\n } else {\n jsonData = srcParsed;\n }\n\n if (!isLottie(jsonData)) {\n this.currentState = PlayerState.Error;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n }\n }\n } catch (err) {\n this.currentState = PlayerState.Error;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n }\n }\n\n /**\n * Returns the lottie-web instance used in the component.\n */\n public getLottie(): any {\n return this._lottie;\n }\n\n /**\n * Start playing animation.\n */\n public play() {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.play();\n this.currentState = PlayerState.Playing;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Play));\n }\n\n /**\n * Pause animation play.\n */\n public pause(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.pause();\n this.currentState = PlayerState.Paused;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Pause));\n }\n\n /**\n * Stops animation play.\n */\n public stop(): void {\n if (!this._lottie) {\n return;\n }\n\n this._counter = 1;\n this._lottie.stop();\n this.currentState = PlayerState.Stopped;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Stop));\n }\n\n /**\n * Destroy animation and lottie-player element.\n */\n public destroy(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.destroy();\n this._lottie = null;\n this.currentState = PlayerState.Destroyed;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Destroyed));\n this.remove();\n }\n\n /**\n * Seek to a given frame.\n */\n public seek(value: number | string): void {\n if (!this._lottie) {\n return;\n }\n\n // Extract frame number from either number or percentage value\n const matches = /^(\\d+)(%?)$/.exec(value.toString());\n\n if (!matches) {\n return;\n }\n\n // Calculate and set the frame number\n const frame =\n matches[2] === \"%\"\n ? (this._lottie.totalFrames * Number(matches[1])) / 100\n : Number(matches[1]);\n\n // Set seeker to new frame number\n this.seeker = frame;\n\n // Send lottie player to the new frame\n if (this.currentState === PlayerState.Playing) {\n this._lottie.goToAndPlay(frame, true);\n } else {\n this._lottie.goToAndStop(frame, true);\n this._lottie.pause();\n }\n }\n\n /**\n * Snapshot the current frame as SVG.\n *\n * If 'download' argument is boolean true, then a download is triggered in browser.\n */\n public snapshot(download: boolean = true): string | void {\n if (!this.shadowRoot) return;\n\n // Get SVG element and serialize markup\n const svgElement = this.shadowRoot.querySelector(\".animation svg\") as Node;\n const data = new XMLSerializer().serializeToString(svgElement);\n\n // Trigger file download\n if (download) {\n const element = document.createElement(\"a\");\n\n element.href = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(\n data\n )}`;\n element.download = `download_${this.seeker}.svg`;\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n return data;\n }\n\n /**\n * Sets animation play speed.\n *\n * @param value Playback speed.\n */\n public setSpeed(value = 1): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.setSpeed(value);\n }\n\n /**\n * Animation play direction.\n *\n * @param value Direction values.\n */\n public setDirection(value: number): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.setDirection(value);\n }\n\n /**\n * Sets the looping of the animation.\n *\n * @param value Whether to enable looping. Boolean true enables looping.\n */\n public setLooping(value: boolean): void {\n if (this._lottie) {\n this.loop = value;\n this._lottie.loop = value;\n }\n }\n\n /**\n * Toggle playing state.\n */\n public togglePlay(): void {\n return this.currentState === PlayerState.Playing\n ? this.pause()\n : this.play();\n }\n\n /**\n * Toggles animation looping.\n */\n public toggleLooping(): void {\n this.setLooping(!this.loop);\n }\n\n /**\n * Resize animation.\n */\n public resize() {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.resize();\n }\n\n /**\n * Returns the styles for the component.\n */\n static get styles() {\n return styles;\n }\n\n /**\n * Cleanup on component destroy.\n */\n public disconnectedCallback(): void {\n // Don't clean up if node is still connected to the context (i.e. this is a move).\n if (this.isConnected) return;\n\n // Remove intersection observer for detecting component being out-of-view.\n if (this._io) {\n this._io.disconnect();\n this._io = undefined;\n }\n\n // Remove resize observer for detecting resize/reflow events affecting element.\n // if (this._ro) {\n // this._ro.disconnect();\n // this._ro = undefined;\n // }\n\n // Remove the attached Visibility API's change event listener.\n document.removeEventListener(\"visibilitychange\", () =>\n this._onVisibilityChange()\n );\n\n // Destroy the animation instance and element\n this.destroy();\n }\n\n public render(): TemplateResult | void {\n const className: string = this.controls ? \"main controls\" : \"main\";\n const animationClass: string = this.controls\n ? \"animation controls\"\n : \"animation\";\n\n return html` \n \n ${this.currentState === PlayerState.Error\n ? html`
⚠️
`\n : undefined}\n \n ${this.controls ? this.renderControls() : undefined}\n `;\n }\n\n /**\n * Initialize everything on component first render.\n */\n protected firstUpdated(): void {\n // Add intersection observer for detecting component being out-of-view.\n if (\"IntersectionObserver\" in window) {\n this._io = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n if (entries[0].isIntersecting) {\n if (this.currentState === PlayerState.Frozen) {\n this.play();\n }\n } else if (this.currentState === PlayerState.Playing) {\n this.freeze();\n }\n }\n );\n\n this._io.observe(this.container);\n }\n\n // Add listener for Visibility API's change event.\n if (typeof document.hidden !== \"undefined\") {\n document.addEventListener(\"visibilitychange\", () =>\n this._onVisibilityChange()\n );\n }\n\n // Setup lottie player\n if (this.src) {\n this.load(this.src);\n }\n this.dispatchEvent(new CustomEvent(PlayerEvents.Rendered));\n }\n\n protected renderControls(): TemplateResult {\n const isPlaying: boolean = this.currentState === PlayerState.Playing;\n const isPaused: boolean = this.currentState === PlayerState.Paused;\n const isStopped: boolean = this.currentState === PlayerState.Stopped;\n\n return html`\n \n \n ${isPlaying\n ? html`\n \n `\n : html`\n \n `}\n \n \n \n \n \n \n {\n this._prevState = this.currentState;\n this.freeze();\n }}\n @mouseup=${() => {\n this._prevState === PlayerState.Playing && this.play();\n }}\n aria-valuemin=\"1\"\n aria-valuemax=\"100\"\n role=\"slider\"\n aria-valuenow=${this.seeker}\n tabindex=\"0\"\n aria-label=\"lottie-seek-input\"\n />\n \n \n \n \n \n \n `;\n }\n\n /**\n * Handle visibility change events.\n */\n private _onVisibilityChange(): void {\n if (document.hidden === true && this.currentState === PlayerState.Playing) {\n this.freeze();\n } else if (this.currentState === PlayerState.Frozen) {\n this.play();\n }\n }\n\n /**\n * Handles click and drag actions on the progress track.\n */\n private _handleSeekChange(e: any): void {\n if (!this._lottie || isNaN(e.target.value)) {\n return;\n }\n\n const frame: number = (e.target.value / 100) * this._lottie.totalFrames;\n\n this.seek(frame);\n }\n\n private _attachEventListeners(): void {\n this._lottie.addEventListener(\"enterFrame\", () => {\n this.seeker =\n (this._lottie.currentFrame / this._lottie.totalFrames) * 100;\n\n this.dispatchEvent(\n new CustomEvent(PlayerEvents.Frame, {\n detail: {\n frame: this._lottie.currentFrame,\n seeker: this.seeker,\n },\n })\n );\n });\n\n // Handle animation play complete\n this._lottie.addEventListener(\"complete\", () => {\n if (this.currentState !== PlayerState.Playing) {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n return;\n }\n\n if (!this.loop || (this.count && this._counter >= this.count)) {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n if (this.mode === PlayMode.Bounce) {\n if (this._lottie.currentFrame === 0) {\n return;\n }\n } else {\n return;\n }\n }\n\n if (this.mode === PlayMode.Bounce) {\n if (this.count) {\n this._counter += 0.5;\n }\n\n setTimeout(() => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n if (this.currentState === PlayerState.Playing) {\n this._lottie.setDirection(this._lottie.playDirection * -1);\n this._lottie.play();\n }\n }, this.intermission);\n } else {\n if (this.count) {\n this._counter += 1;\n }\n\n window.setTimeout(() => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n if (this.currentState === PlayerState.Playing) {\n if (this.direction === -1) {\n // Prevents flickering\n this.seek(\"99%\");\n this.play();\n } else {\n this._lottie.stop();\n this._lottie.play();\n }\n }\n }, this.intermission);\n }\n });\n\n // Handle lottie-web ready event\n this._lottie.addEventListener(\"DOMLoaded\", () => {\n // Set initial playback speed and direction\n this.setSpeed(this.speed);\n this.setDirection(this.direction);\n\n // Start playing if autoplay is enabled\n if (this.autoplay) {\n if (this.direction === -1) this.seek(\"100%\");\n this.play();\n }\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Ready));\n });\n\n // Handle animation data load complete\n this._lottie.addEventListener(\"data_ready\", () => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Load));\n });\n\n // Set error state when animation load fail event triggers\n this._lottie.addEventListener(\"data_failed\", () => {\n this.currentState = PlayerState.Error;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n });\n\n // Set handlers to auto play animation on hover if enabled\n this.container.addEventListener(\"mouseenter\", () => {\n if (this.hover && this.currentState !== PlayerState.Playing) {\n this.play();\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n if (this.hover && this.currentState === PlayerState.Playing) {\n this.stop();\n }\n });\n }\n\n /**\n * Freeze animation play.\n * This internal state pauses animation and is used to differentiate between\n * user requested pauses and component instigated pauses.\n */\n private freeze(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.pause();\n this.currentState = PlayerState.Frozen;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Freeze));\n }\n}\n"],"names":["global","window","supportsAdoptingStyleSheets","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","constructionToken","Symbol","cssTagCache","WeakMap","CSSResult","constructor","cssText","strings","safeToken","this","_$cssResult$","Error","_strings","styleSheet","_styleSheet","cacheable","undefined","length","get","replaceSync","set","toString","unsafeCSS","value","String","css","values","reduce","acc","v","idx","adoptStyles","renderRoot","styles","adoptedStyleSheets","map","s","forEach","style","document","createElement","nonce","litNonce","setAttribute","textContent","appendChild","getCompatibleStyle","sheet","rule","cssRules","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","defaultConverter","toAttribute","type","Boolean","Object","Array","JSON","stringify","fromAttribute","fromValue","Number","parse","e","notEqual","old","defaultPropertyDeclaration","attribute","converter","reflect","hasChanged","ReactiveElement","HTMLElement","super","_$Ei","Map","isUpdatePending","hasUpdated","__reflectingProperty","_initialize","static","initializer","finalize","_a","_initializers","push","observedAttributes","attributes","elementProperties","p","attr","__attributeNameForProperty","__attributeToPropertyMap","name","options","state","noAccessor","hasOwnProperty","key","descriptor","getPropertyDescriptor","defineProperty","oldValue","requestUpdate","configurable","enumerable","finalized","superCtor","getPrototypeOf","props","properties","propKeys","getOwnPropertyNames","getOwnPropertySymbols","createProperty","elementStyles","finalizeStyles","isArray","Set","flat","Infinity","reverse","unshift","toLowerCase","__updatePromise","Promise","res","enableUpdating","_$changedProperties","__saveInstanceProperties","i","addController","controller","__controllers","isConnected","_b","hostConnected","call","t","removeController","splice","indexOf","_v","__instanceProperties","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","connectedCallback","c","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","_old","_$attributeToProperty","__propertyToAttribute","attrValue","removeAttribute","ctor","propName","getPropertyOptions","shouldRequestUpdate","has","__reflectingProperties","__enqueueUpdate","async","reject","result","scheduleUpdate","performUpdate","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","k","mode","o","_d","reactiveElementVersions","policy","createPolicy","createHTML","marker","Math","random","slice","markerMatch","nodeMarker","d","createMarker","arguments","createComment","isPrimitive","isIterable","iterator","textEndRegex","commentEndRegex","comment2EndRegex","tagEndRegex","RegExp","singleQuoteAttrEndRegex","doubleQuoteAttrEndRegex","rawTextElement","tag","_$litType$","html","svg","noChange","for","nothing","templateCache","walker","createTreeWalker","getTemplateHtml","rawTextEndRegex","l","attrNames","regex","attrName","match","attrNameEndIndex","lastIndex","exec","test","end","startsWith","htmlResult","Template","node","parts","nodeIndex","attrNameIndex","partCount","el","currentNode","content","svgElement","firstChild","remove","append","childNodes","nextNode","nodeType","hasAttributes","attrsToRemove","getAttributeNames","endsWith","realName","statics","getAttribute","split","m","index","PropertyPart","BooleanAttributePart","EventPart","AttributePart","tagName","data","_options","innerHTML","resolveDirective","part","attributeIndex","parent","currentDirective","__directives","__directive","nextDirectiveConstructor","_$litDirective$","_$AO","n","r","_$initialize","_c","h","_$Co","_$resolve","TemplateInstance","template","_parts","_$disconnectableChildren","_$template","_$parent","parentNode","_$isConnected","_clone","fragment","creationScope","importNode","partIndex","templatePart","ChildPart","nextSibling","ElementPart","_update","_$setValue","startNode","endNode","_$committedValue","_$startNode","_$endNode","__isConnected","_$AU","_$clear","_commitText","_commitTemplateResult","_commitNode","_commitIterable","_insert","ref","insertBefore","createTextNode","_$getTemplate","_$AD","instance","itemPart","itemParts","item","from","start","_$notifyConnectionChanged","setConnected","element","fill","noCommit","directiveParent","valueIndex","change","_h","_commitValue","newListener","oldListener","shouldRemoveListener","capture","once","passive","shouldAddListener","removeEventListener","addEventListener","handleEvent","event","host","L","_boundAttributeSuffix","_marker","_markerMatch","_HTML_RESULT","_getTemplateHtml","_TemplateInstance","_isIterable","_resolveDirective","_ChildPart","_AttributePart","_BooleanAttributePart","_EventPart","_PropertyPart","_ElementPart","litHtmlPolyfillSupport","litHtmlVersions","Z","container","partOwnerNode","renderBefore","_$litPart$","UpdatingElement","LitElement","renderOptions","__childPart","render","_$litElement$","litElementHydrateSupport","globalThis","litElementPolyfillSupport","litElementVersions","isServer","customElement","classOrDescriptor","clazz","customElements","define","kind","elements","finisher","standardProperty","placement","originalKey","property","protoOrDescriptor","proto","standardPrototypeMethod","decorateProperty","_ref","info","eventOptions","assign","selector","cache","querySelector","queryAll","_name","querySelectorAll","queryAsync","slotAssignedElements","HTMLSlotElement","assignedElements","slot","opts","assignedNodes","filter","Node","ELEMENT_NODE","queryAssignedElements","slotSelector","slotEl","matches","queryAssignedNodes","slotOrOptions","flatten","assignedNodesOptions","factory","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","extendPrototype","sources","destination","sourcePrototype","len","getDescriptor","object","prop","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","src","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","Float32Array","Int16Array","Uint8ClampedArray","createSizedArray","apply","_typeof$6","obj","subframeEnabled","isSafari","userAgent","_shouldRoundValues","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","ProjectInterface$1","propertyNames","abs","val","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","round","styleDiv","position","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","idPrefix$1","_count","HSVtoRGB","g","b","q","f","RGBtoHSV","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","getSubframeEnabled","setExpressionsPlugin","expressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","expressionsInterfaces","getExpressionInterfaces","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","processes","workerProxy","onmessage","postMessage","path","workerFn","_workerSelf","workerInstance","fn","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","j","layerData","completed","hasMask","masksProperties","jLen","maskProps","pt","convertPathsToAbsoluteValues","kLen","ty","findCompLayers","refId","completeShapes","shapes","completeText","id","comp","findComp","__used","ks","it","minimum","animVersionString","animVersion","minimumVersion","checkText","iterateLayers","textLayer","documentData","animationData","checkVersion","assets","checkChars","chars","charData","ip","op","st","sr","a","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","callback","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","formatResponse","open","join","error","send","completeData","payload","animation","process","onComplete","onError","_counterId","loadAnimation","setupWorker","createProcess","location","origin","pathname","processId","loadData","completeAnimation","anim","proxyImage","canvas","createTag","width","height","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","bind","getAssetsPath","footageData","ob","_footageLoaded","ImagePreloaderFactory","createFootageData","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","destroy","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","parsePayloadLines","line","lines","keys","keysCount","trim","_markers","markers","markerData","time","tm","duration","dr","cm","_","__","ProjectInterface","registerComposition","compositions","nm","prepareFrame","xt","currentFrame","compInterface","_thisProjectFunction","renderers","registerRenderer","getRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","loop","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","ImagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","wrapper","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","parseInt","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","substr","fileName","trigger","setData","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","markerParser","updaFrameModifier","waitForFontsLoaded","triggerConfigError","setTimeout","rendererType","initItems","gotoFrame","resize","_height","updateContainerSize","_width","setSubframe","renderFrame","triggerRenderFrameError","togglePause","stop","setCurrentRawFrameValue","getMarkerData","markerName","goToAndStop","isFrame","numValue","isNaN","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","init","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","getPath","getAssetData","hide","show","getDuration","updateDocumentData","getElementByPath","BMCompleteLoopEvent","BMCompleteEvent","animationManager","registeredAnimations","playingAnimationsNum","_stopped","removeElement","ev","animItem","subtractPlayingCount","elem","addPlayingCount","activate","nowTime","elapsedTime","initTime","_isFrozen","requestAnimationFrame","first","registerAnimation","searchAnimations","standalone","animElements","concat","getElementsByClassName","lenAnims","body","getElementsByTagName","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","str","replace","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","A","aA1","aA2","aT","B","C","getSlope","points","_p","_mSampleValues","_precomputed","x","mX1","mY1","mX2","mY2","_precompute","calcBezier","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","double","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","pooling","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","ptDistance","curveSegments","point","lastPoint","lengthData","perc","BezierData","segmentLength","PointData","partial","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","u0","t1","u0u0u0","t0u0u0_3","t0t0u0_3","u0u0u1","u1","t0u0u1_3","u0u1u1","t0u1u1_3","u1u1u1","t1u1u1_3","t1t1t1","bezierSegmentPoints","math","t0t0t0","t0t0u1_3","t0t0t1","t0t1u1_3","t0t1t1","t1t1u1_3","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist3","dist2","bez","PropertyFactory","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","fnc","iterationIndex","keyframes","keyData","nextKeyData","keyframeMetadata","keyframesMetadata","out","quat","qx","qy","qz","qw","heading","attitude","bank","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","y","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","endValue","sh","quatStart","createQuaternion","quatEnd","omega","cosom","sinom","scale0","scale1","ax","ay","az","aw","bx","by","bz","bw","acos","sin","slerp","atan2","asin","c1","cos","c2","c3","s1","s3","s2","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","getProp","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","resetShape","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","interpolateShapeCurrentTime","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","roundness","perimSegment","numPts","angle","longFlag","longRad","longRound","longPerimSegment","shortPerimSegment","shortRad","currentAng","shortRound","rad","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","tan","_rnd","mSin","_t","mCos","rotateX","rotateY","rotateZ","shear","sx","skew","_tan","skewFromAxis","sz","translate","tx","tz","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","k1","l1","m1","n1","o1","j1","isIdentity","_identity","equals","matr","cloneFromProps","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","rotate","scale","setTransform","applyToPoint","_typeof$3","lottie","setLocation","href","setSubframeEnabled","setPrefix","prefix","setQuality","setDefaultCurveSegments","inBrowser","installPlugin","plugin","getFactory","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","setSubframeRendering","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","checkReady","exports","bodymovin","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","addShapes","lastShape","newShapesData","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","getValueAtTime","v2","autoOrient","_addDynamicProperty","getTransformProperty","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffy","coeffx","extrema","quadRoots","intersectData","t2","box","boundingBox","cx","cy","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","splitData","d2s","crossProduct","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","prevDist","nextDist","nextPoint","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","lineIntersection","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","mid","flex","inflectionPoints","right","OffsetPathModifier","getFontProperties","fontData","fStyle","fWeight","weight","RepeaterModifier","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","resetElements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","ceil","group","ix","reloadShapes","elems","transformData","roundOffset","pProps","rProps","sProps","iteration","offsetModulo","mProps","rd","currentV","currentI","closerV","distance","newPosPerc","currentO","derivative","denom","tcusp","square","root","p10","p11","p20","p21","bounds","bottom","other","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","size","combinedCharacters","font","family","fontFamily","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","createHelper","def","engine","fontProps","tHelper","fFamily","fClass","helper","tCanvasHelper","OffscreenCanvas","measureText","text","getComputedTextLength","Font","typekitLoaded","_warned","Date","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","surrogateModifiers","isZeroWidthJoiner","zeroWidthJoiner","isCombinedCharacter","_char3","fontPrototype","found","ch","list","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","setUpNode","sansCase","fPath","fOrigin","rel","sc","getCharData","_char","charCodeAt","console","warn","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","removeChild","RenderableElement","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","AngleEffect","PointEffect","LayerIndexEffect","CheckboxEffect","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FootageElement","imageLoader","initBaseData","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","TransformElement","MaskElement","maskElement","viewData","solidPath","currentMasks","maskRef","maskType","rect","getShapeProp","lastPath","filterID","expansor","feMorph","expan","lastOperator","filterId","lastRadius","mask","layerId","getLocationHref","createLayerSolidPath","invRect","drawPath","maskedElement","eff","SliderEffect","ColorEffect","MaskIndexEffect","EffectsManager","NoValueEffect","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","CompExpressionInterface","shapeInterface","shapesData","itemsData","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","effectsManager","getType","FrameElement","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","AudioElement","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","initTransform","_matMdf","_opMdf","ao","renderTransform","finalMat","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","createFilter","filters","filterManager","registeredEffects","Effect","effect","idPrefix","source","countsAsEffect","SVGBaseElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","SVGEffects","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","symbolElement","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","renderableEffectsManager","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","HierarchyElement","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","SVGStyleData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","lLen","iterations","renderFill","styleElem","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","renderGradientStroke","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","SVGElementsRenderer","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charCode","charactersArray","shouldCombine","charAt","newLineFlag","currentSize","currentLine","maxLineWidth","trackingOffset","boxHeight","currentHeight","lineWidth","lastSpaceIndex","currentChar","uncollapsedSpaces","letters","an","add","anIndexes","animatorJustifyOffset","anchorGrouping","currentPos","extra","based","animators","indexes","animatorData","fh","fs","fb","letterData","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","yPos","pathInfo","currentLength","currentPoint","pointInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","segmentInd","xPos","firstLine","xPathPos","yPathPos","letterSc","letterFc","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","elemOpacity","letterSw","letterO","animatorOffset","yOff","offf","atan","letterValue","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","emptyShapeData","textSpans","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","config","title","titleId","titleElement","ariaLabel","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","className","focusable","filterSize","runExpressions","destroyed","CVContextData","saved","cArrPos","cTr","cO","savedOp","ShapeTransformManager","sequences","sequenceList","transform_key_count","CVEffects","hasMasks","CVBaseElement","transformsManager","styledShapes","styledShape","addTransformSequence","trNodes","CVShapeElement","stroke","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","clearCanvas","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","transformMat","CVCompElement","CanvasRenderer","HBaseElement","HSolidElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","SVGTextLottieElement","singleShape","textContainer","buildTextContents","textArray","textContents","fromCharCode","currentTextContent","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","ISolidElement","findIndexByInd","appendElementInPos","tp","elementIndex","matteMask","nextElement","setElements","getElements","destroyElements","duplicate","currentSavedOp","newLength","sequence","processSequence","processSequences","getNewKey","CVMaskElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","createElements","blendMode","globalCompositeOperation","hideElement","showElement","forceRealStack","ctxTransform","ctxOpacity","restore","CVShapeData","transformHelper","opacity","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","_shouldRender","ownTransforms","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","strokeStyle","grd","lineCap","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","CVTextElement","hasFill","hasStroke","pathArr","commands","commandsCounter","lastStroke","lastStrokeW","lastFill","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","drawImage","cProps","trProps","globalAlpha","actionFlag","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","clearRect","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","backgroundColor","HShapeElement","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationY","mRotationX","hasMatrixChanged","matValue","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","Expressions","registers","pushExpression","stackCount","popExpression","releaseInstances","registerExpressionProperty","expression","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","getVelocityAtTime","numKeys","valueProp","valueAtTime","speedAtTime","getSpeedAtTime","velocityAtTime","propertyGroup","UnidimensionalPropertyInterface","arrValue","defaultGetter","TransformExpressionInterface","_thisFunction","rotation","xRotation","yRotation","xPosition","yPosition","zPosition","anchorPoint","_px","_py","_pz","_transformFactory","toWorldMat","toWorldVec","getMatrix","applyPoint","toWorld","invertPoint","fromWorld","fromComp","sampleImage","transformInterface","fromWorldVec","toComp","anchorPointDescriptor","defineProperties","hasParent","anchor_point","active","startTime","inPoint","outPoint","MaskManagerInterface","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","effectsData","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","ShapePathInterface","pathInterfaceFactory","view","propertyIndex","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","iterateElements","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_prevValue","_sourceText","sourceText","stringValue","_typeof$2","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","_typeof$1","seedRandom","startdenom","significance","keylen","me","S","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","prng","arc4","int32","quick","pass","is_math_call","copy","initialize$2","propTypes","SHAPE","_typeof","ExpressionManager","fetch","frames","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sub","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","helperLengthArray","arr1","arr2","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","noOp","_value","needsVelocity","_needsRandom","$bm_transform","thisProperty","loopIn","loop_in","loopOut","loop_out","smooth","fromCompToSurface","thisLayer","thisComp","expression_function","eval","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","velocity","textIndex","textTotal","selectorValue","elem1","elem2","fVec","pitch","easeOut","val1","val2","easeIn","applyEase","ease","lenKey","iKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","substring","framesPerSecond","frameExpressionId","elemType","scoped_bm_rt","executeExpression","__preventDeadCodeRemoval","loopOutDuration","lookAt","nearestKey","posterizeTime","$bm_sum","$bm_mul","degrees_to_radians","normalize","expressionHelpers","searchExpressions","speed","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","ret","lastKeyFrame","firstKeyFrame","repeats","initV","endV","current","lastValue","nextLastValue","nextFirstValue","firstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionY","positionZ","positionX","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","yLength","magnitude","xLength","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","addDecorator","SVGComposableEffect","SVGTintFilter","matrixFilter","feMerge","createMergeNode","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","resultId","ins","feMergeNode","colorWhite","colorBlack","elemChildren","groupPath","pathMasker","getTotalLength","dasharrayValue","lineLength","units","color1","color2","color3","tableR","tableB","tableG","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","sigma","dimensions","sigmaX","sigmaY","edgeMode","initialize$1","registerEffect","module","_templateObject","_taggedTemplateLiteral","PlayerState","PlayMode","PlayerEvents","parseSrc","isLottie","json","every","field","fromURL","_x","_fromURL","_asyncToGenerator","srcUrl","LottiePlayer","background","controls","currentState","Loading","disableCheck","hover","intermission","Normal","_io","_counter","_this","srcParsed","jsonData","srcAttrib","_lottie","webworkers","_attachEventListeners","dispatchEvent","CustomEvent","getLottie","Playing","Play","Paused","Pause","Stopped","Stop","Destroyed","frame","seeker","snapshot","download","XMLSerializer","serializeToString","encodeURIComponent","click","setLooping","togglePlay","toggleLooping","disconnect","_onVisibilityChange","animationClass","_templateObject2","renderControls","IntersectionObserver","entries","isIntersecting","Frozen","observe","Rendered","isStopped","_templateObject3","_templateObject5","_handleSeekChange","_prevState","Frame","detail","Complete","Bounce","Loop","Ready","Load","Freeze","__decorate","query"],"mappings":";;;;;;KAMA,IACMA,IAAkCC,OAK3BC,IACXF,IAAOG,kBAAAA,IACNH,IAAOI,UAA0BJ,IAAOI,SAASC,eAClD,uBAAwBC,SAASC,WACjC,YAAaC,cAAcD,UAkBvBE,IAAoBC,SAEpBC,IAAc,IAAIC,QAAAA,MASXC,IAOXC,YACEC,EACAC,EACAC,GAEA,GAVFC,KAAeC,cAAI,EAUbF,IAAcR,IAChB,MAAUW,MACR,qEAGJF,KAAKH,QAAUA,EACfG,KAAKG,EAAWL,CACjB,CAIGM,iBAGF,IAAIA,EAAaJ,KAAKK,EAChBP,EAAUE,KAAKG,EACrB,GAAInB,UAAAA,IAA+BoB,EAA0B,CAC3D,IAAME,OAAwBC,IAAZT,GAA4C,IAAnBA,EAAQU,OAC/CF,IACFF,EAAaX,IAAYgB,IAAIX,aAE3BM,KACDJ,KAAKK,EAAcD,EAAa,IAAId,eAAiBoB,YACpDV,KAAKH,SAEHS,GACFb,IAAYkB,IAAIb,EAASM,GAG9B,CACD,OAAOA,CACR,CAEDQ,WACE,OAAOZ,KAAKH,OACb,EAWH,IAsBagB,IAAaC,GACxB,IAAKnB,IACc,iBAAVmB,EAAqBA,EAAeA,EAAPC,QAAAA,EAEpCxB,KAWSyB,IAAM,SACjBlB,GACGmB,IAAAA,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAEH,IAAMpB,EACe,IAAnBC,EAAQU,OACJV,EAAQ,GACRmB,EAAOC,QACL,CAACC,EAAKC,EAAGC,IAAQF,EA7CD,CAACL,IAEzB,IAAA,IAAKA,EAAkCb,aACrC,OAAQa,EAAoBjB,QACvB,GAAqB,iBAAViB,EAChB,OAAOA,EAEP,MAAUZ,MACR,mEACKY,EADL,uFAIH,EAZuB,CA6CyBM,GAAKtB,EAAQuB,EAAM,IAC5DvB,EAAQ,IAEhB,OAAO,IAAKH,IACVE,EACAC,EACAP,IACD,EAYU+B,IAAc,CACzBC,EACAC,KAEIxC,IACDuC,EAA0BE,mBAAqBD,EAAOE,KAAKC,GAC1DA,aAAarC,cAAgBqC,EAAIA,EAAEvB,aAGrCoB,EAAOI,SAASD,IACd,IAAME,EAAQC,SAASC,cAAc,SAE/BC,EAASlD,IAAyBmD,cAAA,IACpCD,GACFH,EAAMK,aAAa,QAASF,GAE9BH,EAAMM,YAAeR,EAAgB9B,QACrC0B,EAAWa,YAAYP,EAAM,GAEhC,EAWUQ,IACXrD,IAEK2C,GAAyBA,EACzBA,GACCA,aAAarC,cAbW,CAACgD,IAC/B,IAAIzC,EAAU,GACd,IAAK,IAAM0C,KAAQD,EAAME,SACvB3C,GAAW0C,EAAK1C,QAElB,OAAOgB,IAAUhB,EAAQ,EALK,CAa6B8B,GAAKA;;;;;UC5K5D7C,IAAkCC,OAmBlC0D,IAAgB3D,IACnB2D,aAMGC,IAAiCD,IAClCA,IAAaE,YACd,GAEEC,IAEF9D,IAAO+D,+BA8PEC,IAA8C,CACzDC,YAAYjC,EAAgBkC,GAC1B,OAAQA,GACN,KAAKC,QACHnC,EAAQA,EAAQ4B,IAAiC,KACjD,MACF,KAAKQ,OACL,KAAKC,MAGHrC,EAAiB,MAATA,EAAgBA,EAAQsC,KAAKC,UAAUvC,GAGnD,OAAOA,CACR,EAEDwC,cAAcxC,EAAsBkC,GAClC,IAAIO,EAAqBzC,EACzB,OAAQkC,GACN,KAAKC,QACHM,EAAsB,OAAVzC,EACZ,MACF,KAAK0C,OACHD,EAAsB,OAAVzC,EAAiB,KAAO0C,OAAO1C,GAC3C,MACF,KAAKoC,OACL,KAAKC,MAIH,IAEEI,EAAYH,KAAKK,MAAM3C,EAGxB,CAFQ4C,MAAAA,GACPH,EAAY,IACb,EAGL,OAAOA,CACR,GAWUI,IAAuB,CAAC7C,EAAgB8C,IAE5CA,IAAQ9C,IAAU8C,GAAQA,GAAO9C,GAAUA,GAG9C+C,IAAkD,CACtDC,WAAW,EACXd,KAAMjC,OACNgD,UAAWjB,IACXkB,SAAS,EACTC,WAAYN,SA6BR,MAAgBO,YACZC,YAsgBRvE,cACEwE,QA3CMpE,KAAwCqE,KAAA,IAAIC,IAUpDtE,KAAeuE,iBAAG,EAOlBvE,KAAUwE,YAAAA,EAkBFxE,KAAoByE,KAAuB,KASjDzE,KAAK0E,GACN,CApbDC,sBAAsBC,GAAAA,IAAAA,EACpB5E,KAAK6E,YACc,QAAnBC,EAAC9E,KAAK+E,SAAAA,QAAL/E,KAAK+E,EAAkB,IAAIC,KAAKJ,EAClC,CA0GUK,gCAETjF,KAAK6E,WACL,IAAMK,EAAuB,GAU7B,OAPAlF,KAAKmF,kBAAkBvD,SAAQ,CAACR,EAAGgE,KACjC,IAAMC,EAAOrF,KAAKsF,KAA2BF,EAAGhE,QAAAA,IAC5CiE,IACFrF,KAAKuF,KAAyB5E,IAAI0E,EAAMD,GACxCF,EAAWF,KAAKK,GACjB,IAEIH,CACR,CA2BDP,sBACEa,GAC+B3B,IAA/B4B,EAA+B5B,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,IAiB/B,GAdI4B,EAAQC,QAGTD,EAAgB3B,WAAY,GAI/B9D,KAAK6E,WACL7E,KAAKmF,kBAAkBxE,IAAI6E,EAAMC,IAM5BA,EAAQE,aAAe3F,KAAKX,UAAUuG,eAAeJ,GAAO,CAC/D,IAAMK,EAAsB,iBAATL,EAAoBhG,SAAW,KAAKgG,EACjDM,EAAa9F,KAAK+F,sBAAsBP,EAAMK,EAAKJ,QAAAA,IACrDK,GACF5C,OAAO8C,eAAehG,KAAKX,UAAWmG,EAAMM,EAY/C,CACF,CA6BSnB,6BACRa,EACAK,EACAJ,GAEA,MAAO,CAELhF,MACE,OAAQT,KAAkC6F,EAC3C,EACDlF,IAA2BG,GACzB,IAAMmF,EAAYjG,KAChBwF,GAEDxF,KAAwC6F,GAAiB/E,EACzDd,KAAoCkG,cACnCV,EACAS,EACAR,EAEH,EACDU,cAAc,EACdC,YAAY,EAEf,CAgBDzB,0BAA0Ba,GACxB,OAAOxF,KAAKmF,kBAAkB1E,IAAI+E,IAAS3B,GAC5C,CAQSc,kBACR,GAAI3E,KAAK4F,eApXK,aAqXZ,OAAO,EAET5F,KAAcqG,WAAI,EAElB,IAAMC,EAAYpD,OAAOqD,eAAevG,MAexC,GAdAsG,EAAUzB,oBAINyB,EAAUvB,IACZ/E,KAAK+E,EAAgB,IAAIuB,EAAUvB,IAErC/E,KAAKmF,kBAAoB,IAAIb,IAAIgC,EAAUnB,mBAE3CnF,KAAKuF,KAA2B,IAAIjB,IAKhCtE,KAAK4F,eAAyC,cAAsB,CACtE,IAAMY,EAAQxG,KAAKyG,WAEbC,EAAW,IACZxD,OAAOyD,oBAAoBH,MAC3BtD,OAAO0D,sBAAsBJ,IAGlC,IAAK,IAAMpB,KAAKsB,EAId1G,KAAK6G,eAAezB,EAAIoB,EAAcpB,GAEzC,CAkBD,OAjBApF,KAAK8G,cAAgB9G,KAAK+G,eAAe/G,KAAKwB,UAkB/C,CA4BSmD,sBACRnD,GAEA,IAAMsF,EAAgB,GACtB,GAAI3D,MAAM6D,QAAQxF,GAAS,CAIzB,IAAMb,EAAM,IAAIsG,IAAKzF,EAA0B0F,KAAKC,KAAUC,WAE9D,IAAK,IAAMzF,KAAKhB,EACdmG,EAAcO,QAAQhF,IAAmBV,GAE5C,WAAA,IAAUH,GACTsF,EAAc9B,KAAK3C,IAAmBb,IAExC,OAAOsF,CACR,CAaOnC,YACNa,EACAC,GAEA,IAAM3B,EAAY2B,EAAQ3B,UAC1B,OAAqB,IAAdA,OACHvD,EACqB,iBAAduD,EACPA,EACgB,iBAAT0B,EACPA,EAAK8B,mBAAAA,CAEV,CAuDD5C,IAAAA,IAAAA,EACE1E,KAAKuH,KAAkB,IAAIC,SACxBC,GAASzH,KAAK0H,eAAiBD,IAElCzH,KAAK2H,KAAsB,IAAIrD,IAC/BtE,KAAK4H,OAGL5H,KAAKkG,gBACqD,QAA1DpB,EAAC9E,KAAKJ,YAAuCmF,aAAenD,GAAAA,EAAAA,SAASiG,GACnEA,EAAE7H,OAEL,CAWD8H,cAAcC,GAAAA,IAAAA,EAAAA,GACO,QAAnBjD,EAAC9E,KAAKgI,gBAALhI,EAAAA,EAAAA,KAAKgI,KAAkB,IAAIhD,KAAK+C,QAKTxH,IAApBP,KAAKuB,YAA4BvB,KAAKiI,cAChB,QAAxBC,EAAAA,EAAWC,yBAEdxG,GAAAA,EAAAyG,KAAAC,GAAA,CAMDC,iBAAiBP,GAAAA,IAAAA,EAAAA,QAGfjD,EAAAA,KAAKkD,qBAAeO,OAAOvI,KAAKgI,KAAcQ,QAAQT,KAAgB,EAAG,EAC1E,CAcOH,OAGL5H,KAAKJ,YAAuCuF,kBAAkBvD,SAC7D,CAAC6G,EAAIrD,KACCpF,KAAK4F,eAAeR,KACtBpF,KAAK0I,KAAsB/H,IAAIyE,EAAGpF,KAAKoF,WAChCpF,KAAKoF,GACb,GAGN,CAWSuD,mBAAAA,IAAAA,EACFpH,EAEJ,QADAuD,EAAAA,KAAK8D,sBACAC,EAAAA,EAAAA,KAAAA,aACF7I,KAAKJ,YAAuCkJ,mBAMjD,OAJAxH,IACEC,EACCvB,KAAKJ,YAAuCkH,eAExCvF,CACR,CAODwH,oBAAAA,IAAAA,OAAAA,IAEM/I,KAAKuB,aAELvB,KAGAuB,WAAavB,KAAK2I,oBAEtB3I,KAAK0H,gBAAAA,GACa,QAAlB5C,EAAKkD,KAAAA,YAAAA,SAAepG,SAASoH,IAAAA,IAAAA,EAAM,OAAA,QAAAnB,EAAAQ,EAAEF,qBAAiB,IAAAN,OAAA,EAAAA,EAAAO,KAAAC,EAAA,GACvD,CAQSX,eAAeuB,GAA6B,CAQtDC,uBAAAA,IAAAA,EACoB,QAAlBpE,EAAAA,KAAKkD,YAAa,IAAAK,GAAAA,EAAEzG,SAASoH,IAAAA,IAAAA,EAAM,OAAA,QAAAnB,EAAAQ,EAAEc,wBAAoB,IAAAtB,OAAA,EAAAA,EAAAO,KAAAC,EAAA,GAC1D,CAcDe,yBACE5D,EACA6D,EACAvI,GAEAd,KAAKsJ,KAAsB9D,EAAM1E,EAClC,CAEOyI,KACN/D,EACA1E,GAC+B+C,IAAAA,EAA/B4B,EAA+B5B,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,IAEzBwB,EACJrF,KAAKJ,YACL0F,KAA2BE,EAAMC,GACnC,QAAA,IAAIJ,IAAAA,IAAsBI,EAAQzB,QAAkB,CAClD,IAKMwF,QAAAA,KAJJ1E,QAAAA,EAACW,EAAQ1B,iBAAAA,IAAAA,OAAAA,EAAAA,EAAyChB,aAE7C0C,EAAQ1B,UACTjB,KACsBC,YAAajC,EAAO2E,EAAQzC,MAwBxDhD,KAAKyE,KAAuBe,EACX,MAAbgE,EACFxJ,KAAKyJ,gBAAgBpE,GAErBrF,KAAKkC,aAAamD,EAAMmE,GAG1BxJ,KAAKyE,KAAuB,IAC7B,CACF,CAGD6E,KAAsB9D,EAAc1E,GAAAA,IAAAA,EAC5B4I,EAAO1J,KAAKJ,YAGZ+J,EAAYD,EAAKnE,KAA0C9E,IAAI+E,GAGrE,QAAA,IAAImE,GAA0B3J,KAAKyE,OAAyBkF,EAAU,CACpE,IAAMlE,EAAUiE,EAAKE,mBAAmBD,GAClC5F,EACyB,mBAAtB0B,EAAQ1B,UACX,CAACT,cAAemC,EAAQ1B,gBAAAA,KACP,QAAjBe,EAAAA,EAAQf,qBAAWT,OAAAA,EAAAA,EAAAA,eACnBmC,EAAQ1B,UACRjB,IAEN9C,KAAKyE,KAAuBkF,EAC5B3J,KAAK2J,GAA0B5F,EAAUT,cACvCxC,EACA2E,EAAQzC,MAIVhD,KAAKyE,KAAuB,IAC7B,CACF,CAgBDyB,cACEV,EACAS,EACAR,GAEA,IAAIoE,GAAsB,OAAA,IAEtBrE,MACFC,EACEA,GACCzF,KAAKJ,YAAuCgK,mBAAmBpE,IACvCvB,YAAcN,KAC1B3D,KAAKwF,GAAqBS,IAClCjG,KAAK2H,KAAoBmC,IAAItE,IAChCxF,KAAK2H,KAAoBhH,IAAI6E,EAAMS,IAAAA,IAMjCR,EAAQzB,SAAoBhE,KAAKyE,OAAyBe,aACxDxF,KAAK+J,OACP/J,KAAK+J,KAAyB,IAAIzF,KAEpCtE,KAAK+J,KAAuBpJ,IAAI6E,EAAMC,KAIxCoE,OAGC7J,KAAKuE,iBAAmBsF,IAC3B7J,KAAKuH,KAAkBvH,KAAKgK,OAO/B,CAKOC,OAAAA,IAAAA,EAAAA,KAAAA,OAAAA,mBAAAA,YACNjK,EAAKuE,iBAAkB,EACvB,UAGQvE,EAAKuH,IAOZ,CANQ7D,MAAAA,GAKP8D,QAAQ0C,OAAOxG,EAChB,CACD,IAAMyG,EAASnK,EAAKoK,iBAOpB,OAHc,MAAVD,UACIA,IAEAnK,EAAKuE,eACd,GArBO0F,EAqBP,CAmBSG,iBACR,OAAOpK,KAAKqK,eACb,CAmBSA,gBAAAA,IAAAA,EAIR,GAAKrK,KAAKuE,gBAAV,CAKKvE,KAAKwE,WAyBNxE,KAAK0I,OAIP1I,KAAK0I,KAAsB9G,SAAQ,CAACR,EAAGgE,IAAQpF,KAAaoF,GAAKhE,IACjEpB,KAAK0I,UAAuBnI,GAE9B,IAAI+J,GAAe,EACbC,EAAoBvK,KAAK2H,KAC/B,KACE2C,EAAetK,KAAKsK,aAAaC,KAE/BvK,KAAKwK,WAAWD,GACE,QAAlBrC,EAAAA,KAAKF,YAAa,IAAAK,GAAAA,EAAEzG,SAASoH,IAAAA,IAAAA,EAAM,OAAA,QAAAnB,EAAAQ,EAAEoC,kBAAc,IAAA5C,OAAA,EAAAA,EAAAO,KAAAC,EAAA,IACnDrI,KAAK0K,OAAOH,IAEZvK,KAAK2K,MASR,CAPQjH,MAAAA,GAMP,MAHA4G,GAAe,EAEftK,KAAK2K,OACCjH,CACP,CAEG4G,GACFtK,KAAK4K,KAAYL,EAzDjB,CA2DH,CAuBSC,WAAWK,GAA4C,CAIjED,KAAYL,GAAAA,IAAAA,EACQ,QAAlBzF,EAAAA,KAAKkD,YAAa,IAAAH,GAAAA,EAAEjG,SAASoH,IAAAA,IAAAA,EAAM,OAAA,QAAAnB,EAAAQ,EAAEyC,mBAAe,IAAAjD,OAAA,EAAAA,EAAAO,KAAAC,EAAA,IAC/CrI,KAAKwE,aACRxE,KAAKwE,YAAa,EAClBxE,KAAK+K,aAAaR,IAEpBvK,KAAKgL,QAAQT,EAiBd,CAEOI,OACN3K,KAAK2H,KAAsB,IAAIrD,IAC/BtE,KAAKuE,kBACN,CAkBG0G,qBACF,OAAOjL,KAAKkL,mBACb,CAyBSA,oBACR,OAAOlL,KAAKuH,IACb,CAUS+C,aAAaO,GACrB,OAAA,CACD,CAWSH,OAAOG,QAAAA,IACX7K,KAAK+J,OAGP/J,KAAK+J,KAAuBnI,SAAQ,CAACR,EAAG+J,IACtCnL,KAAKuJ,KAAsB4B,EAAGnL,KAAKmL,GAAkB/J,KAEvDpB,KAAK+J,UAAyBxJ,GAEhCP,KAAK2K,MACN,CAYSK,QAAQH,GAAsC,CAkB9CE,aAAaF,GAAsC,EAh+BjCxE,IAAAA,WAAAA,EAQrBnC,IAA4CiB,kBAAA,IAAIb,IAmChDJ,IAAa4C,cAA6B,GAwQ1C5C,IAAoC4E,kBAAA,CAACsC,KAAM,QAqrBpDxI,MAAkByI,KAAAA,IAAA,CAACnH,gBAAAA,OAoCY,QAA/BoH,IAACxM,IAAOyM,+BAAAA,YAAPzM,IAAOyM,wBAA4B,IAAIvG,KAAK,SCjgD7C,IAAMlG,IAAkCC,OAmOlC0D,IAAgB3D,IAAsC2D,aAUtD+I,IAAS/I,IACXA,IAAagJ,aAAa,WAAY,CACpCC,WAAa/J,GAAMA,SAErBpB,EAkFEoL,IAAAA,OAAAA,QAAuBC,KAAKC,SAAZ9K,IAAsB+K,MAAM,GAAA,KAG5CC,IAAc,IAAMJ,IAIpBK,IAAiBD,IAAAA,OAAAA,IAAAA,KAEjBE,IAOAnK,SAGAoK,IAAe,WAAfA,IAAgB9K,EAAI+K,UAAA3L,OAAA,QAAAD,IAAA4L,UAAA,GAAAA,UAAA,GAAA,GAAA,OAAOF,IAAEG,cAAchL,EAAAA,EAI3CiL,EAAevL,GACT,OAAVA,GAAmC,iBAATA,GAAqC,mBAATA,EAClDkG,EAAU7D,MAAM6D,QAChBsF,EAAcxL,GAClBkG,EAAQlG,IAEqC,mBAArCA,iBAAgBtB,OAAO+M,WAoB3BC,EAAe,sDAKfC,EAAkB,OAIlBC,EAAmB,KAwBnBC,EAAkBC,OACtB,+FACA,KAOIC,EAA0B,KAC1BC,EAA0B,KAO1BC,EAAiB,qCA8DjBC,EACmBhK,GACvB,SAAClD,GAAAA,IAAkCmB,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAAAA,MAU1B,CAELgM,WAAgBjK,EAChBlD,QAAAA,EACAmB,OAAAA,EAAAA,EAiBOiM,EAAOF,EA5FA,GAqHPG,EAAMH,EApHA,GA0HNI,EAAW5N,OAAO6N,IAAI,gBAqBtBC,EAAU9N,OAAO6N,IAAI,eAS5BE,EAAgB,IAAI7N,QAqCpB8N,EAASvB,IAAEwB,iBACfxB,IACA,IACA,MACA,GAiCIyB,EAAkB,CACtB5N,EACAkD,KAwBA,IAhBA,IAUI2K,EAVEC,EAAI9N,EAAQU,OAAS,EAIrBqN,EAAuC,GACzCX,EAjPa,IAiPNlK,EAAsB,QAAU,GASvC8K,EAAQtB,EAEH3E,EAAI,EAAGA,EAAI+F,EAAG/F,IAAK,CAc1B,IAbA,IAAMlG,EAAI7B,EAAQ+H,GAOdkG,OAAAA,EAEAC,OAAAA,EAHAC,GAAoB,EAEpBC,EAAY,EAKTA,EAAYvM,EAAEnB,SAEnBsN,EAAMI,UAAYA,EAEJ,QADdF,EAAQF,EAAMK,KAAKxM,MAInBuM,EAAYJ,EAAMI,UACdJ,IAAUtB,EACiB,QAAzBwB,EAxUU,GAyUZF,EAAQrB,OAC0BlM,IAAzByN,EA1UG,GA4UZF,EAAQpB,WACCsB,EA5UF,IA6UHjB,EAAeqB,KAAKJ,EA7UjB,MAgVLL,EAAsBf,OAAO,KAAKoB,EAhV7B,GAgVgD,MAEvDF,EAAQnB,QAC6BpM,IAA5ByN,EAlVM,KAyVfF,EAAQnB,GAEDmB,IAAUnB,EACS,MAAxBqB,EA1TS,IA6TXF,EAAQH,MAAAA,EAAAA,EAAmBnB,EAG3ByB,GAAoB,YACXD,EAhUI,GAkUbC,GAAoB,GAEpBA,EAAmBH,EAAMI,UAAYF,EAnUrB,GAmU8CxN,OAC9DuN,EAAWC,EArUE,GAsUbF,OAAAA,IACEE,EArUO,GAsUHrB,EACsB,MAAtBqB,EAvUG,GAwUHlB,EACAD,GAGRiB,IAAUhB,GACVgB,IAAUjB,EAEViB,EAAQnB,EACCmB,IAAUrB,GAAmBqB,IAAUpB,EAChDoB,EAAQtB,GAIRsB,EAAQnB,EACRgB,OAAkBpN,GA8BtB,IAAM8N,EACJP,IAAUnB,GAAe7M,EAAQ+H,EAAI,GAAGyG,WAAW,MAAQ,IAAM,GACnEpB,GACEY,IAAUtB,EACN7K,EAAIqK,IACJiC,GAAoB,GACnBJ,EAAU7I,KAAK+I,GAChBpM,EAAEmK,MAAM,EAAGmC,GA1dQ,QA4djBtM,EAAEmK,MAAMmC,GACVtC,IACA0C,GACA1M,EACAgK,MACuB,IAAtBsC,GAA2BJ,EAAU7I,UAAAA,GAAiB6C,GAAKwG,EACnE,CAED,IAAME,EACJrB,GAAQpN,EAAQ8N,IAAM,QAxXP,IAwXiB5K,EAAsB,SAAW,IAOnE,IAAKG,MAAM6D,QAAQlH,KAAaA,EAAQ8F,eAAe,OAkBrD,MAAU1F,MAjBI,kCAoBhB,MAAO,UACLsL,IACIA,IAAOE,WAAW6C,GACjBA,EACLV,EACD,EAKH,MAAMW,EAMJ5O,YAGE6F,EAAAA,GAAAA,IAEIgJ,GAHJ3O,QAACA,EAASmN,WAAgBjK,GAAAA,EAJ5BhD,KAAK0O,MAAwB,GAQ3B,IAAIC,EAAY,EACZC,EAAgB,EACdC,EAAY/O,EAAQU,OAAS,EAC7BkO,EAAQ1O,KAAK0O,OAGZxB,EAAMW,GAAaH,EAAgB5N,EAASkD,GAKnD,GAJAhD,KAAK8O,GAAKN,EAASzM,cAAcmL,EAAMzH,GACvC+H,EAAOuB,YAAc/O,KAAK8O,GAAGE,QAlbd,IAqbXhM,EAAqB,CACvB,IAAMgM,EAAUhP,KAAK8O,GAAGE,QAClBC,EAAaD,EAAQE,WAC3BD,EAAWE,SACXH,EAAQI,UAAUH,EAAWI,WAC9B,CAGD,KAAsC,QAA9BZ,EAAOjB,EAAO8B,aAAwBZ,EAAMlO,OAASqO,GAAW,CACtE,GAAsB,IAAlBJ,EAAKc,SAAgB,CAuBvB,GAAKd,EAAiBe,gBAAiB,CAIrC,IAAMC,EAAgB,GACtB,IAAK,IAAMjK,KAASiJ,EAAiBiB,oBAQnC,GACElK,EAAKmK,SAhlBU,UAilBfnK,EAAK8I,WAAW3C,KAChB,CACA,IAAMiE,EAAW/B,EAAUe,KAE3B,GADAa,EAAczK,KAAKQ,QACFjF,IAAbqP,EAAwB,CAE1B,IAGMC,EAHSpB,EAAiBqB,aAC9BF,EAAStI,cAxlBE,SA0lBSyI,MAAMpE,KACtBqE,EAAI,eAAe7B,KAAKyB,GAC9BlB,EAAM1J,KAAK,CACThC,KA1eK,EA2eLiN,MAAOtB,EACPnJ,KAAMwK,EAAE,GACRlQ,QAAS+P,EACTnG,KACW,MAATsG,EAAE,GACEE,EACS,MAATF,EAAE,GACFG,EACS,MAATH,EAAE,GACFI,EACAC,GAET,MACC3B,EAAM1J,KAAK,CACThC,KApfG,EAqfHiN,MAAOtB,GAGZ,CAEH,IAAK,IAAMnJ,KAAQiK,EAChBhB,EAAiBhF,gBAAgBjE,EAErC,CAGD,GAAIuH,EAAeqB,KAAMK,EAAiB6B,SAAU,CAIlD,IAAMxQ,EAAW2O,EAAiBtM,YAAa4N,MAAMpE,KAC/CuC,EAAYpO,EAAQU,OAAS,EACnC,GAAI0N,EAAY,EAAG,CAChBO,EAAiBtM,YAAcM,IAC3BA,IAAaE,YACd,GAMJ,IAAK,IAAIkF,EAAI,EAAGA,EAAIqG,EAAWrG,IAC5B4G,EAAiBW,OAAOtP,EAAQ+H,GAAIqE,OAErCsB,EAAO8B,WACPZ,EAAM1J,KAAK,CAAChC,KAvhBP,EAuhByBiN,QAAStB,IAKxCF,EAAiBW,OAAOtP,EAAQoO,GAAYhC,MAC9C,CACF,OACI,GAAsB,IAAlBuC,EAAKc,SAEd,GADcd,EAAiB8B,OAClBxE,IACX2C,EAAM1J,KAAK,CAAChC,KAliBH,EAkiBqBiN,MAAOtB,SAGrC,IADA,IAAI9G,GAAK,GACuD,KAAxDA,EAAK4G,EAAiB8B,KAAK/H,QAAQmD,IAAQ9D,EAAI,KAGrD6G,EAAM1J,KAAK,CAAChC,KAniBH,EAmiBuBiN,MAAOtB,IAEvC9G,GAAK8D,IAAOnL,OAAS,EAI3BmO,GACD,CAQF,CAIDhK,qBAAqBuI,EAAmBsD,GACtC,IAAM1B,EAAK7C,IAAElK,cAAc,YAE3B,OADA+M,EAAG2B,UAAYvD,EACR4B,CACR,EAgBH,SAAS4B,EACPC,EACA7P,GAEA8P,IAAAA,EAAAA,EAAAA,EAAAA,EADAC,EAA0BF,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,EAC1BC,EAAAA,UAAAA,OAAAA,EAAAA,UAAAA,QAAAA,EAIA,GAAI9P,IAAUsM,EACZ,OAAOtM,EAET,IAAIgQ,OAAAA,IACFF,EAC0C,QAArC9L,IAAyBiM,YAAY,IAAA1F,OAAA,EAAAA,EAAGuF,GACxCC,EAA+CG,KAChDC,EAA2B5E,EAAYvL,QACzCP,EAECO,EAA2CoQ,gBAyBhD,OAxBIJ,MAAAA,OAAAA,EAAAA,EAAkBlR,eAAgBqR,IAEoB,QAAxD/I,EAAAA,MAAAA,OAAAA,EAAAA,EAAuDiJ,gBAAIC,GAAAA,EAAAhJ,KAAAiJ,GAAA,QAAA,IACvDJ,EACFH,OAAAA,GAEAA,EAAmB,IAAIG,EAAyBN,IAC/BW,KAAaX,EAAME,EAAQD,QAAAA,IAE1CA,GACyB,QAAzBW,QAAyBR,YAAiB,IAAAnD,EAAAA,EAAA4D,EAAAC,KAAA,IAAIb,GAC9CE,EAEDD,EAAiCG,KAAcF,QAG3BvQ,IAArBuQ,IACFhQ,EAAQ4P,EACNC,EACAG,EAAiBY,KAAUf,EAAO7P,EAA0BG,QAC5D6P,EACAF,IAGG9P,CACT,CAMA,MAAM6Q,EAWJ/R,YAAYgS,EAAoBf,GAPhC7Q,KAAM6R,EAA4B,GAKlC7R,KAAwB8R,UAAyBvR,EAG/CP,KAAK+R,KAAaH,EAClB5R,KAAKgS,KAAWnB,CACjB,CAGGoB,iBACF,OAAOjS,KAAKgS,KAASC,UACtB,CAGGC,WACF,OAAOlS,KAAKgS,KAASE,IACtB,CAIDC,EAAO1M,GAAAA,IAAAA,GAEHqJ,IAAIE,QAACA,GACLN,MAAOA,GACL1O,KAAK+R,KACHK,GAAsC,QAA1BtN,EAAAA,MAAAA,OAAAA,EAAAA,EAASuN,qBAAiB,IAAAxK,EAAAA,EAAA2J,KAAGc,WAAWtD,GAAS,GACnExB,EAAOuB,YAAcqD,EAOrB,IALA,IAAI3D,EAAOjB,EAAO8B,WACdX,EAAY,EACZ4D,EAAY,EACZC,EAAe9D,EAAM,QAEzB,IAAO8D,GAA4B,CACjC,GAAI7D,IAAc6D,EAAavC,MAAO,CACpC,IAAIU,OAAAA,EA5qBO,IA6qBP6B,EAAaxP,KACf2N,EAAO,IAAI8B,EACThE,EACAA,EAAKiE,YACL1S,KACAyF,GAnrBW,IAqrBJ+M,EAAaxP,KACtB2N,EAAO,IAAI6B,EAAa9I,KACtB+E,EACA+D,EAAahN,KACbgN,EAAa1S,QACbE,KACAyF,GAtrBS,IAwrBF+M,EAAaxP,OACtB2N,EAAO,IAAIgC,EAAYlE,EAAqBzO,KAAMyF,IAEpDzF,KAAK6R,EAAO7M,KAAK2L,GACjB6B,EAAe9D,IAAQ6D,EACxB,CACG5D,KAAc6D,MAAcvC,OAAAA,EAAAA,EAAAA,SAC9BxB,EAAOjB,EAAO8B,WACdX,IAEH,CACD,OAAOyD,CACR,CAEDQ,EAAQ3R,GACN,IAAI4G,EAAI,EACR,IAAK,IAAM8I,KAAQ3Q,KAAK6R,OAAAA,IAClBlB,SASsCpQ,IAAnCoQ,EAAuB7Q,SACzB6Q,EAAuBkC,KAAW5R,EAAQ0P,EAAuB9I,GAIlEA,GAAM8I,EAAuB7Q,QAASU,OAAS,GAE/CmQ,EAAKkC,KAAW5R,EAAO4G,KAG3BA,GAEH,EAgDH,MAAM4K,EA4CJ7S,YACEkT,EACAC,EACAlC,EACApL,GAAAA,IAAAA,EA/COzF,KAAIgD,KAnxBI,EAqxBjBhD,KAAgBgT,KAAY1F,EA+B5BtN,KAAwB8R,UAAAA,EAgBtB9R,KAAKiT,KAAcH,EACnB9S,KAAKkT,KAAYH,EACjB/S,KAAKgS,KAAWnB,EAChB7Q,KAAKyF,QAAUA,EAIfzF,KAAKmT,KAAoC,QAApBrO,EAAO,MAAApB,OAAA,EAAP+B,EAASwC,mBAAAA,IAK/BoD,GAAAA,CAAA,CAtCG6G,WAAAA,IAAAA,EAAAA,EAIF,OAAuC,QAAhChK,EAAe,QAAfpD,OAAKkN,YAAU,IAAA3J,OAAA,EAAAA,EAAA+K,YAAA,aAAsBD,IAC7C,CAqDGlB,iBACF,IAAIA,EAAwBjS,KAAKiT,KAAahB,WACxCpB,EAAS7Q,KAAKgS,KAUpB,YARazR,IAAXsQ,GACwB,KAAxBoB,EAAW1C,WAKX0C,EAAcpB,EAAwCoB,YAEjDA,CACR,CAMGa,gBACF,OAAO9S,KAAKiT,IACb,CAMGF,cACF,OAAO/S,KAAKkT,IACb,CAEDL,KAAW/R,GAMTA,EAAQ4P,EAAiB1Q,KAAMc,EAN6Bd,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,MAOxDqM,EAAYvL,GAIVA,IAAUwM,GAAoB,MAATxM,GAA2B,KAAVA,GACpCd,KAAKgT,OAAqB1F,GAQ5BtN,KAAKqT,OAEPrT,KAAKgT,KAAmB1F,GACfxM,IAAUd,KAAKgT,MAAoBlS,IAAUsM,GACtDpN,KAAKsT,EAAYxS,QAGkCP,IAA3CO,EAAqCmM,WAC/CjN,KAAKuT,EAAsBzS,QAAAA,IACjBA,EAAeyO,SAgBzBvP,KAAKwT,EAAY1S,GACRwL,EAAWxL,GACpBd,KAAKyT,EAAgB3S,GAGrBd,KAAKsT,EAAYxS,EAEpB,CAEO4S,EAAwBjF,GAAoByE,IAAXS,yDAAM3T,KAAKkT,KAClD,OAAiBlT,KAAKiT,KAAahB,WAAa2B,aAAanF,EAAMkF,EACpE,CAEOH,EAAY1S,GACdd,KAAKgT,OAAqBlS,IAC5Bd,KAAKqT,OAmCLrT,KAAKgT,KAAmBhT,KAAK0T,EAAQ5S,GAExC,CAEOwS,EAAYxS,GAKhBd,KAAKgT,OAAqB1F,GAC1BjB,EAAYrM,KAAKgT,MAEChT,KAAKiT,KAAaP,YAarBnC,KAAOzP,EAqBpBd,KAAKwT,EAAYvH,IAAE4H,eAAe/S,IAStCd,KAAKgT,KAAmBlS,CACzB,CAEOyS,EACNpJ,GAAAA,IAAAA,GAGMlJ,OAACA,EAAQgM,WAAgBjK,GAAQmH,EAKjCyH,EACY,iBAAT5O,EACHhD,KAAK8T,KAAc3J,aAClBnH,EAAK8L,KACH9L,EAAK8L,GAAKN,EAASzM,cAAciB,EAAKwO,EAAGxR,KAAKyF,UACjDzC,GAEN,IAAiD,QAAA6E,EAA5C7H,KAAKgT,YAAuC,IAAAnL,OAAA,EAAAA,EAAAkM,QAAenC,EAS7D5R,KAAKgT,KAAsCJ,EAAQ3R,OAC/C,CACL,IAAM+S,EAAW,IAAIrC,EAAiBC,EAAsB5R,MACtDoS,EAAW4B,EAAS7B,EAAOnS,KAAKyF,SAUtCuO,EAASpB,EAAQ3R,GAUjBjB,KAAKwT,EAAYpB,GACjBpS,KAAKgT,KAAmBgB,CACzB,CACF,CAIDF,KAAc3J,GACZ,IAAIyH,EAAWrE,EAAc9M,IAAI0J,EAAOrK,SAIxC,YAHiBS,IAAbqR,GACFrE,EAAc5M,IAAIwJ,EAAOrK,QAAU8R,EAAW,IAAIpD,EAASrE,IAEtDyH,CACR,CAEO6B,EAAgB3S,GAWjBkG,EAAQhH,KAAKgT,QAChBhT,KAAKgT,KAAmB,GACxBhT,KAAKqT,QAKP,IAEIY,EAFEC,EAAYlU,KAAKgT,KACnBT,EAAY,EAGhB,IAAK,IAAM4B,KAAQrT,EACbyR,IAAc2B,EAAU1T,OAK1B0T,EAAUlP,KACPiP,EAAW,IAAIxB,EACdzS,KAAK0T,EAAQxH,OACblM,KAAK0T,EAAQxH,OACblM,KACAA,KAAKyF,UAKTwO,EAAWC,EAAU3B,GAEvB0B,EAASpB,KAAWsB,GACpB5B,IAGEA,EAAY2B,EAAU1T,SAExBR,KAAKqT,KACHY,GAAiBA,EAASf,KAAYR,YACtCH,GAGF2B,EAAU1T,OAAS+R,EAEtB,CAaDc,OAEEe,IAAAA,EADAC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA+BrU,KAAKiT,KAAaP,YACjD0B,EAAAA,UAAAA,OAAAA,EAAAA,UAAAA,QAAAA,EAGA,IADiC,QAAjCtP,OAAKwP,YAA4B,IAAA3S,GAAAA,EAAAyG,KAAApI,MAAA,GAAA,EAAaoU,GACvCC,GAASA,IAAUrU,KAAKkT,MAAW,CACxC,IAAM9B,EAASiD,EAAQ3B,YACjB2B,EAAoBlF,SAC1BkF,EAAQjD,CACT,CACF,CAQDmD,aAAatM,GAAAA,IAAAA,OAAAA,IACPjI,KAAKgS,OACPhS,KAAKmT,KAAgBlL,EACY,QAAjCnD,EAAKwP,KAAAA,YAAAA,IAORzM,GAAAA,EAAAO,KAAApI,KAAAqI,GAAA,EA2BH,MAAMgI,EAoCJzQ,YACE4U,EACAhP,EACA1F,EACA+Q,EACApL,GAxCOzF,KAAIgD,KAttCQ,EAsuCrBhD,KAAgBgT,KAA6B1F,EAM7CtN,KAAwB8R,YAoBtB9R,KAAKwU,QAAUA,EACfxU,KAAKwF,KAAOA,EACZxF,KAAKgS,KAAWnB,EAChB7Q,KAAKyF,QAAUA,EACX3F,EAAQU,OAAS,GAAoB,KAAfV,EAAQ,IAA4B,KAAfA,EAAQ,IACrDE,KAAKgT,KAAuB7P,MAAMrD,EAAQU,OAAS,GAAGiU,KAAK,IAAI1T,QAC/Df,KAAKF,QAAUA,GAEfE,KAAKgT,KAAmB1F,CAK3B,CA7BGgD,cACF,OAAOtQ,KAAKwU,QAAQlE,OACrB,CAGG4B,WACF,OAAOlS,KAAKgS,KAASE,IACtB,CA8CDW,KACE/R,GAGA4T,IAFAC,EAAmC3U,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,KACnC4U,EAAAA,UAAAA,OAAAA,EAAAA,UAAAA,QAAAA,EACAF,EAAAA,UAAAA,OAAAA,EAAAA,UAAAA,QAAAA,EAEM5U,EAAUE,KAAKF,QAGjB+U,GAAS,EAEb,QAAA,IAAI/U,EAEFgB,EAAQ4P,EAAiB1Q,KAAMc,EAAO6T,EAAiB,IACvDE,GACGxI,EAAYvL,IACZA,IAAUd,KAAKgT,MAAoBlS,IAAUsM,KAE9CpN,KAAKgT,KAAmBlS,OAErB,CAEL,IAGI+G,EAAGzG,EAHDH,EAASH,EAIf,IAHAA,EAAQhB,EAAQ,GAGX+H,EAAI,EAAGA,EAAI/H,EAAQU,OAAS,EAAGqH,KAClCzG,EAAIsP,EAAiB1Q,KAAMiB,EAAO2T,EAAc/M,GAAI8M,EAAiB9M,MAE3DuF,IAERhM,EAAKpB,KAAKgT,KAAoCnL,IAEhDgN,IAAAA,GACGxI,EAAYjL,IAAMA,IAAOpB,KAAKgT,KAAoCnL,IACjEzG,IAAMkM,EACRxM,EAAQwM,EACCxM,IAAUwM,IACnBxM,IAAUM,MAAK0T,EAAAA,EAAA,IAAMhV,EAAQ+H,EAAI,IAIlC7H,KAAKgT,KAAoCnL,GAAKzG,CAElD,CACGyT,IAAWH,GACb1U,KAAK+U,EAAajU,EAErB,CAGDiU,EAAajU,GACPA,IAAUwM,EACNtN,KAAKwU,QAAqB/K,gBAAgBzJ,KAAKwF,MAmB/CxF,KAAKwU,QAAqBtS,aAC9BlC,KAAKwF,KACJ1E,MAAAA,EAAAA,EAAS,GAGf,EAIH,MAAMoP,UAAqBG,EAA3BzQ,cAAAA,SACoBI,WAAAA,KAAIgD,KAr3CF,CA64CrB,CArBU+R,EAAajU,GAmBnBd,KAAKwU,QAAgBxU,KAAKwF,MAAQ1E,IAAUwM,OAAAA,EAAsBxM,CACpE,EAOH,IAAM4B,EAAiCD,IAClCA,IAAaE,YACd,GAGJ,MAAMwN,UAA6BE,EAAnCzQ,cAAAA,SACoBI,WAAAA,KAAIgD,KAx5CO,CA46C9B,CAjBU+R,EAAajU,GAQhBA,GAASA,IAAUwM,EACftN,KAAKwU,QAAqBtS,aAC9BlC,KAAKwF,KACL9C,GAGI1C,KAAKwU,QAAqB/K,gBAAgBzJ,KAAKwF,KAExD,EAkBH,MAAM4K,UAAkBC,EAGtBzQ,YACE4U,EACAhP,EACA1F,EACA+Q,EACApL,GAEArB,MAAMoQ,EAAShP,EAAM1F,EAAS+Q,EAAQpL,GATtBzF,KAAIgD,KA77CL,CA+8ChB,CAKQ6P,KACPmC,GACmChV,IAAAA,EAInC,IAFAgV,EAC6D,QAA3DlQ,EAAiB9E,EAAAA,KAAMgV,EAHUhV,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,KAGoB,UAAA,aACnCoN,EAApB,CAGA,IAAM6H,EAAcjV,KAAKgT,KAInBkC,EACHF,IAAgB1H,GAAW2H,IAAgB3H,GAC3C0H,EAAyCG,UACvCF,EAAyCE,SAC3CH,EAAyCI,OACvCH,EAAyCG,MAC3CJ,EAAyCK,UACvCJ,EAAyCI,QAIxCC,EACJN,IAAgB1H,IACf2H,IAAgB3H,GAAW4H,GAY1BA,GACFlV,KAAKwU,QAAQe,oBACXvV,KAAKwF,KACLxF,KACAiV,GAGAK,GAIFtV,KAAKwU,QAAQgB,iBACXxV,KAAKwF,KACLxF,KACAgV,GAGJhV,KAAKgT,KAAmBgC,CAhDtB,CAiDH,CAEDS,YAAYC,GAAAA,IAAAA,EAAAA,EAC2B,mBAA1B1V,KAAKgT,KACdhT,KAAKgT,KAAiB5K,KAAAA,QAAKF,EAAc,QAAdlI,EAAAA,KAAKyF,eAAS,IAAAoC,OAAA,EAAAA,EAAA8N,YAAA,IAAAhU,EAAAA,EAAQ3B,KAAKwU,QAASkB,GAE9D1V,KAAKgT,KAAyCyC,YAAYC,EAE9D,EAIH,MAAM/C,EAiBJ/S,YACS4U,EACP3D,EACApL,GAFOzF,KAAOwU,QAAPA,EAjBAxU,KAAIgD,KAxhDM,EAoiDnBhD,KAAwB8R,UAAyBvR,EAS/CP,KAAKgS,KAAWnB,EAChB7Q,KAAKyF,QAAUA,CAChB,CAGGyM,WACF,OAAOlS,KAAKgS,KAASE,IACtB,CAEDW,KAAW/R,GAOT4P,EAAiB1Q,KAAMc,EACxB,EAqBU,IAAO8U,EAAA,CAElBC,EA7sD2B,QA8sD3BC,EAASnK,IACToK,EAAchK,IACdiK,EApmDkB,EAqmDlBC,EAAkBvI,EAElBwI,EAAmBvE,EACnBwE,EAAa7J,EACb8J,EAAmB1F,EAEnB2F,EAAY5D,EACZ6D,EAAgBjG,EAChBkG,EAAuBpG,EACvBqG,EAAYpG,EACZqG,EAAevG,EACfwG,EAAc/D,GAIV/P,EAEF9D,IAAO6X,uBACX/T,MAAkB4L,GAAAA,EAAAA,EAAUiE,IAIL,QAAvBnH,IAACxM,IAAO8X,2BAAP9X,IAAAA,IAAAA,IAAO8X,gBAAoB,IAAI5R,KAAK,SAkCxB,IAAS6R,EAAA,CACpB/V,EACAgW,EACArR,KAAAA,IAAAA,EAAAA,EAUMsR,EAAyC,QAAzBjS,EAAAA,MAAAA,OAAAA,EAAAA,EAASkS,oBAAgB,IAAAtT,EAAAA,EAAAmE,EAG3C8I,EAAmBoG,EAAkCE,WASzD,QAAA,IAAItG,EAAoB,CACtB,IAAMoC,EAAmC,QAAzB7K,EAAAA,MAAAA,OAAAA,EAAAA,EAAS8O,oBAAgB,IAAA3L,EAAAA,EAAA,KAGxC0L,EAAkCE,WAAItG,EAAO,IAAI8B,EAChDqE,EAAUlD,aAAa1H,MAAgB6G,GACvCA,OAAAA,EAEAtN,MAAAA,EAAAA,EAAW,CAAA,EAEd,CAUD,OATAkL,EAAKkC,KAAW/R,GAST6P,CAAgB,UC9iEZuG,EAAkBhT;;;;;KA+BzB,MAAOiT,UAAmBjT,IAAhCtE,cAAAA,SAAAA,WAgBWI,KAA+BoX,cAAA,CAACzB,KAAM3V,MAEvCA,KAAWqX,WA8FpB,CAzFoB1O,mBAAAA,IAAAA,EAAAA,EACXpH,EAAa6C,MAAMuE,mBAOzB,OADmB,QAAnB7D,GAAKsS,EAAAA,KAAAA,eAAcJ,oBAAiBzV,IAAAA,IAAAA,EAAAA,aAAAA,EAAY2N,YACzC3N,CACR,CASkBmJ,OAAOH,GAIxB,IAAMzJ,EAAQd,KAAKsX,SACdtX,KAAKwE,aACRxE,KAAKoX,cAAcnP,YAAcjI,KAAKiI,aAExC7D,MAAMsG,OAAOH,GACbvK,KAAKqX,KAAcC,EAAOxW,EAAOd,KAAKuB,WAAYvB,KAAKoX,cACxD,CAsBQrO,oBAAAA,IAAAA,EACP3E,MAAM2E,oBACU,QAAhBjE,EAAAA,KAAKuS,YAAW,IAAAhP,GAAAA,EAAEkM,gBACnB,CAqBQrL,uBAAAA,IAAAA,EACP9E,MAAM8E,uBACU,QAAhBpE,EAAAA,KAAKuS,YAAW,IAAAhP,GAAAA,EAAEkM,gBACnB,CASS+C,SACR,OAAOlK,CACR,EAvGyB+J,EAAY9Q,WAAAA,EAG/B8Q,EAAgBI,eAAAA,EAwGU,QAAnCrP,IAAAA,WAAWsP,oCAA2B5J,KAAAA,IAAAxF,KAAAqP,WAAA,CAACN,WAAAA,IAGvC,IAAMvU,IAEF6U,WAAWC,0BACf9U,MAAkBwO,KAAAA,IAAA,CAAC+F,WAAAA,IAkDN,IAAO3F,EAAA,CAClBlI,KAAuB,CACrBwF,EACAtJ,EACA1E,KAGCgO,EAAWxF,KAAsB9D,EAAM1E,EAAM,EAGhD6G,KAAsBmH,GAAoBA,EAAWnH,OAKzB,QAA9B4J,IAACkG,WAAWE,0BAAAA,YAAXF,WAAWE,mBAAuB,IAAI3S,KAAK;;;;;;AC/R5C,IAUa4S,KAVK,EC8CLC,IACVvH,GACAwH,GAC8B,mBAAtBA,EA3CiB,EAACxH,EAAiByH,KAC5CC,eAAeC,OAAO3H,EAASyH,GAOxBA,GARmB,CA4CAzH,EAASwH,GAjCP,EAC5BxH,EACAxK,KAEA,IAAMoS,KAACA,EAAIC,SAAEA,GAAYrS,EACzB,MAAO,CACLoS,KAAAA,EACAC,SAAAA,EAEAC,SAASL,GACPC,eAAeC,OAAO3H,EAASyH,EAChC,EACF,EAZ2B,CAkCAzH,EAASwH;;;;;MCjDjCO,IAAmB,CACvB5S,EACA+O,IAMmB,WAAjBA,EAAQ0D,MACR1D,EAAQ1O,cACN,UAAW0O,EAAQ1O,YAGhB0O,eAAAA,eAAAA,GAAAA,GAAAA,GAAAA,CACH4D,SAASL,GACPA,EAAMlR,eAAe2N,EAAQ3O,IAAKJ,EACnC,IAMI,CACLyS,KAAM,QACNrS,IAAKrG,SACL8Y,UAAW,MACXxS,WAAY,CAAE,EAEdyS,YAAa/D,EAAQ3O,IAUrBjB,cACqC,mBAAxB4P,EAAQ5P,cACjB5E,KAAKwU,EAAQ3O,KAAiB2O,EAAQ5P,YAAYwD,KAAKpI,MAE1D,EACDoY,SAASL,GACPA,EAAMlR,eAAe2N,EAAQ3O,IAAKJ,EACnC;;;;;KA6CD,SAAU+S,IAAS/S,GAEvB,MAAO,CAACgT,EAA0CjT,SAAAA,IAChDA,EA3CmB,EACrBC,EACAiT,EACAlT,KAECkT,EAAM9Y,YAAuCiH,eAAerB,EAAMC,EAAQ,EALtD,CA4CAA,EAAUgT,EAA6BjT,GACtD6S,IAAiB5S,EAAUgT,EACnC;;;;;KC7EM,SAAU/S,IAAMD,GACpB,OAAO+S,IACF/S,eAAAA,eAAAA,CAAAA,EAAAA,GAAAA,GAAAA,CACHC,OAAO,IAEX;;;;;KCRa,IAAwBhC,IAAA,CACnCoC,EACA4S,EACAlT,KAEAtC,OAAO8C,eAAe0S,EAAOlT,EAAMM,EAAW,EAGnC6S,EAA0B,CACrC7S,EACA0O,KACI,CACJ0D,KAAM,SACNI,UAAW,YACXzS,IAAK2O,EAAQ3O,IACbC,WAAAA,IAgBW8S,IACXC,IAAA,IACET,SAAAA,EACAtS,WAAAA,GAAAA,EAAAA,MAOF,CACE2S,EACAjT,KAAAA,IAAAA,EAKA,QAAA,IAAIA,EAQG,CAGL,IAAMK,EAEJf,QAAAA,EAAC2T,EAA0BF,mBAAAA,IAAAA,EAAAA,EAC1BE,EAAmC5S,IAChCiT,EACUvY,MAAduF,EACI,CACEoS,KAAM,SACNI,UAAW,YACXzS,IAAAA,EACAC,WAAYA,EAAY2S,EAAmC5S,MAExD4S,eAAAA,eAAAA,CAAAA,EAAAA,GAAAA,CAAAA,EAAAA,CAAoC5S,IAAAA,IAQ/C,OAPgBtF,MAAZ6X,IACFU,EAAKV,SAAW,SACd1O,GAEA0O,EAAS1O,EAA2C7D,EACtD,GAEKiT,CACR,CA/BC,IAAMpP,EAAQ+O,EACX7Y,iBAAAA,IACCkG,GACF5C,OAAO8C,eAAeyS,EAAmBjT,EAAMM,EAAWN,IAE5D4S,MAAW1O,GAAAA,EAAAA,EAAMlE,EAElB,CAwBA;;;;;KCjEC,SAAUuT,IAAatT,GAC3B,OAAOmT,IAAiB,CACtBR,SAAU,CAAC1O,EAA8BlE,KACvCtC,OAAO8V,OAELtP,EAAKrK,UAAUmG,GACfC,EACD,GAGP;;;;;KCfgB,SAAAoC,EAAMoR,EAAkBC,GACtC,OAAON,IAAiB,CACtB9S,WAAaN,IACX,IAAMM,EAAa,CACjBrF,MAAAA,IAAAA,EAAAA,EACE,OAAmD,QAA5CyH,EAAe,QAAfpD,EAAAA,KAAKvD,sBAAY4X,OAAAA,EAAAA,EAAAA,cAAcF,cACvC7H,EAAAA,EAAA,IAAA,EACDhL,YAAY,EACZD,cAAc,GAEhB,GAAI+S,EAAO,CACT,IAAMrT,EAAsB,iBAATL,EAAoBhG,SAAW,KAAKgG,EACvDM,EAAWrF,IAAM,WAAA,IAAA4K,EAAAhD,EAUf,YAAA,IARGrI,KACC6F,KAGD7F,KACC6F,GAC0C,QAAxCqC,EAAe,QAAAmD,EAAfrL,KAAKuB,kBAAAA,eAAY4X,cAAcF,UAAAA,IAAa5Q,EAAAA,EAAA,MAE1CrI,KACN6F,GAGL,CACD,OAAOC,CAAU,GAGvB;;;;;KC/BM,SAAUsT,IAASH,GACvB,OAAOL,IAAiB,CACtB9S,WAAauT,IAAwB,CACnC5Y,MAAAA,IAAAA,EAAAA,EACE,OAAsD,QAA/CyH,EAAe,QAAfpD,EAAAA,KAAKvD,sBAAY+X,OAAAA,EAAAA,EAAAA,iBAAiBL,cAC1C5N,EAAAA,EAAA,EAAA,EACDjF,YAAY,EACZD,cAAc,KAGpB;;;;;KCGM,SAAUoT,IAAWN,GACzB,OAAOL,IAAiB,CACtB9S,WAAauT,IAAwB,CACnCpP,MAAAA,IAAAA,EAAAA,KAAAA,OAAAA,mBAAAA,YAAAA,IAAAA,EAEE,aADMjK,EAAKiL,eAAAA,QACJnG,EAAKvD,EAAAA,kBAAAA,IAAAA,OAAAA,EAAAA,EAAY4X,cAAcF,EACvC,GAHDhP,EAGC,EACD7D,YAAY,EACZD,cAAc,KAGpB;;;;;KC7CA,IAKMqT,EACkD,OAAhC,QAAtB1U,EANsC/F,OAM/B0a,2BAAiBpa,OAAAA,EAAAA,EAAAA,UAAUqa,kBAC9B,CAACC,EAAuBC,IACtBD,EAAKD,iBAAiBE,GACxB,CAACD,EAAuBC,IACtBD,EACGE,cAAcD,GACdE,QACErL,GAA0BA,EAAKc,WAAawK,KAAKC,eA8CxD,SAAUC,EAAsBxU,GACpC,IAAMkU,KAACA,EAAIV,SAAEA,GAAYxT,MAAW2L,EAAAA,EAAA,GACpC,OAAOwH,IAAiB,CACtB9S,WAAauT,IAAwB,CACnC5Y,MAAAA,IAAAA,EACQyZ,EAAe,QAAOP,EAAAA,SAAAA,OAAgBA,EAAU,KAAA,gBAChDQ,EACW,QAAfrV,EAAAA,KAAKvD,kBAAU,IAAA8J,OAAA,EAAAA,EAAE8N,cAA+Be,GAC5C/B,EACM,MAAVgC,EAAiBX,EAAqBW,EAAQ1U,GAAW,GAC3D,OAAIwT,EACKd,EAAS2B,QAAQrL,GAASA,EAAK2L,QAAQnB,KAEzCd,CACR,EACD/R,YAAY,EACZD,cAAc,KAGpB;;;;;KCMgBkU,SAAAA,EACdC,EACAC,EACAtB,GAGA,IACIuB,EADAb,EAAOW,EAWX,MAT6B,iBAAlBA,GACTX,EAAOW,EAAcX,KACrBa,EAAuBF,GAEvBE,EAAuB,CAACD,QAAAA,GAKtBtB,EACKgB,EAAsB,CAC3BN,KAAMA,EACNY,QAAAA,EACAtB,SAAAA,IAIGL,IAAiB,CACtB9S,WAAauT,IAAwB,CACnC5Y,MAAAA,IAAAA,EAAAA,EACQyZ,EAAe,QAAOP,EAAAA,SAAAA,OAAgBA,EAAU,KAAA,gBAChDQ,EACW,QAAfrV,EAAAA,KAAKvD,kBAAU,IAAAmC,OAAA,EAAAA,EAAEyV,cAA+Be,GAClD,OAAkD,QAA3ChS,EAAAA,MAAAA,OAAAA,EAAAA,EAAQ2R,cAAcW,UAAAA,QAAyB,EACvD,EACDpU,YAAY,EACZD,cAAc,KAGpB,6mCC5IuC,IAAkBsU,QAAnC,oBAALC,YAAwCD,QAI/C,WAER,IAAIE,MAAQ,6BACRC,aAAe,GACFC,eAAG,EACGC,qBAAI,OAEXC,aAAG,SAAsBC,GACvCH,gBAAkBG,CACtB,EAEkBC,aAAG,WACjB,OAAOJ,aACX,EAEMK,gBAAkB,SAAyBpa,GAC7C8Z,aAAe9Z,CACnB,kBAEwB,WACpB,OAAmB8Z,YACvB,EAEE,mBAAmB5X,GAEjB,OAAelB,SAACC,cAAciB,EAC/B,CAED,SAASmY,gBAAgBC,EAASC,GAChC,IAAIxT,EAEAyT,EADGC,EAAGH,EAAQ5a,OAGlB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAGxB,IAAK,IAAQxC,KAFbiW,EAAkBF,EAAQvT,GAAGxI,UAGvB6D,OAAO7D,UAAUuG,eAAewC,KAAKkT,EAAiBjW,KAAOgW,EAAYhc,UAAUgG,GAAQiW,EAAgBjW,GAGpH,CAED,SAAsBmW,cAACC,EAAQC,GAC7B,OAAOxY,OAAOyY,yBAAyBF,EAAQC,EAChD,CAED,SAA4BE,oBAACvc,GAC3B,SAAsBwc,IAAG,CAGzB,OADAA,EAAcxc,UAAYA,EACnBwc,CACR,CAGD,IAA0BC,uBAAG,WAC3B,SAAwBC,EAACC,GACvBhc,KAAKic,OAAS,GACdjc,KAAKgc,aAAeA,EACpBhc,KAAKkc,QAAU,EACflc,KAAKmc,UAAW,CACjB,CAoFD,OAlFAJ,EAAgB1c,UAAY,CAC1B+c,SAAU,SAAkBC,GAC1Brc,KAAKic,OAAOjX,KAAKqX,EAClB,EACDC,MAAO,WACL,IAAIzU,IACM7H,KAAKic,OAAOzb,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKic,OAAOpU,GAAGyU,OAElB,EACDC,OAAQ,WACN,IAAK1U,EACD0T,EAAMvb,KAAKic,OAAOzb,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKic,OAAOpU,GAAG0U,QAElB,EACDC,QAAS,SAAiBC,GACxB,IAAI5U,IACM7H,KAAKic,OAAOzb,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKic,OAAOpU,GAAG2U,QAAQC,EAE1B,EACDC,YAAa,SAAqBC,GAChC,OAAI3c,KAAKgc,aACIhc,KAACgc,aAAaW,GAGvB5d,OAAO6d,KACF,IAAU7d,OAAC6d,KAAK,CACrBC,IAAK,CAACF,KAIH,CACLG,WAAW,EACXC,KAAM,WACJ/c,KAAK8c,WAAY,CAClB,EACDE,KAAM,WACJhd,KAAK8c,WAAY,CAClB,EACDG,QAAS,WAAqB,EAC9BC,KAAM,WAAkB,EACxBC,UAAW,WACrB,EACO,EACDC,gBAAiB,SAAyBpB,GACxChc,KAAKgc,aAAeA,CACrB,EACDmB,UAAW,SAAmBrc,GAC5Bd,KAAKkc,QAAUpb,EAEfd,KAAKqd,eACN,EACDC,KAAM,WACJtd,KAAKmc,UAAW,EAEhBnc,KAAKqd,eACN,EACDE,OAAQ,WACNvd,KAAKmc,UAAW,EAEhBnc,KAAKqd,eACN,EACDG,UAAW,WACT,OAAOxd,KAAKkc,OACb,EACDmB,cAAe,WACb,IAAKxV,EACD0T,EAAMvb,KAAKic,OAAOzb,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKic,OAAOpU,GAAG4V,OAAOzd,KAAKkc,SAAWlc,KAAKmc,SAAW,EAAI,GAE7D,GAEgB,WACjB,OAAO,IAAmBJ,CAChC,CACA,CA7F+B,GA+FT2B,iBAAG,WACrB,SAA2BC,EAAC3a,EAAMuY,GAChC,IAEIza,EAFC+G,EAAG,EACJ+V,EAAM,GAGV,OAAQ5a,GACN,IAAK,QACL,IAAK,SACHlC,EAAQ,EACR,MAEF,QACEA,EAAQ,IAIZ,IAAK+G,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+V,EAAI5Y,KAAKlE,GAGX,OAAO8c,CACR,CAkBD,MAAiC,sCAAsC,mBAALC,aAhBlE,SAAiC7a,EAAMuY,GACrC,MAAa,YAATvY,EACS6a,IAAAA,aAAatC,GAGb,UAATvY,EACS8a,IAAAA,WAAWvC,GAGX,WAATvY,EACS+a,IAAAA,kBAAkBxC,GAGxBoC,EAAmB3a,EAAMuY,EACjC,EAMMoC,CACX,CA7CyB,GA+CvB,SAAyBK,iBAACzC,GACxB,OAAOpY,MAAM8a,MAAM,KAAM,CACvBzd,OAAQ+a,GAEX,CAED,SAAkB2C,UAACC,GAAuV,OAA1OD,UAArD,mBAAL1e,QAA8C,iBAAdA,OAAC+M,SAAqC,SAAiB4R,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAOA,GAAyB,2BAAcA,EAAIve,cAAgBJ,QAAU2e,IAAQ3e,OAAOH,UAAY,iBAAsB,EAAa6e,UAAUC,EAAO,CAClY,IAAIC,iBAAkB,oBACE,2BACI,gBACX,GACLC,SAAG,iCAAiCjQ,KAAKsM,UAAU4D,WAC3DC,oBAAqB,EACrBC,MAAQ5S,KAAK6S,IACbC,OAAS9S,KAAK+S,KACdC,QAAUhT,KAAKiT,MACfC,MAAQlT,KAAKmT,IACbC,MAAQpT,KAAKqT,IACbC,OAAS,CAAA,EAYb,SAASC,qBACP,MAAO,CAAA,CACR,EAZD,WACE,IACItX,EADAuX,EAAgB,CAAC,MAAO,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,QAAS,QAAS,MAAO,OAAQ,MAAO,QAAS,SAAU,QAAS,OAAQ,MAAO,QAAS,OAAQ,QAAS,MAAO,MAAO,MAAO,SAAU,QAAS,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,IAAK,OAAQ,MAAO,SAAU,QAAS,KAAM,UAAW,SAExW7D,EAAM6D,EAAc5e,OAExB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBqX,OAAOE,EAAcvX,IAAM+D,KAAKwT,EAAcvX,GAEjD,CARD,GAcAqX,OAAOrT,OAASD,KAAKC,OAErBqT,OAAOG,IAAM,SAAUC,GAGrB,GAAe,WAFFpB,UAAUoB,IAEIA,EAAI9e,OAAQ,CACrC,IACIqH,EADM0X,EAAGvB,iBAAiBsB,EAAI9e,QAE9B+a,EAAM+D,EAAI9e,OAEd,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB0X,EAAO1X,GAAK+D,KAAKyT,IAAIC,EAAIzX,IAG3B,OAAa0X,CACd,CAED,YAAYF,IAAIC,EACpB,EAEE,IAAwBE,qBAAG,IACvBC,UAAY7T,KAAK8T,GAAK,IACtBC,YAAc,MAElB,SAASC,YAAY5E,GACnBuD,qBAAuBvD,CACxB,CAED,SAAc6E,MAAC/e,GACb,OAAIyd,mBACK3S,KAAKkU,MAAMhf,GAGbA,CACR,CAED,SAAiBif,SAACvL,GAChBA,EAAQ3S,MAAMme,SAAW,WACzBxL,EAAQ3S,MAAMoe,IAAM,EACpBzL,EAAQ3S,MAAMqe,KAAO,EACrB1L,EAAQ3S,MAAMse,QAAU,QACxB3L,EAAQ3S,MAAMue,gBAAkB,MAChC5L,EAAQ3S,MAAMwe,sBAAwB,MACtC7L,EAAQ3S,MAAMye,mBAAqB,UACnC9L,EAAQ3S,MAAM0e,yBAA2B,UACzC/L,EAAQ3S,MAAM2e,eAAiB,cAC/BhM,EAAQ3S,MAAM4e,qBAAuB,cACrCjM,EAAQ3S,MAAM6e,kBAAoB,aACnC,CAED,SAASC,kBAAkB3d,EAAM4d,EAAaC,EAAWC,GACvD9gB,KAAKgD,KAAOA,EACZhD,KAAK4gB,YAAcA,EACnB5gB,KAAK6gB,UAAYA,EACjB7gB,KAAK+gB,UAAYD,EAAkB,GAAK,EAAI,CAC7C,CAED,yBAAyB9d,EAAM8d,GAC7B9gB,KAAKgD,KAAOA,EACZhD,KAAK+gB,UAAYD,EAAkB,GAAK,EAAI,CAC7C,CAED,6BAA6B9d,EAAMge,EAAYC,EAAaH,GAC1D9gB,KAAKgD,KAAOA,EACZhD,KAAKihB,YAAcA,EACnBjhB,KAAKghB,WAAaA,EAClBhhB,KAAK+gB,UAAYD,EAAkB,GAAK,EAAI,CAC7C,CAED,SAA4BI,oBAACle,EAAMme,EAAYC,GAC7CphB,KAAKgD,KAAOA,EACZhD,KAAKmhB,WAAaA,EAClBnhB,KAAKohB,YAAcA,CACpB,CAED,SAASC,eAAere,EAAMse,GAC5BthB,KAAKgD,KAAOA,EACZhD,KAAKshB,OAASA,CACf,CAED,SAASC,wBAAwBC,EAAaZ,GAC5C5gB,KAAKgD,KAAO,mBACZhD,KAAKwhB,YAAcA,EACnBxhB,KAAK4gB,YAAcA,CACpB,CAED,SAA2Ba,mBAACD,GAC1BxhB,KAAKgD,KAAO,cACZhD,KAAKwhB,YAAcA,CACpB,CAED,SAAoCE,4BAAC1e,EAAMwe,GACzCxhB,KAAKgD,KAAOA,EACZhD,KAAKwhB,YAAcA,CACpB,CAED,IAAIG,wBACW,aAGX,OAAOC,WAAa,qBADpBC,QAAU,EAEhB,UAGE,SAASC,SAAStQ,EAAG7P,EAAGP,GACtB,IAAKiQ,EACA0Q,EACDC,EACAna,IAECzC,EACD6c,IAQJ,OAJA7c,EAAIhE,GAAK,EAAIO,GACbsgB,EAAI7gB,GAAK,GAFT8gB,EAAQ,EAAJ1Q,GADJ3J,EAAI+D,KAAKiT,MAAU,EAAJrN,KAGE7P,GACjB0G,EAAIjH,GAAK,GAAK,EAAI8gB,GAAKvgB,GAEfkG,EAAI,GACV,KAAM,EACJwJ,EAAIjQ,EACJ2gB,EAAI1Z,EACJ2Z,EAAI5c,EACJ,MAEF,KAAM,EACJiM,EAAI4Q,EACJF,EAAI3gB,EACJ4gB,EAAI5c,EACJ,MAEF,KAAM,EACJiM,EAAIjM,EACJ2c,EAAI3gB,EACJ4gB,EAAI3Z,EACJ,MAEF,KAAM,EACJgJ,EAAIjM,EACJ2c,EAAIE,EACJD,EAAI5gB,EACJ,MAEF,KAAK,EACHiQ,EAAIhJ,EACJ0Z,EAAI3c,EACJ4c,EAAI5gB,EACJ,MAEF,KAAM,EACJiQ,EAAIjQ,EACJ2gB,EAAI3c,EACJ4c,EAAIC,EAOR,MAAO,CAAC5Q,EAAG0Q,EAAGC,EACf,CAED,SAAiBG,SAAC9Q,EAAG0Q,EAAGC,GACtB,IAGKxQ,EAHEuN,EAAGnT,KAAKmT,IAAI1N,EAAG0Q,EAAGC,GACrB/C,EAAMrT,KAAKqT,IAAI5N,EAAG0Q,EAAGC,GACrB/V,EAAI8S,EAAME,EAEVtd,EAAY,IAARod,EAAY,EAAI9S,EAAI8S,EACxB3d,EAAI2d,EAAM,IAEd,OAAQA,GACN,OACEvN,EAAI,EACJ,MAEF,KAAMH,EACJG,EAAIuQ,EAAIC,EAAI/V,GAAK8V,EAAIC,EAAI,EAAI,GAC7BxQ,GAAK,EAAIvF,EACT,MAEF,KAAK8V,EACHvQ,EAAIwQ,EAAI3Q,EAAQ,EAAJpF,EACZuF,GAAK,EAAIvF,EACT,MAEF,KAAM+V,EACJxQ,EAAIH,EAAI0Q,EAAQ,EAAJ9V,EACZuF,GAAK,EAAIvF,EAOb,MAAO,CAACuF,EAAG7P,EAAGP,EACf,CAED,SAA2BghB,mBAACC,EAAOC,GACjC,IAAIC,EAAMJ,SAAoB,IAAXE,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAENC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,IAAM,IACnBA,EAAI,GAAK,GAGJT,SAASS,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACrC,CAED,SAASC,mBAAmBH,EAAOC,GACjC,IAAIC,EAAMJ,SAAoB,IAAXE,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAENC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,GAAK,IAClBA,EAAI,GAAK,GAGJT,SAASS,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACrC,CAED,SAAoBE,YAACJ,EAAOC,GAC1B,IAAIC,EAAMJ,SAAoB,IAAXE,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAAS,IAEfC,EAAI,GAAK,EACXA,EAAI,IAAM,EACDA,EAAI,GAAK,IAClBA,EAAI,IAAM,GAGGT,SAACS,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACrC,CAED,IAAIG,SAAW,WACb,MAEOC,EAFHC,EAAW,GAIf,IAAK/a,EAAI,EAAGA,EAAI,IAAKA,GAAK,EACxB8a,EAAM9a,EAAEjH,SAAS,IACjBgiB,EAAS/a,GAAoB,IAAf8a,EAAIniB,OAAe,IAAMmiB,EAAMA,EAG/C,OAAiBtR,SAAAA,EAAG0Q,EAAGC,GAarB,OAZI3Q,EAAI,IACNA,EAAI,GAGF0Q,EAAI,IACNA,EAAI,GAGFC,EAAI,IACNA,EAAI,GAGC,IAAMY,EAASvR,GAAKuR,EAASb,GAAKa,EAASZ,EACxD,CACA,CAzBiB,sBA2BU,SAA4BhH,GACnDoD,kBAAoBpD,CACxB,EAEM6H,mBAAqB,WACvB,OAAsBzE,eAC1B,EAE0B0E,qBAAG,SAA8BhiB,GACvDiiB,kBAAoBjiB,CACxB,EAE0BkiB,qBAAG,WACzB,OAAwBD,iBAC5B,EAE6BE,wBAAG,SAAiCniB,GAC7DoiB,sBAAwBpiB,CAC5B,EAEMqiB,wBAA0B,WAC5B,OAAOD,qBACX,0BAEgC,SAAiCpiB,GAC7D0e,qBAAuB1e,CAC3B,EAE6BsiB,wBAAG,WAC5B,OAA2B5D,oBAC/B,EAEM6D,YAAc,SAAqBviB,GACrC8gB,WAAa9gB,CACjB,EAEMwiB,YAAc,WAChB,OAAO1B,UACX,EAEE,SAAS2B,SAASvgB,GAEhB,OAAOlB,SAAS0hB,gBAAgB7I,MAAO3X,EACxC,CAED,mBAAmBmb,GAAuV,OAA1OsF,UAArD,mBAALjkB,QAA8C,iBAAdA,OAAC+M,SAAqC,SAAiB4R,GAAO,cAAiBA,GAA0B,SAAiBA,GAAO,OAAUA,GAAsB,mBAAX3e,QAAyB2e,EAAIve,cAAgBJ,QAAU2e,IAAQ3e,OAAOH,UAAY,gBAAkB8e,CAAI,EAAasF,UAAUtF,EAAO,CAElY,IAAIuF,YAAc,WAChB,UAAiB,EACJC,EAAG,GAGDC,EAAG,CAChBC,UAAW,WAAuB,EAClCC,YAAa,SAAqBC,GAChCC,EAAS,CACPzT,KAAMwT,GAET,GAEYE,YAAG,CAChBH,YAAa,SAAqBvT,GAChCqT,EAAYC,UAAU,CACpBtT,KAAMA,GAET,GAiBH,aACO2T,IACHA,EAhBJ,SAAsBC,GACpB,GAAIplB,OAAOqlB,QAAUrlB,OAAOslB,MAAQpJ,eAAgB,CAClD,IAAIqJ,EAAO,IAAID,KAAK,CAAC,4CAA6CF,EAAGvjB,YAAa,CAChFoC,KAAM,oBAGJuhB,EAAMC,IAAIC,gBAAgBH,GAC9B,WAAiBF,OAACG,EACnB,CAGD,OADAP,EAAWG,EACJP,CACR,CAIoBc,EAAa,SAAqBhhB,GAknBjD,GA3EKugB,YAAYP,cACfO,YAAYP,YAviBd,WACE,SAAuBiB,EAACC,EAAQC,GAC9B,QAGIC,UADMF,EAAOpkB,OAMjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAGxB,GAAI,OAFJkd,EAAYH,EAAO/c,MAEOkd,EAAUC,UAAW,CAG7C,GAFAD,EAAUC,WAAY,EAElBD,EAAUE,QAAS,CACrB,MAAgBF,EAAUG,gBAG1B,IAFAC,EAAOC,EAAU5kB,OAEZskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzB,GAAIM,EAAUN,GAAGO,GAAGla,EAAEtD,EACpByd,EAA6BF,EAAUN,GAAGO,GAAGla,QAI7C,IAFAoa,EAAOH,EAAUN,GAAGO,GAAGla,EAAE3K,OAEpB2K,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACrBia,EAAUN,GAAGO,GAAGla,EAAEA,GAAGxJ,GACvB2jB,EAA6BF,EAAUN,GAAGO,GAAGla,EAAEA,GAAGxJ,EAAE,IAGlDyjB,EAAUN,GAAGO,GAAGla,EAAEA,GAAGzH,GACvB4hB,EAA6BF,EAAUN,GAAGO,GAAGla,EAAEA,GAAGzH,EAAE,GAK7D,CAEoB,IAAjBqhB,EAAUS,IACZT,EAAUH,OAASa,EAAeV,EAAUW,MAAOb,GACnDF,EAAeI,EAAUH,OAAQC,IACP,IAAjBE,EAAUS,GACnBG,EAAeZ,EAAUa,QACC,IAAjBb,EAAUS,IACnBK,EAAad,EAEhB,CAEJ,CA4CD,SAAuBU,EAACK,EAAIjB,GAC1B,IAAQkB,EAhBV,SAAkBD,EAAIjB,GAIpB,IAHA,IAAKhd,EAAG,EACD0T,EAAGsJ,EAAMrkB,OAETqH,EAAI0T,GAAK,CACd,GAAIsJ,EAAMhd,GAAGie,KAAOA,EAClB,SAAaje,GAGfA,GAAK,CACN,CAED,OAAO,IACR,CAGYme,CAASF,EAAIjB,GAExB,OAAIkB,EACGA,EAAKnB,OAAOqB,YAKLxiB,MAAML,KAAKC,UAAU0iB,EAAKnB,UAJpCmB,EAAKnB,OAAOqB,QAAS,EACdF,EAAKnB,QAML,IACZ,CAED,WAAwBhH,GACtB,IAAK/V,EAEAid,EACGK,EAER,IAAKtd,EAJK+V,EAAIpd,OAIC,EAAGqH,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd+V,EAAI/V,GAAG2d,GACT,GAAI5H,EAAI/V,GAAGqe,GAAG/a,EAAEtD,EACdyd,EAA6B1H,EAAI/V,GAAGqe,GAAG/a,QAIvC,IAFAga,EAAOvH,EAAI/V,GAAGqe,GAAG/a,EAAE3K,OAEdskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACrBlH,EAAI/V,GAAGqe,GAAG/a,EAAE2Z,GAAGnjB,GACjB2jB,EAA6B1H,EAAI/V,GAAGqe,GAAG/a,EAAE2Z,GAAGnjB,EAAE,IAG5Cic,EAAI/V,GAAGqe,GAAG/a,EAAE2Z,GAAGphB,GACjB4hB,EAA6B1H,EAAI/V,GAAGqe,GAAG/a,EAAE2Z,GAAGphB,EAAE,QAI7B,OAAdka,EAAI/V,GAAG2d,IAChBG,EAAe/H,EAAI/V,GAAGse,GAG3B,CAED,SAASb,EAA6BvB,GACpC,IAAKlc,EACE0T,EAAGwI,EAAKlc,EAAErH,OAEjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBkc,EAAKlc,EAAEA,GAAG,IAAMkc,EAAK3iB,EAAEyG,GAAG,GAC1Bkc,EAAKlc,EAAEA,GAAG,IAAMkc,EAAK3iB,EAAEyG,GAAG,GAC1Bkc,EAAK1Y,EAAExD,GAAG,IAAMkc,EAAK3iB,EAAEyG,GAAG,GAC1Bkc,EAAK1Y,EAAExD,GAAG,IAAMkc,EAAK3iB,EAAEyG,GAAG,EAE7B,CAED,WAAsBue,EAASC,GAC7B,IAAeC,EAAGD,EAAoBA,EAAkBtW,MAAM,KAAO,CAAC,IAAK,IAAK,KAEhF,OAAIqW,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,MAIzBA,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,MAIzBA,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,KAItB,MACR,CAED,IA2CoBG,EA3CPC,EAAG,WACd,IAAkBD,EAAG,CAAC,EAAG,EAAG,IAY5B,SAASE,EAAc7B,GACrB,IAAI/c,EAXmB6e,EACnBC,EAWApL,EAAMqJ,EAAOpkB,OAEjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACH,IAAjB+c,EAAO/c,GAAG2d,KAdZmB,YADmBD,EAgBH9B,EAAO/c,IAfEQ,EAAE4D,EAC/Bya,EAAUre,EAAE4D,EAAI,CACdd,EAAG,CAAC,CACFxJ,EAAGglB,EACHte,EAAG,KAcR,CAED,gBAAiBue,GACf,GAAIC,EAAaN,EAAgBK,EAAcxlB,KAC7CqlB,EAAcG,EAAchC,QAExBgC,EAAcE,QAAQ,CACxB,IAAIjf,EACA0T,EAAMqL,EAAcE,OAAOtmB,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB+e,EAAcE,OAAOjf,GAAG+c,QAC1B6B,EAAcG,EAAcE,OAAOjf,GAAG+c,OAG3C,CAEnB,CACA,CAxC4B,GA0CFmC,GACMR,EAAG,CAAC,EAAG,EAAG,IACrB,SAAUK,GACf,GAAIA,EAAcI,QAAUH,EAAaN,EAAgBK,EAAcxlB,GAAI,CACzE,IAAIyG,IACM+e,EAAcI,MAAMxmB,OAE9B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAC3B,IAAYof,EAAGL,EAAcI,MAAMnf,GAE/Bof,EAAS1W,MAAQ0W,EAAS1W,KAAKqV,SACjCD,EAAesB,EAAS1W,KAAKqV,QAC7BqB,EAAS1W,KAAK2W,GAAK,EACnBD,EAAS1W,KAAK4W,GAAK,MACnBF,EAAS1W,KAAK6W,GAAK,EACnBH,EAAS1W,KAAK8W,GAAK,EACnBJ,EAAS1W,KAAK2V,GAAK,CACjB9gB,EAAG,CACD+F,EAAG,CAAC,EAAG,GACPmc,EAAG,GAEL3lB,EAAG,CACDwJ,EAAG,CAAC,IAAK,KACTmc,EAAG,GAELA,EAAG,CACDnc,EAAG,CAAC,EAAG,GACPmc,EAAG,GAELjW,EAAG,CACDlG,EAAG,EACHmc,EAAG,GAELjc,EAAG,CACDF,EAAG,IACHmc,EAAG,IAIFV,EAAcI,MAAMnf,GAAGQ,IAC1B4e,EAAS1W,KAAKqV,OAAO5gB,KAAK,CACxBwgB,GAAI,OAENyB,EAAS1W,KAAKqV,OAAO,GAAGO,GAAGnhB,KAAK,CAC9BI,EAAG,CACD+F,EAAG,CAAC,EAAG,GACPmc,EAAG,GAEL3lB,EAAG,CACDwJ,EAAG,CAAC,IAAK,KACTmc,EAAG,GAELA,EAAG,CACDnc,EAAG,CAAC,EAAG,GACPmc,EAAG,GAELjW,EAAG,CACDlG,EAAG,EACHmc,EAAG,GAELjc,EAAG,CACDF,EAAG,IACHmc,EAAG,GAELC,GAAI,CACFpc,EAAG,EACHmc,EAAG,GAELE,GAAI,CACFrc,EAAG,EACHmc,EAAG,GAEL9B,GAAI,QAIX,CACF,CACjB,GAGmCiC,EAAG,WACxB,IAAkBlB,EAAG,CAAC,EAAG,EAAG,IA2B5B,SAASE,EAAc7B,GACrB,UACUA,EAAOpkB,OAEjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACH,IAAjB+c,EAAO/c,GAAG2d,cA3BU,mBA4BNZ,EAAO/c,GA9BFQ,EAAEjD,GAEPkiB,IAClBI,EAASJ,EAAI,CACXA,EAAG,EACHnc,EAAGuc,EAASJ,IAIU,iBAAPI,EAACtiB,IAClBsiB,EAAStiB,EAAI,CACXkiB,EAAG,EACHnc,EAAGuc,EAAStiB,IAIU,iBAAPsiB,EAACrW,IAClBqW,EAASrW,EAAI,CACXiW,EAAG,EACHnc,EAAGuc,EAASrW,IAcjB,CAED,OAAO,SAAUuV,GACf,GAAIC,EAAaN,EAAgBK,EAAcxlB,KAC7CqlB,EAAcG,EAAchC,QAExBgC,EAAcE,QAAQ,CACxB,IAAKjf,EACD0T,EAAMqL,EAAcE,OAAOtmB,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB+e,EAAcE,OAAOjf,GAAG+c,QAC1B6B,EAAcG,EAAcE,OAAOjf,GAAG+c,OAG3C,CAEnB,CACA,CAvDsC,GAyDX+C,EAAG,WAChB,IAAkBpB,EAAG,CAAC,EAAG,EAAG,GAE5B,SAASqB,EAAchC,GACrB,QAGQT,EAFD5J,EAAGqK,EAAOplB,OAIjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,GAAqB,OAAjB+d,EAAO/d,GAAG2d,GACZoC,EAAchC,EAAO/d,GAAGse,SACfP,GAAiB,OAAjBA,EAAO/d,GAAG2d,IAAgC,OAAjBI,EAAO/d,GAAG2d,GAC5C,GAAII,EAAO/d,GAAGmB,EAAEmC,GAAKya,EAAO/d,GAAGmB,EAAEmC,EAAE,GAAGtD,EAGpC,IAFAsd,EAAOS,EAAO/d,GAAGmB,EAAEmC,EAAE3K,OAEhBskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACrBc,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGnjB,IACnBikB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGnjB,EAAE,IAAM,IACzBikB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGnjB,EAAE,IAAM,IACzBikB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGnjB,EAAE,IAAM,IACzBikB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGnjB,EAAE,IAAM,KAGvBikB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGphB,IACnBkiB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGphB,EAAE,IAAM,IACzBkiB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGphB,EAAE,IAAM,IACzBkiB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGphB,EAAE,IAAM,IACzBkiB,EAAO/d,GAAGmB,EAAEmC,EAAE2Z,GAAGphB,EAAE,IAAM,UAI7BkiB,EAAO/d,GAAGmB,EAAEmC,EAAE,IAAM,IACpBya,EAAO/d,GAAGmB,EAAEmC,EAAE,IAAM,IACpBya,EAAO/d,GAAGmB,EAAEmC,EAAE,IAAM,IACpBya,EAAO/d,GAAGmB,EAAEmC,EAAE,IAAM,GAI3B,CAED,SAASsb,EAAc7B,GACrB,MACOrJ,EAAGqJ,EAAOpkB,OAEjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACH,IAAjB+c,EAAO/c,GAAG2d,IACZoC,EAAchD,EAAO/c,GAAG+d,OAG7B,CAED,OAAiBgB,SAAAA,GACf,GAAIC,EAAaN,EAAgBK,EAAcxlB,KAC7CqlB,EAAcG,EAAchC,QAExBgC,EAAcE,QAAQ,CACxB,IAAKjf,EACD0T,EAAMqL,EAAcE,OAAOtmB,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB+e,EAAcE,OAAOjf,GAAG+c,QAC1B6B,EAAcG,EAAcE,OAAOjf,GAAG+c,OAG3C,CAEnB,CACA,CApE8B,GAsEHiD,EAAG,WAChB,IAAkBtB,EAAG,CAAC,EAAG,EAAG,IAE5B,SAASuB,EAAsBlK,GAC7B,IAAI/V,EAEAid,EACAK,EAEJ,IAAKtd,EAJK+V,EAAIpd,OAIC,EAAGqH,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd+V,EAAI/V,GAAG2d,GACT,GAAI5H,EAAI/V,GAAGqe,GAAG/a,EAAEtD,EACd+V,EAAI/V,GAAGqe,GAAG/a,EAAEnC,EAAI4U,EAAI/V,GAAGkgB,YAIvB,IAFA5C,EAAOvH,EAAI/V,GAAGqe,GAAG/a,EAAE3K,OAEdskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACrBlH,EAAI/V,GAAGqe,GAAG/a,EAAE2Z,GAAGnjB,IACjBic,EAAI/V,GAAGqe,GAAG/a,EAAE2Z,GAAGnjB,EAAE,GAAGqH,EAAI4U,EAAI/V,GAAGkgB,QAG7BnK,EAAI/V,GAAGqe,GAAG/a,EAAE2Z,GAAGphB,IACjBka,EAAI/V,GAAGqe,GAAG/a,EAAE2Z,GAAGphB,EAAE,GAAGsF,EAAI4U,EAAI/V,GAAGkgB,YAId,OAAdnK,EAAI/V,GAAG2d,IAChBsC,EAAsBlK,EAAI/V,GAAGse,GAGlC,CAED,WAAuBvB,GACrB,IAAaG,EACTld,EAEAid,EACAK,EACAha,EACAoa,EAJAhK,EAAMqJ,EAAOpkB,OAMjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAG3B,IAFAkd,EAAYH,EAAO/c,IAELod,QAAS,CACrB,IAAIG,EAAYL,EAAUG,gBAG1B,IAFAC,EAAOC,EAAU5kB,OAEZskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzB,GAAIM,EAAUN,GAAGO,GAAGla,EAAEtD,EACpBud,EAAUN,GAAGO,GAAGla,EAAEnC,EAAIoc,EAAUN,GAAGkD,QAInC,IAFAzC,EAAOH,EAAUN,GAAGO,GAAGla,EAAE3K,OAEpB2K,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACrBia,EAAUN,GAAGO,GAAGla,EAAEA,GAAGxJ,IACvByjB,EAAUN,GAAGO,GAAGla,EAAEA,GAAGxJ,EAAE,GAAGqH,EAAIoc,EAAUN,GAAGkD,IAGzC5C,EAAUN,GAAGO,GAAGla,EAAEA,GAAGzH,IACvB0hB,EAAUN,GAAGO,GAAGla,EAAEA,GAAGzH,EAAE,GAAGsF,EAAIoc,EAAUN,GAAGkD,GAKpD,CAEoB,IAAjBjD,EAAUS,IACZsC,EAAsB/C,EAAUa,OAEnC,CACF,CAED,OAAO,SAAUgB,GACf,GAAIC,EAAaN,EAAgBK,EAAcxlB,KAC7CqlB,EAAcG,EAAchC,QAExBgC,EAAcE,QAAQ,CACxB,IAAIjf,IACM+e,EAAcE,OAAOtmB,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB+e,EAAcE,OAAOjf,GAAG+c,QAC1B6B,EAAcG,EAAcE,OAAOjf,GAAG+c,OAG3C,CAEnB,CACA,CAzF8B,GA0GlB,SAAqBiB,EAACtV,GACI,IAApBA,EAAKlI,EAAEif,EAAE9mB,UAA8B6H,EAAEjD,CAE9C,CAED,IAAI6iB,EAAW,CACfA,aArBA,SAAsBrB,GAChBA,EAAcsB,aAIlBP,EAAYf,GACZJ,EAAUI,GACVG,EAAWH,GACXa,EAAoBb,GACpBiB,EAAYjB,GACZjC,EAAeiC,EAAchC,OAAQgC,EAAcE,QA/drD,SAAuBE,EAAOF,GAC5B,GAAIE,EAAO,CACT,IAAInf,EAAI,EACD0T,EAAGyL,EAAMxmB,OAEhB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACL,IAAfmf,EAAMnf,GAAGQ,IAEX2e,EAAMnf,GAAG0I,KAAKqU,OAASa,EAAeuB,EAAMnf,GAAG0I,KAAKmV,MAAOoB,GAa3DnC,EAAeqC,EAAMnf,GAAG0I,KAAKqU,OAAQkC,GAG1C,CACF,CAucCqB,CAAcvB,EAAcI,MAAOJ,EAAcE,QACjDF,EAAcsB,YAAa,EAC5B,GAcD,OALAD,EAASN,YAAcA,EACvBM,EAASlB,WAAaA,EACtBkB,EAASR,oBAAsBA,EAC/BQ,EAASJ,YAAcA,EACvBI,EAAStD,eAAiBA,EACnBsD,CACR,CAG2BG,IAGvBnE,YAAYoE,cACfpE,YAAYoE,YAAc,WACxB,WAAwBC,GAGtB,IAAIC,EAAoBD,EAAIE,kBAAkB,gBAE9C,OAAID,GAA0C,SAArBD,EAAIG,eAAkE,IAAvCF,EAAkB/f,QAAQ,SAI9E8f,EAAII,UAAwC,WAA5BjF,UAAU6E,EAAII,UAHzBJ,EAAII,SAOTJ,EAAII,UAAoC,iBAAdJ,EAACI,SAClBtlB,KAACK,MAAM6kB,EAAII,UAGpBJ,EAAIK,aACCvlB,KAAKK,MAAM6kB,EAAIK,cAGb,IACZ,CAyCD,MAAO,CACLC,KAxCF,SAAmB7E,EAAM8E,EAAUC,EAAUC,GAC3C,IAAYL,EACRJ,EAAM,IAAkBU,eAE5B,IAEEV,EAAIG,aAAe,MACL,CAAd,MAAOQ,GAAO,CAGhBX,EAAIY,mBAAqB,WACvB,GAAuB,IAAnBZ,EAAIa,WACN,GAAmB,MAAfb,EAAIc,OACNV,EAAWW,EAAef,GAC1BQ,EAASJ,QAET,IACEA,EAAWW,EAAef,GAC1BQ,EAASJ,EAKV,CAJC,MAAOO,GACHF,GACFA,EAAcE,EAEjB,CAGvB,EAEgB,IAEEX,EAAIgB,KAAK,CAAC,IAAK,IAAK,KAAKC,KAAK,IAAKxF,GAAM,EAI1C,CAHC,MAAOyF,GAEPlB,EAAIgB,KAAK,CAAC,IAAK,IAAK,KAAKC,KAAK,IAAKV,EAAW,IAAM9E,GAAM,EAC3D,CAEDuE,EAAImB,MACL,EAKf,CAnEsC,IAsER,kBAAhB/lB,EAAE6M,KAAKvN,KACTihB,YAAYoE,YAAYO,KAAKllB,EAAE6M,KAAKwT,KAAMrgB,EAAE6M,KAAKsY,UAAU,SAAUtY,GACnE0T,YAAYP,YAAYgG,aAAanZ,GAErC0T,YAAYH,YAAY,CACtBgC,GAAIpiB,EAAE6M,KAAKuV,GACX6D,QAASpZ,EACT6Y,OAAQ,WAExB,IAAe,WACDnF,YAAYH,YAAY,CACtBgC,GAAIpiB,EAAE6M,KAAKuV,GACXsD,OAAQ,SAExB,SACqB1lB,GAAgB,aAAhBA,EAAE6M,KAAKvN,KAAqB,CACrC,IAAa4mB,EAAGlmB,EAAE6M,KAAKqZ,UAEvB3F,YAAYP,YAAYgG,aAAaE,GAErC3F,YAAYH,YAAY,CACtBgC,GAAIpiB,EAAE6M,KAAKuV,GACX6D,QAASC,EACTR,OAAQ,WAEX,KAA0B,aAAhB1lB,EAAE6M,KAAKvN,MAChBihB,YAAYoE,YAAYO,KAAKllB,EAAE6M,KAAKwT,KAAMrgB,EAAE6M,KAAKsY,UAAU,SAAUtY,GACnE0T,YAAYH,YAAY,CACtBgC,GAAIpiB,EAAE6M,KAAKuV,GACX6D,QAASpZ,EACT6Y,OAAQ,WAExB,IAAe,WACDnF,YAAYH,YAAY,CACtBgC,GAAIpiB,EAAE6M,KAAKuV,GACXsD,OAAQ,SAExB,GAEA,IAEQlF,EAAeL,UAAY,SAAUnO,GACnC,MAAWA,EAAMnF,OACRA,EAAKuV,GACH+D,EAAGlG,EAAUmC,GACxBnC,EAAUmC,GAAM,KAEI,YAAhBvV,EAAK6Y,OACPS,EAAQC,WAAWvZ,EAAKoZ,SACfE,EAAQE,SACjBF,EAAQE,SAEpB,EAEK,CAED,WAAuBD,EAAYC,GAEjC,IAAIjE,EAAK,cADTkE,GAAc,GAMd,OAJArG,EAAUmC,GAAM,CACdgE,WAAYA,EACZC,QAASA,GAEJjE,CACR,CAkCD,MAAO,CACLmE,cAjCF,SAAuBlG,EAAM+F,EAAYC,GACvCG,IACA,MAAgBC,EAAcL,EAAYC,GAC1C7F,EAAeJ,YAAY,CACzB9gB,KAAM,gBACN+gB,KAAMA,EACN8E,SAAU9pB,OAAOqrB,SAASC,OAAStrB,OAAOqrB,SAASE,SACnDxE,GAAIyE,GAEP,EAyBCC,SAvBF,SAAkBzG,EAAM+F,EAAYC,GAClCG,IACA,MAAgBC,EAAcL,EAAYC,GAC1C7F,EAAeJ,YAAY,CACzB9gB,KAAM,WACN+gB,KAAMA,EACN8E,SAAU9pB,OAAOqrB,SAASC,OAAStrB,OAAOqrB,SAASE,SACnDxE,GAAIyE,GAEP,EAeCE,kBAbF,SAA2BC,EAAMZ,EAAYC,GAC3CG,IACA,MAAgBC,EAAcL,EAAYC,GAC1C7F,EAAeJ,YAAY,CACzB9gB,KAAM,WACN4mB,UAAWc,EACX5E,GAAIyE,GAEP,EAOL,CA9vBoB,kBAgwBG,WACnB,IAAII,EAAa,WACf,IAAUC,EAAGC,UAAU,UACvBD,EAAOE,MAAQ,EACfF,EAAOG,OAAS,EAChB,IAAIC,EAAMJ,EAAOK,WAAW,MAG5B,OAFAD,EAAIE,UAAY,gBAChBF,EAAIG,SAAS,EAAG,EAAG,EAAG,GACfP,CACb,CARqB,GAUjB,SAASQ,IACPprB,KAAKqrB,cAAgB,EAEjBrrB,KAAKqrB,eAAiBrrB,KAAKsrB,aAAetrB,KAAKurB,sBAAwBvrB,KAAKwrB,eAC1ExrB,KAAKyrB,gBACPzrB,KAAKyrB,eAAe,KAGzB,CAED,SAAsBC,IACpB1rB,KAAKurB,qBAAuB,EAExBvrB,KAAKqrB,eAAiBrrB,KAAKsrB,aAAetrB,KAAKurB,sBAAwBvrB,KAAKwrB,eAC1ExrB,KAAKyrB,gBACPzrB,KAAKyrB,eAAe,KAGzB,CAED,WAAuBE,EAAWC,EAAYC,GAC5C,IAAQ9H,EAAG,GAEX,GAAI4H,EAAUjoB,EACZqgB,EAAO4H,EAAUvmB,UACRwmB,EAAY,CACrB,IAAaE,EAAGH,EAAUvmB,GAEY,IAAlC0mB,EAAUtjB,QAAQ,aACpBsjB,EAAYA,EAAU/b,MAAM,KAAK,IAGnCgU,EAAO6H,EAAaE,CAC5B,MACQ/H,EAAO8H,EACP9H,GAAQ4H,EAAUI,EAAIJ,EAAUI,EAAI,GACpChI,GAAQ4H,EAAUvmB,EAGpB,OAAW2e,CACZ,CAED,SAASiI,EAAgBC,GACvB,IAAIpK,EAAS,EACCqK,EAAGC,YAAY,YACjBF,EAAIG,UAENtB,OAASjJ,EAAS,OACxB7hB,KAAKqsB,eAELC,cAAcJ,IAGhBrK,GAAU,CACX,EAAC0K,KAAKvsB,MAAO,GACf,CAkDD,WAA2BuQ,GACzB,MAAS,CACPob,UAAWpb,GAELwT,EAAGyI,EAAcjc,EAAMvQ,KAAK4rB,WAAY5rB,KAAK+jB,MAUrD,OATAL,YAAY8G,SAASzG,EAAM,SAAU0I,GACnCC,EAAGT,IAAMQ,EAETzsB,KAAK2sB,gBACb,EAAQJ,KAAKvsB,MAAO,WACZ0sB,EAAGT,IAAM,CAAE,EAEXjsB,KAAK2sB,gBACb,EAAQJ,KAAKvsB,OACE0sB,CACV,CAiED,SAA8BE,IAC5B5sB,KAAKqsB,aAAejB,EAAYmB,KAAKvsB,MACrCA,KAAK2sB,eAAiBjB,EAAca,KAAKvsB,MACzCA,KAAKgsB,gBAAkBA,EAAgBO,KAAKvsB,MAC5CA,KAAK6sB,kBAAoBA,EAAkBN,KAAKvsB,MAChDA,KAAK4rB,WAAa,GAClB5rB,KAAK+jB,KAAO,GACZ/jB,KAAKsrB,YAAc,EACnBtrB,KAAKwrB,cAAgB,EACrBxrB,KAAKqrB,aAAe,EACpBrrB,KAAKurB,oBAAsB,EAC3BvrB,KAAKyrB,eAAiB,KACtBzrB,KAAK8sB,OAAS,EACf,CAgBD,OAdAF,EAAsBvtB,UAAY,CAChC0tB,WA/EF,SAAoBjG,EAAQkG,GAE1B,MADAhtB,KAAKyrB,eAAiBuB,EAEtB,MAAUlG,EAAOtmB,OAEjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACnBif,EAAOjf,GAAG+c,SACRkC,EAAOjf,GAAGQ,GAAqB,QAAhBye,EAAOjf,GAAGQ,EAGH,IAAhBye,EAAOjf,GAAGQ,IACnBrI,KAAKwrB,eAAiB,EACtBxrB,KAAK8sB,OAAO9nB,KAAKhF,KAAK6sB,kBAAkB/F,EAAOjf,OAJ/C7H,KAAKsrB,aAAe,EACpBtrB,KAAK8sB,OAAO9nB,KAAKhF,KAAKitB,iBAAiBnG,EAAOjf,MAOrD,EAgECqlB,cA1DF,SAAuBnJ,GACrB/jB,KAAK4rB,WAAa7H,GAAQ,EAC3B,EAyDCoJ,QA/DF,SAAiBpJ,GACf/jB,KAAK+jB,KAAOA,GAAQ,EACrB,EA8DCqJ,aApCF,WACE,YAAY9B,cAAgBtrB,KAAKqrB,YAClC,EAmCCgC,eAjCF,WACE,OAAWrtB,KAACwrB,gBAAkBxrB,KAAKurB,mBACpC,EAgCC+B,QA3CF,WACEttB,KAAKyrB,eAAiB,KACtBzrB,KAAK8sB,OAAOtsB,OAAS,CACtB,EAyCC+sB,SA3DF,SAAkB5B,GAIhB,IAHA,MAAQ,EACJpQ,EAAMvb,KAAK8sB,OAAOtsB,OAEfqH,EAAI0T,GAAK,CACd,GAAIvb,KAAK8sB,OAAOjlB,GAAG8jB,YAAcA,EAC/B,OAAW3rB,KAAC8sB,OAAOjlB,GAAGokB,IAGxBpkB,GAAK,CACN,CAED,OAAW,IACZ,EA+CC2lB,cAzHF,SAAuB7B,GACrB,MAAWa,EAAcb,EAAW3rB,KAAK4rB,WAAY5rB,KAAK+jB,QAChD8G,UAAU,OACpBoB,EAAIwB,YAAc,YAClBxB,EAAIzW,iBAAiB,OAAQxV,KAAKqsB,cAAc,GAChDJ,EAAIzW,iBAAiB,QAAS,WAC5BkX,EAAGT,IAAMtB,EAET3qB,KAAKqsB,cACN,EAACE,KAAKvsB,OAAO,GACdisB,EAAIpP,IAAMkH,EACV,IAAI2I,EAAK,CACPT,IAAKA,EACLN,UAAWA,GAEb,OAAOe,CACR,EA0GCgB,gBAxJF,SAAyB/B,GACvB,IAAI5H,EAAOyI,EAAcb,EAAW3rB,KAAK4rB,WAAY5rB,KAAK+jB,MACnDkI,EAAG1I,SAAS,SAEflF,SACFre,KAAKgsB,gBAAgBC,GAErBA,EAAIzW,iBAAiB,OAAQxV,KAAKqsB,cAAc,GAGlDJ,EAAIzW,iBAAiB,QAAS,WAC5BkX,EAAGT,IAAMtB,EAET3qB,KAAKqsB,cACN,EAACE,KAAKvsB,OAAO,GACdisB,EAAI0B,eAAe,+BAAgC,OAAQ5J,GAEvD/jB,KAAK4tB,eAAexe,OACtBpP,KAAK4tB,eAAexe,OAAO6c,GAE3BjsB,KAAK4tB,eAAexrB,YAAY6pB,GAGlC,IAAIS,EAAK,CACPT,IAAKA,EACLN,UAAWA,GAEb,OAAOe,CACR,EA6HCtB,YAAaA,EACbM,cAAeA,EACfmC,aApCF,SAAsB7qB,EAAM8qB,GACb,QAAT9qB,GACFhD,KAAK4tB,eAAiBE,EACtB9tB,KAAKitB,iBAAmBjtB,KAAK0tB,gBAAgBnB,KAAKvsB,OAElDA,KAAKitB,iBAAmBjtB,KAAKwtB,cAAcjB,KAAKvsB,KAEnD,IAgCL,CAlOuB,GAoOrB,qBAEA+tB,CAAAA,UAAU1uB,UAAY,CACpB2uB,aAAc,SAAsBC,EAAWC,GAC7C,GAAIluB,KAAKmuB,KAAKF,GAGZ,IAFA,IAAIG,EAAYpuB,KAAKmuB,KAAKF,GAEjBpmB,EAAI,EAAGA,EAAIumB,EAAU5tB,OAAQqH,GAAK,EACzCumB,EAAUvmB,GAAGqmB,EAGlB,EACD1Y,iBAAkB,SAA0ByY,EAAWnF,GAOrD,OANK9oB,KAAKmuB,KAAKF,KACbjuB,KAAKmuB,KAAKF,GAAa,IAGzBjuB,KAAKmuB,KAAKF,GAAWjpB,KAAK8jB,GAEnB,WACL9oB,KAAKuV,oBAAoB0Y,EAAWnF,EAC5C,EAAQyD,KAAKvsB,KACR,EACDuV,oBAAqB,SAA6B0Y,EAAWnF,GAC3D,GAAKA,MAEM9oB,KAAKmuB,KAAKF,GAAY,CAI/B,IAHA,IAAKpmB,EAAG,EACJ0T,EAAMvb,KAAKmuB,KAAKF,GAAWztB,OAExBqH,EAAI0T,GACLvb,KAAKmuB,KAAKF,GAAWpmB,KAAOihB,IAC9B9oB,KAAKmuB,KAAKF,GAAW1lB,OAAOV,EAAG,GAE/BA,GAAK,EACL0T,GAAO,GAGT1T,GAAK,EAGF7H,KAAKmuB,KAAKF,GAAWztB,SACxBR,KAAKmuB,KAAKF,GAAa,KAE1B,OAnBCjuB,KAAKmuB,KAAKF,GAAa,IAoB1B,GAGH,iBAAmB,WACjB,SAASI,EAAkB1E,GAMzB,IALA,IAEQ2E,EAFJC,EAAQ5E,EAAQ5Z,MAAM,QACtBye,EAAO,CAAA,EAEEC,EAAG,EAEN5mB,EAAG,EAAGA,EAAI0mB,EAAM/tB,OAAQqH,GAAK,EAGjB,KAFpBymB,EAAOC,EAAM1mB,GAAGkI,MAAM,MAEbvP,SACPguB,EAAKF,EAAK,IAAMA,EAAK,GAAGI,OACxBD,GAAa,GAIjB,GAAkB,IAAdA,EACF,MAAUvuB,IAAAA,MAGZ,OAAWsuB,CACZ,CAED,OAAO,SAAUG,GAGf,IAFA,IAAIC,EAAU,KAED,EAAG/mB,EAAI8mB,EAASnuB,OAAQqH,GAAK,EAAG,CAC3C,IAAWiO,EAAG6Y,EAAS9mB,GACnBgnB,EAAa,CACfC,KAAMhZ,EAAQiZ,GACdC,SAAUlZ,EAAQmZ,IAGpB,IACEJ,EAAWlF,QAAUvmB,KAAKK,MAAMkrB,EAAS9mB,GAAGqnB,GAS7C,CARC,MAAOC,GACP,IACEN,EAAWlF,QAAU0E,EAAkBM,EAAS9mB,GAAGqnB,GAKpD,CAJC,MAAOE,GACPP,EAAWlF,QAAU,CACnBnkB,KAAMmpB,EAAS9mB,GAAGqnB,GAErB,CACF,CAEDN,EAAQ5pB,KAAK6pB,EACd,CAED,OAAOD,CACb,CACA,CAlDqB,GAoDCS,iBAAG,WACrB,SAASC,EAAoBvJ,GAC3B/lB,KAAKuvB,aAAavqB,KAAK+gB,EACxB,CAED,kBACE,WAA8BvgB,GAI5B,IAHA,IAAIqC,EAAI,EACD0T,EAAGvb,KAAKuvB,aAAa/uB,OAErBqH,EAAI0T,GAAK,CACd,GAAIvb,KAAKuvB,aAAa1nB,GAAG0I,MAAQvQ,KAAKuvB,aAAa1nB,GAAG0I,KAAKif,KAAOhqB,EAKhE,OAJIxF,KAAKuvB,aAAa1nB,GAAG4nB,cAAgBzvB,KAAKuvB,aAAa1nB,GAAG0I,KAAKmf,IACjE1vB,KAAKuvB,aAAa1nB,GAAG4nB,aAAazvB,KAAK2vB,mBAG7BJ,aAAa1nB,GAAG+nB,cAG9B/nB,GAAK,CACN,CAED,OAAW,IACZ,CAKD,OAHAgoB,EAAqBN,aAAe,GACpCM,EAAqBF,aAAe,EACpCE,EAAqBP,oBAAsBA,GAEjD,CACA,CA9ByB,GAgCVQ,UAAG,CAAE,EAEEC,iBAAG,SAA0BlqB,EAAK/E,GACpDgvB,UAAUjqB,GAAO/E,CACrB,EAEE,SAASkvB,YAAYnqB,GACnB,OAAOiqB,UAAUjqB,EAClB,CAED,SAASoqB,UAAU9R,GAAuV,OAA1O8R,UAArD,mBAAXzwB,QAAoD,wBAAb+M,SAAqC,SAAiB4R,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAL3e,QAAmB2e,EAAIve,cAAgBJ,QAAU2e,IAAQ3e,OAAOH,UAAY,gBAAqB8e,CAAC,EAAsB8R,UAAC9R,EAAO,CAElY,IAAI+R,cAAgB,WAClBlwB,KAAKmuB,KAAO,GACZnuB,KAAKwF,KAAO,GACZxF,KAAK+jB,KAAO,GACZ/jB,KAAKmwB,UAAW,EAChBnwB,KAAK2vB,aAAe,EACpB3vB,KAAKowB,gBAAkB,EACvBpwB,KAAKmhB,WAAa,EAClBnhB,KAAKohB,YAAc,EACnBphB,KAAKqwB,UAAY,EACjBrwB,KAAKswB,UAAY,EACjBtwB,KAAKuwB,UAAY,EACjBvwB,KAAKwwB,cAAgB,EACrBxwB,KAAKywB,UAAY,EACjBzwB,KAAK4mB,cAAgB,CAAE,EACvB5mB,KAAK8mB,OAAS,GACd9mB,KAAK0wB,UAAW,EAChB1wB,KAAK2wB,UAAW,EAChB3wB,KAAK4wB,MAAO,EACZ5wB,KAAK6wB,SAAW,KAChB7wB,KAAK8wB,YAAcnP,kBACnB3hB,KAAK4rB,WAAa,GAClB5rB,KAAK+wB,cAAgB,EACrB/wB,KAAKgxB,WAAa,EAClBhxB,KAAKixB,kBAAoBpO,qBACzB7iB,KAAKkxB,SAAW,GAChBlxB,KAAKmxB,OAAQ,EACbnxB,KAAKoxB,gBAAiB,EACtBpxB,KAAKqxB,iBAAmBhC,mBACxBrvB,KAAKsxB,eAAiB,IAAIC,eAC1BvxB,KAAKwxB,gBAAkB1V,yBACvB9b,KAAK4uB,QAAU,GACf5uB,KAAKyxB,gBAAkBzxB,KAAKyxB,gBAAgBlF,KAAKvsB,MACjDA,KAAK0xB,aAAe1xB,KAAK0xB,aAAanF,KAAKvsB,MAC3CA,KAAK2xB,kBAAoB3xB,KAAK2xB,kBAAkBpF,KAAKvsB,MACrDA,KAAK4xB,gBAAkB,IAAqBjR,kBAAC,aAAc,EAAG,EAAG,EACrE,EAEExF,gBAAgB,CAAC4S,WAAYmC,eAE7BA,cAAc7wB,UAAUwyB,UAAY,SAAUC,IACxCA,EAAOC,SAAWD,EAAOhb,aAC3B9W,KAAK+xB,QAAUD,EAAOC,SAAWD,EAAOhb,WAG1C,MAAe,MAEXgb,EAAOE,SACTA,EAAWF,EAAOE,SACTF,EAAOjB,WAChBmB,EAAWF,EAAOjB,UAGpB,MAAoBb,YAAYgC,GAChChyB,KAAK6wB,SAAW,IAAIoB,EAAcjyB,KAAM8xB,EAAOI,kBAC/ClyB,KAAKsxB,eAAezD,aAAamE,EAAUhyB,KAAK6wB,SAASsB,WAAWC,MACpEpyB,KAAK6wB,SAASwB,oBAAoBryB,KAAKqxB,kBACvCrxB,KAAKgyB,SAAWA,EAEI,KAAhBF,EAAOlB,MAA+B,OAAhBkB,EAAOlB,WAAiCrwB,IAAhBuxB,EAAOlB,OAAsC,IAAhBkB,EAAOlB,KACpF5wB,KAAK4wB,MAAO,GACa,IAAhBkB,EAAOlB,KAChB5wB,KAAK4wB,MAAO,EAEZ5wB,KAAK4wB,KAAO0B,SAASR,EAAOlB,KAAM,IAGpC5wB,KAAK2wB,WAAW,iBAAuBmB,EAAOnB,SAC9C3wB,KAAKwF,KAAOssB,EAAOtsB,KAAOssB,EAAOtsB,KAAO,GACxCxF,KAAKuyB,kBAAmBrvB,OAAO7D,UAAUuG,eAAewC,KAAK0pB,EAAQ,qBAAsBA,EAAOS,iBAClGvyB,KAAK4rB,WAAakG,EAAOlG,WACzB5rB,KAAKwyB,eAAiBV,EAAOU,eAEzBV,EAAO9V,cACThc,KAAKwxB,gBAAgBpU,gBAAgB0U,EAAO9V,cAG1C8V,EAAOlL,cACT5mB,KAAKyyB,eAAeX,EAAOlL,eAClBkL,EAAO/N,QACuB,IAAnC+N,EAAO/N,KAAK2O,YAAY,MAC1B1yB,KAAK+jB,KAAO+N,EAAO/N,KAAK4O,OAAO,EAAGb,EAAO/N,KAAK2O,YAAY,MAAQ,GAElE1yB,KAAK+jB,KAAO+N,EAAO/N,KAAK4O,OAAO,EAAGb,EAAO/N,KAAK2O,YAAY,KAAO,GAGnE1yB,KAAK4yB,SAAWd,EAAO/N,KAAK4O,OAAOb,EAAO/N,KAAK2O,YAAY,KAAO,GAClE1yB,KAAK4yB,SAAW5yB,KAAK4yB,SAASD,OAAO,EAAG3yB,KAAK4yB,SAASF,YAAY,UAClEhP,YAAYuG,cAAc6H,EAAO/N,KAAM/jB,KAAKyxB,gBAAiBzxB,KAAK0xB,cAExE,EAEExB,cAAc7wB,UAAUqyB,aAAe,WACrC1xB,KAAK6yB,QAAQ,cACjB,EAEE3C,cAAc7wB,UAAUozB,eAAiB,SAAUliB,GACjDmT,YAAY+G,kBAAkBla,EAAMvQ,KAAKyxB,gBAC7C,EAEEvB,cAAc7wB,UAAUyzB,QAAU,SAAUf,EAASnL,GAC/CA,GAC+B,WAA7BqJ,UAAUrJ,KACZA,EAAgBxjB,KAAKK,MAAMmjB,IAI/B,IAAUkL,EAAG,CACXC,QAASA,EACTnL,cAAeA,GAEImM,EAAGhB,EAAQ7sB,WAChC4sB,EAAO/N,KAAOgP,EAAkBC,aAAa,uBAC3CD,EAAkBC,aAAa,uBAAuBlyB,MAAQiyB,EAAkBC,aAAa,gBAC7FD,EAAkBC,aAAa,gBAAgBlyB,MAAQiyB,EAAkBC,aAAa,WAAaD,EAAkBC,aAAa,WAAWlyB,MAAQ,GACvJgxB,EAAOE,SAAWe,EAAkBC,aAAa,kBAC/CD,EAAkBC,aAAa,kBAAkBlyB,MAAQiyB,EAAkBC,aAAa,gBACxFD,EAAkBC,aAAa,gBAAgBlyB,MAAQiyB,EAAkBC,aAAa,WACtFD,EAAkBC,aAAa,WAAWlyB,MAAQiyB,EAAkBC,aAAa,oBACjFD,EAAkBC,aAAa,oBAAoBlyB,MAAQiyB,EAAkBC,aAAa,eAAiBD,EAAkBC,aAAa,eAAelyB,MAAQ,SACnK,IAAI8vB,EAAOmC,EAAkBC,aAAa,kBACxCD,EAAkBC,aAAa,kBAAkBlyB,MAAQiyB,EAAkBC,aAAa,gBACxFD,EAAkBC,aAAa,gBAAgBlyB,MAAQiyB,EAAkBC,aAAa,WAAaD,EAAkBC,aAAa,WAAWlyB,MAAQ,GAE1I,UAAT8vB,EACFkB,EAAOlB,MAAO,EACI,SAATA,EACTkB,EAAOlB,MAAO,EACI,KAATA,IACTkB,EAAOlB,KAAO0B,SAAS1B,EAAM,KAG/B,MAAemC,EAAkBC,aAAa,sBAC5CD,EAAkBC,aAAa,sBAAsBlyB,MAAQiyB,EAAkBC,aAAa,oBAC5FD,EAAkBC,aAAa,oBAAoBlyB,OAAQiyB,EAAkBC,aAAa,gBAAiBD,EAAkBC,aAAa,eAAelyB,MAC3JgxB,EAAOnB,SAAwB,UAAbA,EAClBmB,EAAOtsB,KAAOutB,EAAkBC,aAAa,aAC3CD,EAAkBC,aAAa,aAAalyB,MAAQiyB,EAAkBC,aAAa,gBACnFD,EAAkBC,aAAa,gBAAgBlyB,MAAQiyB,EAAkBC,aAAa,WAAaD,EAAkBC,aAAa,WAAWlyB,MAAQ,GAKrI,WAJFiyB,EAAkBC,aAAa,uBAC7CD,EAAkBC,aAAa,uBAAuBlyB,MAAQiyB,EAAkBC,aAAa,qBAC7FD,EAAkBC,aAAa,qBAAqBlyB,MAAQiyB,EAAkBC,aAAa,gBAAkBD,EAAkBC,aAAa,gBAAgBlyB,MAAQ,MAGpKgxB,EAAOmB,WAAY,GAGrBjzB,KAAK6xB,UAAUC,EACnB,EAEE5B,cAAc7wB,UAAU6zB,cAAgB,SAAU3iB,GAC5CA,EAAK4W,GAAKnnB,KAAK4mB,cAAcO,KAC/BnnB,KAAK4mB,cAAcO,GAAK5W,EAAK4W,GAC7BnnB,KAAKohB,YAAcxV,KAAKiT,MAAMtO,EAAK4W,GAAKnnB,KAAK4mB,cAAcM,KAG7D,IACIrf,EAGAid,EAJMF,EAAG5kB,KAAK4mB,cAAchC,OAEzBrJ,EAAGqJ,EAAOpkB,OACb2yB,EAAY5iB,EAAKqU,OAEbO,EAAGgO,EAAU3yB,OAErB,IAAKskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAGzB,IAFAjd,EAAI,EAEGA,EAAI0T,GAAK,CACd,GAAIqJ,EAAO/c,GAAGie,KAAOqN,EAAUrO,GAAGgB,GAAI,CACpClB,EAAO/c,GAAKsrB,EAAUrO,GACtB,KACD,CAEDjd,GAAK,CACN,CAQH,IALI0I,EAAKyW,OAASzW,EAAK6iB,SACrBpzB,KAAK6wB,SAASsB,WAAWkB,YAAYC,SAAS/iB,EAAKyW,OACnDhnB,KAAK6wB,SAASsB,WAAWkB,YAAYE,SAAShjB,EAAK6iB,MAAOpzB,KAAK6wB,SAASsB,WAAWC,OAGjF7hB,EAAKuW,OAGP,IAFAvL,EAAMhL,EAAKuW,OAAOtmB,OAEbqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK4mB,cAAcE,OAAO9hB,KAAKuL,EAAKuW,OAAOjf,IAI/C7H,KAAK4mB,cAAcsB,YAAa,EAChCxE,YAAY+G,kBAAkBzqB,KAAK4mB,cAAe5mB,KAAK2xB,kBAC3D,EAEEzB,cAAc7wB,UAAUsyB,kBAAoB,SAAUphB,GACpDvQ,KAAK4mB,cAAgBrW,EACrB,IAAqBwS,EAAGC,uBAEpBD,GACFA,EAAkByQ,gBAAgBxzB,MAGpCA,KAAKyzB,iBACT,EAEEvD,cAAc7wB,UAAUo0B,gBAAkB,WACxC,IAAIvC,EAAWlxB,KAAK4mB,cAAcsK,SAElC,IAAKA,GAAgC,IAApBA,EAAS1wB,SAAiBR,KAAKuyB,iBAG9C,OAFAvyB,KAAK6yB,QAAQ,mBACb7yB,KAAK+wB,cAAgB/wB,KAAKohB,aAI5B,IAAWsS,EAAGxC,EAASyC,QACvB3zB,KAAK+wB,cAAgB2C,EAAQ5E,KAAO9uB,KAAKqwB,UACzC,IAAeuD,EAAG5zB,KAAK+jB,KAAO/jB,KAAK4yB,SAAW,IAAM5yB,KAAKgxB,WAAa,QACtEhxB,KAAKgxB,YAAc,EACnBtN,YAAY8G,SAASoJ,EAAa5zB,KAAKkzB,cAAc3G,KAAKvsB,MAAO,WAC/DA,KAAK6yB,QAAQ,cACnB,EAAMtG,KAAKvsB,MACX,EAEEkwB,cAAc7wB,UAAUw0B,aAAe,WACtB7zB,KAAK4mB,cAAcsK,WAGhClxB,KAAK+wB,cAAgB/wB,KAAKohB,aAG5BphB,KAAKyzB,iBACT,EAEEvD,cAAc7wB,UAAUy0B,aAAe,WACrC9zB,KAAK6yB,QAAQ,iBACb7yB,KAAK+zB,aACT,EAEE7D,cAAc7wB,UAAU20B,cAAgB,WACtCh0B,KAAKsxB,eAAepE,cAAcltB,KAAK4rB,YACvC5rB,KAAKsxB,eAAenE,QAAQntB,KAAK+jB,MACjC/jB,KAAKsxB,eAAevE,WAAW/sB,KAAK4mB,cAAcE,OAAQ9mB,KAAK8zB,aAAavH,KAAKvsB,MACrF,EAEEkwB,cAAc7wB,UAAUoyB,gBAAkB,SAAUwC,GAClD,GAAKj0B,KAAK6wB,SAIV,IACE7wB,KAAK4mB,cAAgBqN,EAEjBj0B,KAAKwyB,gBACPxyB,KAAKohB,YAAcxV,KAAKiT,MAAM7e,KAAKwyB,eAAe,GAAKxyB,KAAKwyB,eAAe,IAC3ExyB,KAAKmhB,WAAavV,KAAKkU,MAAM9f,KAAKwyB,eAAe,MAEjDxyB,KAAKohB,YAAcxV,KAAKiT,MAAM7e,KAAK4mB,cAAcO,GAAKnnB,KAAK4mB,cAAcM,IACzElnB,KAAKmhB,WAAavV,KAAKkU,MAAM9f,KAAK4mB,cAAcM,KAGlDlnB,KAAK6wB,SAASY,gBAAgBwC,GAEzBA,EAASnN,SACZmN,EAASnN,OAAS,IAGpB9mB,KAAK8mB,OAAS9mB,KAAK4mB,cAAcE,OACjC9mB,KAAKqwB,UAAYrwB,KAAK4mB,cAAcsN,GACpCl0B,KAAKswB,UAAYtwB,KAAK4mB,cAAcsN,GAAK,IACzCl0B,KAAK6wB,SAASsD,wBAAwBF,EAASnN,QAC/C9mB,KAAK4uB,QAAUwF,aAAaH,EAASrF,SAAW,IAChD5uB,KAAK6yB,QAAQ,gBACb7yB,KAAKg0B,gBACLh0B,KAAK6zB,eACL7zB,KAAKq0B,oBACLr0B,KAAKs0B,qBAEDt0B,KAAK0wB,UACP1wB,KAAKwxB,gBAAgBlV,OAIxB,CAFC,MAAOkN,GACPxpB,KAAKu0B,mBAAmB/K,EACzB,CACL,EAEE0G,cAAc7wB,UAAUi1B,mBAAqB,WACtCt0B,KAAK6wB,WAIN7wB,KAAK6wB,SAASsB,WAAWkB,YAAYlD,SACvCnwB,KAAK+zB,cAELS,WAAWx0B,KAAKs0B,mBAAmB/H,KAAKvsB,MAAO,IAErD,EAEEkwB,cAAc7wB,UAAU00B,YAAc,WACpC,IAAK/zB,KAAKmwB,UAAYnwB,KAAK6wB,SAASsB,WAAWkB,YAAYlD,WAAanwB,KAAKsxB,eAAelE,gBAAiD,WAA/BptB,KAAK6wB,SAAS4D,eAA8Bz0B,KAAKsxB,eAAejE,iBAAkB,CAC9LrtB,KAAKmwB,UAAW,EAChB,IAAqBpN,EAAGC,uBAEpBD,GACFA,EAAkByQ,gBAAgBxzB,MAGpCA,KAAK6wB,SAAS6D,YACdF,WAAW,WACTx0B,KAAK6yB,QAAQ,YACd,EAACtG,KAAKvsB,MAAO,GACdA,KAAK20B,YAED30B,KAAK2wB,UACP3wB,KAAK+c,MAER,CACL,EAEEmT,cAAc7wB,UAAUu1B,OAAS,SAAU9J,EAAOC,GAEhD,MAA8B,iBAALD,EAAgBA,OAAQvqB,EAE7Cs0B,EAA4B,iBAAX9J,EAAsBA,OAASxqB,EAEpDP,KAAK6wB,SAASiE,oBAAoBC,EAAQF,EAC9C,EAEE3E,cAAc7wB,UAAU21B,YAAc,SAAUha,GAC9Chb,KAAKixB,oBAAsBjW,CAC/B,EAEEkV,cAAc7wB,UAAUs1B,UAAY,WAClC30B,KAAK2vB,aAAe3vB,KAAKixB,kBAAoBjxB,KAAKowB,kBAAoBpwB,KAAKowB,gBAEvEpwB,KAAK+wB,gBAAkB/wB,KAAKohB,aAAephB,KAAK2vB,aAAe3vB,KAAK+wB,gBACtE/wB,KAAK2vB,aAAe3vB,KAAK+wB,eAG3B/wB,KAAK6yB,QAAQ,cACb7yB,KAAKi1B,cACLj1B,KAAK6yB,QAAQ,aACjB,EAEE3C,cAAc7wB,UAAU41B,YAAc,WACpC,IAAsB,IAAlBj1B,KAAKmwB,UAAuBnwB,KAAK6wB,SAIrC,IACE7wB,KAAK6wB,SAASoE,YAAYj1B,KAAK2vB,aAAe3vB,KAAKmhB,WAGpD,CAFC,MAAOqI,GACPxpB,KAAKk1B,wBAAwB1L,EAC9B,CACL,EAEE0G,cAAc7wB,UAAU0d,KAAO,SAAUvX,GACnCA,GAAQxF,KAAKwF,OAASA,IAIJ,IAAlBxF,KAAK0wB,WACP1wB,KAAK0wB,UAAW,EAChB1wB,KAAK6yB,QAAQ,UACb7yB,KAAKwxB,gBAAgBjV,SAEjBvc,KAAKmxB,QACPnxB,KAAKmxB,OAAQ,EACbnxB,KAAK6yB,QAAQ,YAGrB,EAEE3C,cAAc7wB,UAAUid,MAAQ,SAAU9W,GACpCA,GAAQxF,KAAKwF,OAASA,IAIJ,IAAlBxF,KAAK0wB,WACP1wB,KAAK0wB,UAAW,EAChB1wB,KAAK6yB,QAAQ,SACb7yB,KAAKmxB,OAAQ,EACbnxB,KAAK6yB,QAAQ,SACb7yB,KAAKwxB,gBAAgBlV,QAE3B,EAEE4T,cAAc7wB,UAAU81B,YAAc,SAAU3vB,GAC1CA,GAAQxF,KAAKwF,OAASA,KAIJ,IAAlBxF,KAAK0wB,SACP1wB,KAAK+c,OAEL/c,KAAKsc,QAEX,EAEE4T,cAAc7wB,UAAU+1B,KAAO,SAAU5vB,GACnCA,GAAQxF,KAAKwF,OAASA,IAI1BxF,KAAKsc,QACLtc,KAAKywB,UAAY,EACjBzwB,KAAKoxB,gBAAiB,EACtBpxB,KAAKq1B,wBAAwB,GACjC,EAEEnF,cAAc7wB,UAAUi2B,cAAgB,SAAUC,GAGhD,IAFA,IAAU5pB,IAEG,EAAG9D,EAAI7H,KAAK4uB,QAAQpuB,OAAQqH,GAAK,EAG5C,IAFA8D,EAAS3L,KAAK4uB,QAAQ/mB,IAEX8hB,SAAWhe,EAAOge,QAAQnkB,OAAS+vB,EAC5C,OAAO5pB,EAIX,OAAO,IACX,EAEEukB,cAAc7wB,UAAUm2B,YAAc,SAAU10B,EAAO20B,EAASjwB,GAC9D,IAAIA,GAAQxF,KAAKwF,OAASA,EAA1B,CAIA,IAAIkwB,EAAWlyB,OAAO1C,GAEtB,GAAI60B,MAAMD,GAAW,CACnB,IAAU/pB,EAAG3L,KAAKs1B,cAAcx0B,GAE5B6K,GACF3L,KAAKw1B,YAAY7pB,EAAOmjB,MAAM,EAEjC,MAAU2G,EACTz1B,KAAKq1B,wBAAwBv0B,GAE7Bd,KAAKq1B,wBAAwBv0B,EAAQd,KAAK41B,eAG5C51B,KAAKsc,OAhBJ,CAiBL,EAEE4T,cAAc7wB,UAAUw2B,YAAc,SAAU/0B,EAAO20B,EAASjwB,GAC9D,IAAIA,GAAQxF,KAAKwF,OAASA,EAA1B,CAIA,IAAYkwB,EAAGlyB,OAAO1C,GAEtB,GAAI60B,MAAMD,GAAW,CACnB,MAAa11B,KAAKs1B,cAAcx0B,GAE5B6K,IACGA,EAAOqjB,SAGVhvB,KAAK81B,aAAa,CAACnqB,EAAOmjB,KAAMnjB,EAAOmjB,KAAOnjB,EAAOqjB,WAAW,GAFhEhvB,KAAKw1B,YAAY7pB,EAAOmjB,MAAM,GAKxC,MACM9uB,KAAKw1B,YAAYE,EAAUD,EAASjwB,GAGtCxF,KAAK+c,MAlBJ,CAmBL,EAEEmT,cAAc7wB,UAAU02B,YAAc,SAAUj1B,GAC9C,IAAsB,IAAlBd,KAAK0wB,WAAuC,IAAlB1wB,KAAKmwB,SAAnC,CAIA,IAAa6F,EAAGh2B,KAAKowB,gBAAkBtvB,EAAQd,KAAK41B,cACrCK,GAAG,EAGdD,GAAah2B,KAAKohB,YAAc,GAAKphB,KAAK41B,cAAgB,EACvD51B,KAAK4wB,MAAQ5wB,KAAKywB,YAAczwB,KAAK4wB,KAK/BoF,GAAah2B,KAAKohB,aAC3BphB,KAAKywB,WAAa,EAEbzwB,KAAKk2B,cAAcF,EAAYh2B,KAAKohB,eACvCphB,KAAKq1B,wBAAwBW,EAAYh2B,KAAKohB,aAC9CphB,KAAKoxB,gBAAiB,EACtBpxB,KAAK6yB,QAAQ,kBAGf7yB,KAAKq1B,wBAAwBW,GAbxBh2B,KAAKk2B,cAAcF,EAAYh2B,KAAKohB,YAAc4U,EAAYh2B,KAAKohB,YAAc,KACpF6U,GAAc,EACdD,EAAYh2B,KAAKohB,YAAc,GAa1B4U,EAAY,EAChBh2B,KAAKk2B,cAAcF,EAAYh2B,KAAKohB,gBACnCphB,KAAK4wB,MAAU5wB,KAAKywB,aAAe,IAAmB,IAAdzwB,KAAK4wB,MAU/CqF,GAAc,EACdD,EAAY,IATZh2B,KAAKq1B,wBAAwBr1B,KAAKohB,YAAc4U,EAAYh2B,KAAKohB,aAE5DphB,KAAKoxB,eAGRpxB,KAAK6yB,QAAQ,gBAFb7yB,KAAKoxB,gBAAiB,IAU5BpxB,KAAKq1B,wBAAwBW,GAG3BC,IACFj2B,KAAKq1B,wBAAwBW,GAC7Bh2B,KAAKsc,QACLtc,KAAK6yB,QAAQ,YA9Cd,CAgDL,EAEE3C,cAAc7wB,UAAU82B,cAAgB,SAAUvY,EAAK0E,GACrDtiB,KAAKywB,UAAY,EAEb7S,EAAI,GAAKA,EAAI,IACX5d,KAAK41B,cAAgB,IACnB51B,KAAKuwB,UAAY,EACnBvwB,KAAKo2B,UAAUp2B,KAAKuwB,WAEpBvwB,KAAKq2B,cAAc,IAIvBr2B,KAAKohB,YAAcxD,EAAI,GAAKA,EAAI,GAChC5d,KAAK+wB,cAAgB/wB,KAAKohB,YAC1BphB,KAAKmhB,WAAavD,EAAI,GACtB5d,KAAKq1B,wBAAwBr1B,KAAKohB,YAAc,KAAQkB,IAC/C1E,EAAI,GAAKA,EAAI,KAClB5d,KAAK41B,cAAgB,IACnB51B,KAAKuwB,UAAY,EACnBvwB,KAAKo2B,UAAUp2B,KAAKuwB,WAEpBvwB,KAAKq2B,aAAa,IAItBr2B,KAAKohB,YAAcxD,EAAI,GAAKA,EAAI,GAChC5d,KAAK+wB,cAAgB/wB,KAAKohB,YAC1BphB,KAAKmhB,WAAavD,EAAI,GACtB5d,KAAKq1B,wBAAwB,KAAQ/S,IAGvCtiB,KAAK6yB,QAAQ,eACjB,EAEE3C,cAAc7wB,UAAUi3B,WAAa,SAAUC,EAAMloB,GACnD,IAAgBmoB,GAAI,EAEhBx2B,KAAK0wB,WACH1wB,KAAKowB,gBAAkBpwB,KAAKmhB,WAAaoV,EAC3CC,EAAeD,EACNv2B,KAAKowB,gBAAkBpwB,KAAKmhB,WAAa9S,IAClDmoB,EAAenoB,EAAMkoB,IAIzBv2B,KAAKmhB,WAAaoV,EAClBv2B,KAAKohB,YAAc/S,EAAMkoB,EACzBv2B,KAAK+wB,cAAgB/wB,KAAKohB,aAEJ,IAAlBoV,GACFx2B,KAAKw1B,YAAYgB,GAAc,EAErC,EAEEtG,cAAc7wB,UAAUy2B,aAAe,SAAUlY,EAAK6Y,GAKpD,GAJIA,IACFz2B,KAAKkxB,SAAS1wB,OAAS,GAGC,WAAtByvB,UAAUrS,EAAI,IAAkB,CAClC,IAAK/V,EACE0T,EAAGqC,EAAIpd,OAEd,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKkxB,SAASlsB,KAAK4Y,EAAI/V,GAE/B,MACM7H,KAAKkxB,SAASlsB,KAAK4Y,GAGjB5d,KAAKkxB,SAAS1wB,QAAUi2B,GAC1Bz2B,KAAKm2B,cAAcn2B,KAAKkxB,SAASyC,QAAS,GAGxC3zB,KAAK0wB,UACP1wB,KAAK+c,MAEX,EAEEmT,cAAc7wB,UAAUq3B,cAAgB,SAAUD,GAChDz2B,KAAKkxB,SAAS1wB,OAAS,EACvBR,KAAKkxB,SAASlsB,KAAK,CAAChF,KAAK4mB,cAAcM,GAAIlnB,KAAK4mB,cAAcO,KAE1DsP,GACFz2B,KAAKk2B,cAAc,EAEzB,EAEEhG,cAAc7wB,UAAU62B,cAAgB,SAAU5T,GAChD,QAAItiB,KAAKkxB,SAAS1wB,SAChBR,KAAKm2B,cAAcn2B,KAAKkxB,SAASyC,QAASrR,IACnC,EAIb,EAEE4N,cAAc7wB,UAAUiuB,QAAU,SAAU9nB,GACtCA,GAAQxF,KAAKwF,OAASA,IAASxF,KAAK6wB,WAIxC7wB,KAAK6wB,SAASvD,UACdttB,KAAKsxB,eAAehE,UACpBttB,KAAK6yB,QAAQ,WACb7yB,KAAKmuB,KAAO,KACZnuB,KAAK22B,aAAe,KACpB32B,KAAK42B,eAAiB,KACtB52B,KAAK8pB,WAAa,KAClB9pB,KAAK62B,eAAiB,KACtB72B,KAAK82B,UAAY,KACjB92B,KAAK6wB,SAAW,KAChB7wB,KAAK6wB,SAAW,KAChB7wB,KAAKsxB,eAAiB,KACtBtxB,KAAKqxB,iBAAmB,KAC5B,EAEEnB,cAAc7wB,UAAUg2B,wBAA0B,SAAUv0B,GAC1Dd,KAAKowB,gBAAkBtvB,EACvBd,KAAK20B,WACT,EAEEzE,cAAc7wB,UAAU+2B,SAAW,SAAU9W,GAC3Ctf,KAAKuwB,UAAYjR,EACjBtf,KAAKq0B,mBACT,EAEEnE,cAAc7wB,UAAUg3B,aAAe,SAAU/W,GAC/Ctf,KAAKwwB,cAAgBlR,EAAM,GAAK,EAAI,EACpCtf,KAAKq0B,mBACT,EAEEnE,cAAc7wB,UAAU8d,UAAY,SAAUmC,EAAK9Z,GAC7CA,GAAQxF,KAAKwF,OAASA,GAI1BxF,KAAKwxB,gBAAgBrU,UAAUmC,EACnC,EAEE4Q,cAAc7wB,UAAUme,UAAY,WAClC,OAAWxd,KAACwxB,gBAAgBhU,WAChC,EAEE0S,cAAc7wB,UAAUie,KAAO,SAAU9X,GACnCA,GAAQxF,KAAKwF,OAASA,GAI1BxF,KAAKwxB,gBAAgBlU,MACzB,EAEE4S,cAAc7wB,UAAUke,OAAS,SAAU/X,GACrCA,GAAQxF,KAAKwF,OAASA,GAI1BxF,KAAKwxB,gBAAgBjU,QACzB,EAEE2S,cAAc7wB,UAAUg1B,kBAAoB,WAC1Cr0B,KAAK41B,cAAgB51B,KAAKswB,UAAYtwB,KAAKuwB,UAAYvwB,KAAKwwB,cAC5DxwB,KAAKwxB,gBAAgBhV,QAAQxc,KAAKuwB,UAAYvwB,KAAKwwB,cACvD,EAEEN,cAAc7wB,UAAU03B,QAAU,WAChC,OAAO/2B,KAAK+jB,IAChB,EAEEmM,cAAc7wB,UAAUmtB,cAAgB,SAAUb,GAChD,IAAI5H,EAAO,GAEX,GAAI4H,EAAUjoB,EACZqgB,EAAO4H,EAAUvmB,UACRpF,KAAK4rB,WAAY,CAC1B,IAAIE,EAAYH,EAAUvmB,GAEY,IAAlC0mB,EAAUtjB,QAAQ,aACpBsjB,EAAYA,EAAU/b,MAAM,KAAK,IAGnCgU,EAAO/jB,KAAK4rB,WAAaE,CAC/B,MACM/H,EAAO/jB,KAAK+jB,KACZA,GAAQ4H,EAAUI,EAAIJ,EAAUI,EAAI,GACpChI,GAAQ4H,EAAUvmB,EAGpB,OAAW2e,CACf,EAEEmM,cAAc7wB,UAAU23B,aAAe,SAAUlR,GAI/C,IAHA,IAAIje,EAAI,EACJ0T,EAAMvb,KAAK8mB,OAAOtmB,OAEfqH,EAAI0T,GAAK,CACd,GAAIuK,IAAO9lB,KAAK8mB,OAAOjf,GAAGie,GACxB,YAAYgB,OAAOjf,GAGrBA,GAAK,CACN,CAED,OAAO,IACX,EAEEqoB,cAAc7wB,UAAU43B,KAAO,WAC7Bj3B,KAAK6wB,SAASoG,MAClB,EAEE/G,cAAc7wB,UAAU63B,KAAO,WAC7Bl3B,KAAK6wB,SAASqG,MAClB,EAEEhH,cAAc7wB,UAAU83B,YAAc,SAAU1B,GAC9C,OAAOA,EAAUz1B,KAAKohB,YAAcphB,KAAKohB,YAAcphB,KAAKqwB,SAChE,EAEEH,cAAc7wB,UAAU+3B,mBAAqB,SAAUrT,EAAM4C,EAAc1W,GACzE,IACgBjQ,KAAK6wB,SAASwG,iBAAiBtT,GACrCqT,mBAAmBzQ,EAAc1W,EAC3B,CAAd,MAAOuZ,GAAO,CAEpB,EAEE0G,cAAc7wB,UAAUwzB,QAAU,SAAUrtB,GAC1C,GAAIxF,KAAKmuB,MAAQnuB,KAAKmuB,KAAK3oB,GACzB,OAAQA,GACN,IAAK,aACHxF,KAAKguB,aAAaxoB,EAAM,IAAqBmb,kBAACnb,EAAMxF,KAAK2vB,aAAc3vB,KAAKohB,YAAaphB,KAAK41B,gBAC9F,MAEF,IAAK,aACH51B,KAAK4xB,gBAAgBhR,YAAc5gB,KAAK2vB,aACxC3vB,KAAK4xB,gBAAgB/Q,UAAY7gB,KAAKohB,YACtCphB,KAAK4xB,gBAAgB7Q,UAAY/gB,KAAK41B,cACtC51B,KAAKguB,aAAaxoB,EAAMxF,KAAK4xB,iBAC7B,MAEF,IAAK,eACH5xB,KAAKguB,aAAaxoB,EAAM,IAAuB8xB,oBAAC9xB,EAAMxF,KAAK4wB,KAAM5wB,KAAKywB,UAAWzwB,KAAKswB,YACtF,MAEF,IAAK,WACHtwB,KAAKguB,aAAaxoB,EAAM,IAAI+xB,gBAAgB/xB,EAAMxF,KAAKswB,YACvD,MAEF,IAAK,eACHtwB,KAAKguB,aAAaxoB,EAAM,IAAuB0b,oBAAC1b,EAAMxF,KAAKmhB,WAAYnhB,KAAKohB,cAC5E,MAEF,IAAK,UACHphB,KAAKguB,aAAaxoB,EAAM,mBAAmBA,EAAMxF,OACjD,MAEF,QACEA,KAAKguB,aAAaxoB,GAIX,eAATA,GAAyBxF,KAAK22B,cAChC32B,KAAK22B,aAAavuB,KAAKpI,KAAM,IAAqB2gB,kBAACnb,EAAMxF,KAAK2vB,aAAc3vB,KAAKohB,YAAaphB,KAAKswB,YAGxF,iBAAT9qB,GAA2BxF,KAAK42B,gBAClC52B,KAAK42B,eAAexuB,KAAKpI,KAAM,wBAAwBwF,EAAMxF,KAAK4wB,KAAM5wB,KAAKywB,UAAWzwB,KAAKswB,YAGlF,aAAT9qB,GAAuBxF,KAAK8pB,YAC9B9pB,KAAK8pB,WAAW1hB,KAAKpI,KAAM,IAAIu3B,gBAAgB/xB,EAAMxF,KAAKswB,YAG/C,iBAAT9qB,GAA2BxF,KAAK62B,gBAClC72B,KAAK62B,eAAezuB,KAAKpI,KAAM,IAAIkhB,oBAAoB1b,EAAMxF,KAAKmhB,WAAYnhB,KAAKohB,cAGxE,YAAT5b,GAAsBxF,KAAK82B,WAC7B92B,KAAK82B,UAAU1uB,KAAKpI,KAAM,IAAIqhB,eAAe7b,EAAMxF,MAEzD,EAEEkwB,cAAc7wB,UAAU61B,wBAA0B,SAAU1T,GAC1D,IAAIgI,EAAQ,IAA2BjI,wBAACC,EAAaxhB,KAAK2vB,cAC1D3vB,KAAKguB,aAAa,QAASxE,GAEvBxpB,KAAK+pB,SACP/pB,KAAK+pB,QAAQ3hB,KAAKpI,KAAMwpB,EAE9B,EAEE0G,cAAc7wB,UAAUk1B,mBAAqB,SAAU/S,GACrD,IAASgI,EAAG,IAAI/H,mBAAmBD,EAAaxhB,KAAK2vB,cACrD3vB,KAAKguB,aAAa,QAASxE,GAEvBxpB,KAAK+pB,SACP/pB,KAAK+pB,QAAQ3hB,KAAKpI,KAAMwpB,EAE9B,EAEE,IAAIgO,iBAAmB,WACrB,IAAIvP,EAAW,CAAA,EACXwP,EAAuB,KACZ,EACXlc,EAAM,EACNmc,EAAuB,EACvBC,GAAW,KACC,EAEhB,SAAsBC,EAACC,GAIrB,IAHA,IAAKhwB,EAAG,EACIiwB,EAAGD,EAAGvW,OAEXzZ,EAAI0T,GACLkc,EAAqB5vB,GAAG+hB,YAAckO,IACxCL,EAAqBlvB,OAAOV,EAAG,GAC/BA,GAAK,EACL0T,GAAO,EAEFuc,EAASpH,UACZqH,KAIJlwB,GAAK,CAER,CAED,WAA2B2M,EAASoS,GAClC,IAAKpS,EACH,YAKF,IAFA,IAAK3M,EAAG,EAEDA,EAAI0T,GAAK,CACd,GAAIkc,EAAqB5vB,GAAGmwB,OAASxjB,GAA4C,OAAjCijB,EAAqB5vB,GAAGmwB,KACtE,OAA2BP,EAAC5vB,GAAG+hB,UAGjC/hB,GAAK,CACN,CAED,IAAIiwB,EAAW,IAAI5H,cAGnB,OAFAuC,EAAeqF,EAAUtjB,GACzBsjB,EAAShF,QAAQte,EAASoS,GACXkR,CAChB,CAcD,SAASG,IACPP,GAAwB,EACxBQ,GACD,CAED,SAA6BH,IAC3BL,GAAwB,CACzB,CAED,SAASjF,EAAeqF,EAAUtjB,GAChCsjB,EAAStiB,iBAAiB,UAAWoiB,GACrCE,EAAStiB,iBAAiB,UAAWyiB,GACrCH,EAAStiB,iBAAiB,QAASuiB,GACnCN,EAAqBzyB,KAAK,CACxBgzB,KAAMxjB,EACNoV,UAAWkO,IAEbvc,GAAO,CACR,CAiCD,SAASgB,EAAO4b,GACd,IACItwB,EADAuwB,EAAcD,EAAUE,EAG5B,IAAKxwB,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUmM,YAAYqC,GAGhDC,EAAWF,EAEPT,IAAyBY,EAC3Bv5B,OAAOw5B,sBAAsBhc,GAE7Bob,GAAW,CAEd,CAED,SAAca,EAACL,GACbE,EAAWF,EACXp5B,OAAOw5B,sBAAsBhc,EAC9B,CA+ED,cACO+b,GAAaZ,GACZC,IACF54B,OAAOw5B,sBAAsBC,GAC7Bb,GAAW,EAGhB,CAsDD,OAnBA1P,EAASwQ,kBAAoBA,EAC7BxQ,EAASgC,cA7KT,SAAuB6H,GACrB,MAAe,kBAGf,OAFAW,EAAeqF,EAAU,MACzBA,EAASjG,UAAUC,GACJgG,CAChB,EAyKD7P,EAASmO,SAvKT,SAAkB9W,EAAKsK,GACrB,MAEA,IAAK/hB,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUwM,SAAS9W,EAAKsK,EAEnD,EAkKD3B,EAASoO,aAhKT,SAAsB/W,EAAKsK,GACzB,IAAI/hB,EAEJ,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUyM,aAAa/W,EAAKsK,EAEvD,EA2JD3B,EAASlL,KAzJT,SAAc6M,GACZ,IAAI/hB,EAEJ,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAU7M,KAAK6M,EAE1C,EAoJD3B,EAAS3L,MA5HT,SAAesN,GACb,IAAK/hB,EAEL,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUtN,MAAMsN,EAE3C,EAuHD3B,EAASmN,KA7GT,SAAcxL,GACZ,IAAI/hB,EAEJ,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUwL,KAAKxL,EAE1C,EAwGD3B,EAASkN,YAtGT,SAAqBvL,GACnB,IAAI/hB,EAEJ,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUuL,YAAYvL,EAEjD,EAiGD3B,EAASyQ,iBAvFT,SAA0B9R,EAAe+R,EAAY9H,GACnD,IACIhpB,EADY+wB,EAAG,GAAGC,OAAO,GAAG/sB,MAAM1D,KAAKtG,SAASg3B,uBAAuB,WAAY,GAAGhtB,MAAM1D,KAAKtG,SAASg3B,uBAAuB,eAEjIC,EAAWH,EAAap4B,OAE5B,IAAKqH,EAAI,EAAGA,EAAIkxB,EAAUlxB,GAAK,EACzBgpB,GACF+H,EAAa/wB,GAAG3F,aAAa,eAAgB2uB,GAG/C4H,EAAkBG,EAAa/wB,GAAI+e,GAGrC,GAAI+R,GAA2B,IAAbI,EAAgB,CAC3BlI,IACHA,EAAW,OAGb,IAAImI,EAAOl3B,SAASm3B,qBAAqB,QAAQ,GACjDD,EAAKE,UAAY,GACjB,IAAOC,EAAGtO,UAAU,OACpBsO,EAAIt3B,MAAMipB,MAAQ,OAClBqO,EAAIt3B,MAAMkpB,OAAS,OACnBoO,EAAIj3B,aAAa,eAAgB2uB,GACjCmI,EAAK52B,YAAY+2B,GACjBV,EAAkBU,EAAKvS,EACxB,CACF,EA6DDqB,EAAS2M,OA3DT,WACE,IAAI/sB,EAEJ,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUgL,QAErC,EAuDD3M,EAASuN,YA1HT,SAAqB10B,EAAO20B,EAAS7L,GACnC,MAEA,IAAK/hB,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAU4L,YAAY10B,EAAO20B,EAAS7L,EAEjE,EAqHD3B,EAASqF,QAnGT,SAAiB1D,GACf,IAAI/hB,EAEJ,IAAKA,EAAI0T,EAAM,EAAG1T,GAAK,EAAGA,GAAK,EAC7B4vB,EAAqB5vB,GAAG+hB,UAAU0D,QAAQ1D,EAE7C,EA8FD3B,EAASmR,OA9CT,WACEd,GAAY,CACb,EA6CDrQ,EAASoR,SA3CT,WACEf,GAAY,EACZJ,GACD,EAyCDjQ,EAAS9K,UAvCT,SAAmBmC,EAAKsK,GACtB,IAAI/hB,EAEJ,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUzM,UAAUmC,EAAKsK,EAEpD,EAkCD3B,EAAS3K,KAhCT,SAAcsM,GACZ,IAAI/hB,EAEJ,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUtM,KAAKsM,EAE1C,EA2BD3B,EAAS1K,OAzBT,SAAgBqM,GACd,IAAI/hB,EAEJ,IAAKA,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB4vB,EAAqB5vB,GAAG+hB,UAAUrM,OAAOqM,EAE5C,EAoBD3B,EAASqR,wBA9NT,WACE,IAAKzxB,EACOkxB,EAAGtB,EAAqBj3B,OACtB+4B,EAAG,GAEjB,IAAK1xB,EAAI,EAAGA,EAAIkxB,EAAUlxB,GAAK,EAC7B0xB,EAAWv0B,KAAKyyB,EAAqB5vB,GAAG+hB,WAG1C,QACD,EAqNc3B,CACnB,CAjRyB,GAoRnBuR,cAAgB,WAWlB,MAAS,CACT9M,gBAGA,SAAyBpF,EAAGtF,EAAGhZ,EAAGiD,EAAGujB,GACnC,IAAOiK,EAAGjK,IAAO,OAASlI,EAAI,IAAMtF,EAAI,IAAMhZ,EAAI,IAAMiD,GAAGytB,QAAQ,MAAO,KAE1E,GAAIC,EAAQF,GACV,OAAOE,EAAQF,GAGjB,IAAIG,EAAY,IAAIC,EAAa,CAACvS,EAAGtF,EAAGhZ,EAAGiD,IAE3C,OADA0tB,EAAQF,GAAOG,EACCA,CACjB,GAZGD,EAAU,GAoBKG,EAAG,GAClBC,EAAgD,mBAAjBlc,aAEnC,SAAUmc,EAACC,EAAKC,GACd,SAAa,EAAMA,EAAM,EAAMD,CAChC,CAED,WAAWA,EAAKC,GACd,OAAO,EAAMA,EAAM,EAAMD,CAC1B,CAED,WAAWA,GACT,SAAaA,CACd,CAGD,WAAoBE,EAAIF,EAAKC,GAC3B,QAASF,EAAEC,EAAKC,GAAOC,EAAKC,EAAEH,EAAKC,IAAQC,EAAKE,EAAEJ,IAAQE,CAC3D,CAGD,SAASG,EAASH,EAAIF,EAAKC,GACzB,SAAaF,EAAEC,EAAKC,GAAOC,EAAKA,EAAK,EAAMC,EAAEH,EAAKC,GAAOC,EAAKE,EAAEJ,EACjE,CAoCD,SAAqBJ,EAACU,GACpBv6B,KAAKw6B,GAAKD,EACVv6B,KAAKy6B,eAAiBV,EAAwB,IAAgBlc,aA9DzC,IA8D8D,IAAS1a,MA9DvE,IA+DrBnD,KAAK06B,cAAe,EACpB16B,KAAKS,IAAMT,KAAKS,IAAI8rB,KAAKvsB,KAC1B,CAqED,OAnEA65B,EAAax6B,UAAY,CACvBoB,IAAK,SAAak6B,GAChB,IAAOC,EAAG56B,KAAKw6B,GAAG,GACdK,EAAM76B,KAAKw6B,GAAG,GACdM,EAAM96B,KAAKw6B,GAAG,GACdO,EAAM/6B,KAAKw6B,GAAG,GAElB,OADKx6B,KAAK06B,cAAc16B,KAAKg7B,cACzBJ,IAAQC,GAAOC,IAAQC,EAAYJ,EAG7B,IAANA,EAAgB,EACV,IAANA,EAAiB,EACdM,EAAWj7B,KAAKk7B,UAAUP,GAAIE,EAAKE,EAC3C,EAEDC,YAAa,WACX,IAAOJ,EAAG56B,KAAKw6B,GAAG,GACdK,EAAM76B,KAAKw6B,GAAG,GACdM,EAAM96B,KAAKw6B,GAAG,GACdO,EAAM/6B,KAAKw6B,GAAG,GAClBx6B,KAAK06B,cAAe,EAEhBE,IAAQC,GAAOC,IAAQC,GACzB/6B,KAAKm7B,mBAER,EACDA,kBAAmB,WAIjB,IAHA,IAAIP,EAAM56B,KAAKw6B,GAAG,GACdM,EAAM96B,KAAKw6B,GAAG,GAET3yB,EAAI,EAAGA,EAjGG,KAiGqBA,EACtC7H,KAAKy6B,eAAe5yB,GAAKozB,EAAWpzB,EAAIiyB,EAAiBc,EAAKE,EAEjE,EAKDI,UAAW,SAAmBE,GAQ5B,IAPA,MAAUp7B,KAAKw6B,GAAG,GACdM,EAAM96B,KAAKw6B,GAAG,GACda,EAAgBr7B,KAAKy6B,eACRa,EAAG,EAChBC,EAAgB,EACHC,KAEVD,GAAgCF,EAAcE,IAAkBH,IAAMG,EAC3ED,GAAiBxB,EAKnB,IACI2B,EAAYH,GADJF,EAAKC,IAFfE,KAEgDF,EAAcE,EAAgB,GAAKF,EAAcE,IAC5DzB,EACnC4B,EAAepB,EAASmB,EAAWb,EAAKE,GAE5C,OAAIY,GA9He,KAgDvB,SAA8BN,EAAIO,EAASf,EAAKE,GAC9C,IAAK,MAAQ,EAAGjzB,EAlDM,IAkDmBA,EAAG,CAC1C,MAAmByyB,EAASqB,EAASf,EAAKE,GAC1C,GAAqB,IAAjBc,EAAsB,OAAcD,EAExCA,IADeV,EAAWU,EAASf,EAAKE,GAAOM,GACzBQ,CACvB,CAED,OAAcD,CACf,CAsEYE,CAAqBT,EAAIK,EAAWb,EAAKE,GAG7B,IAAjBY,IArGR,SAAyBN,EAAIU,EAAIC,EAAInB,EAAKE,GACxC,IAAYkB,EACRC,EACAp0B,EAAI,EAER,IAEEm0B,EAAWf,EADXgB,EAAWH,GAAMC,EAAKD,GAAM,EACIlB,EAAKE,GAAOM,GAE7B,EACbW,EAAKE,EAELH,EAAKG,QAEArwB,KAAKyT,IAAI2c,GA1CQ,QA0C+Bn0B,EAzC1B,IA2C/B,OAAeo0B,CAChB,CAwFUC,CAAgBd,EAAIE,EAAeA,EAAgBxB,EAAiBc,EAAKE,EACjF,GAEMpO,CACb,CAvKsB,WA8KX,CACLyP,OALF,SAAiBve,GACf,OAAUA,EAACib,OAAO7a,iBAAiBJ,EAAIpd,QACxC,GAOC47B,YACeC,SAAAA,EAAeC,EAASC,GACvC,IAAWC,EAAG,EACAC,EAAGJ,EACTK,EAAG1e,iBAAiBye,GAiC5B,MAhCS,CACPE,WAIF,WAUE,OAPIH,EAEQE,EADVF,GAAW,GAGDF,GAIb,EAdCM,QAgBF,SAAiBpoB,GACXgoB,IAAYC,IACdC,EAAOG,QAAgB,OAAEH,GACzBD,GAAc,GAGZF,GACFA,EAAS/nB,GAGXkoB,EAAKF,GAAWhoB,EAChBgoB,GAAW,CACZ,EAGP,EAGsBM,iBASXV,YAAY,GARnB,WACE,MAAO,CACLW,YAAa,EACbC,SAAUtf,iBAAiB,UAAW0F,2BACtC6Z,QAASvf,iBAAiB,UAAW0F,2BAExC,IAKC8Z,mBAmBgBd,YAAC,GAlBnB,WACE,MAAO,CACLa,QAAS,GACTE,YAAa,EAEhB,IAED,SAAiB3oB,GACf,MACO+G,EAAG/G,EAAQyoB,QAAQz8B,OAE1B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBi1B,iBAAiBF,QAAQpoB,EAAQyoB,QAAQp1B,IAG3C2M,EAAQyoB,QAAQz8B,OAAS,CAC1B,IAKH,SAAoB48B,cAClB,MAAWxxB,KAEX,SAAsByxB,EAACC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACzC,IAAIC,EAAON,EAAKG,EAAKF,EAAKG,EAAKF,EAAKG,EAAKD,EAAKD,EAAKE,EAAKL,EAAKE,EAAKD,EAClE,OAAWK,GAAI,MAASA,EAAO,IAChC,CA2BD,IAAIC,WACeC,EAAKC,EAAKC,EAAKC,GAC9B,IACK9yB,EACDtD,EACG0T,EACH2iB,IAGUC,EAPVC,EAAgBhb,0BAML2Z,EAAG,EAEdsB,EAAQ,GACRC,EAAY,GACFC,EAAGzB,iBAAiBH,aAGlC,IAFAphB,EAAMyiB,EAAIx9B,OAEL2K,EAAI,EAAGA,EAAIizB,EAAejzB,GAAK,EAAG,CAIrC,IAHAqzB,EAAOrzB,GAAKizB,EAAgB,GAC5BD,EAAa,EAERt2B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBq2B,EAAU1f,MAAM,EAAIggB,EAAM,GAAKV,EAAIj2B,GAAK,EAAI2W,MAAM,EAAIggB,EAAM,GAAKA,EAAOR,EAAIn2B,GAAK,GAAK,EAAI22B,GAAQhgB,MAAMggB,EAAM,GAAKP,EAAIp2B,GAAK2W,MAAMggB,EAAM,GAAKT,EAAIl2B,GACjJw2B,EAAMx2B,GAAKq2B,EAEU,OAAjBI,EAAUz2B,KACZs2B,GAAc3f,MAAM6f,EAAMx2B,GAAKy2B,EAAUz2B,GAAI,IAG/Cy2B,EAAUz2B,GAAKw2B,EAAMx2B,GAGnBs2B,IAEFpB,GADAoB,EAAazf,OAAOyf,IAItBI,EAAWvB,SAAS7xB,GAAKqzB,EACzBD,EAAWtB,QAAQ9xB,GAAK4xB,CACzB,CAGD,OADAwB,EAAWxB,YAAcA,EACRwB,CACzB,EA4BI,SAASE,EAAWj+B,GAClBR,KAAK0+B,cAAgB,EACrB1+B,KAAKu6B,OAAS,IAAIp3B,MAAM3C,EACzB,CAED,SAAkBm+B,EAACC,EAASP,GAC1Br+B,KAAK6+B,cAAgBD,EACrB5+B,KAAKq+B,MAAQA,CACd,CAED,IACMS,EADaC,GACbD,EAAa,CAAE,EACFhB,SAAAA,EAAKC,EAAKC,EAAKC,GAC9B,IAAce,GAAIlB,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,IAAIvE,QAAQ,MAAO,KAElJ,IAAKoF,EAAWE,GAAa,CAC3B,IACI7zB,IAEGoQ,EACH2iB,EACAM,EAEAL,EACKE,EARQD,EAAGhb,0BAML2Z,EAAG,EAGLuB,EAAG,KAEG,IAAfR,EAAIt9B,SAAiBs9B,EAAI,KAAOC,EAAI,IAAMD,EAAI,KAAOC,EAAI,KAAOV,EAAcS,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAID,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,KAAOX,EAAcS,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,MACjOG,EAAgB,GAGlB,IAAIa,EAAa,IAAcR,EAACL,GAGhC,IAFA7iB,EAAMyiB,EAAIx9B,OAEL2K,EAAI,EAAGA,EAAIizB,EAAejzB,GAAK,EAAG,CAKrC,IAJAkzB,EAAQrgB,iBAAiBzC,GACzBijB,EAAOrzB,GAAKizB,EAAgB,GAC5BD,EAAa,EAERt2B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBq2B,EAAU1f,MAAM,EAAIggB,EAAM,GAAKV,EAAIj2B,GAAK,EAAI2W,MAAM,EAAIggB,EAAM,GAAKA,GAAQV,EAAIj2B,GAAKm2B,EAAIn2B,IAAM,GAAK,EAAI22B,GAAQhgB,MAAMggB,EAAM,IAAMT,EAAIl2B,GAAKo2B,EAAIp2B,IAAM2W,MAAMggB,EAAM,GAAKT,EAAIl2B,GACvKw2B,EAAMx2B,GAAKq2B,EAEO,OAAdI,IACFH,GAAc3f,MAAM6f,EAAMx2B,GAAKy2B,EAAUz2B,GAAI,IAKjDk1B,GADAoB,EAAazf,OAAOyf,GAEpBc,EAAW1E,OAAOpvB,GAAK,IAAIwzB,EAAUR,EAAYE,GACjDC,EAAYD,CACb,CAEDY,EAAWP,cAAgB3B,EAC3B+B,EAAWE,GAAcC,CAC1B,CAED,OAAOH,EAAWE,EAC1B,GAGI,SAASE,EAAgBV,EAAMS,GAC7B,IAAYjC,EAAGiC,EAAWjC,SACfC,EAAGgC,EAAWhC,QACrB1hB,EAAMyhB,EAASx8B,OACf2+B,EAAUvgB,SAASrD,EAAM,GAAKijB,GACrBY,EAAGZ,EAAOS,EAAWlC,YAC9BsC,EAAQ,EAEZ,GAAIF,IAAY5jB,EAAM,GAAiB,IAAZ4jB,GAAiBC,IAAcnC,EAAQkC,GAChE,OAAenC,EAACmC,GAMlB,IAHA,IAAIG,EAAMrC,EAAQkC,GAAWC,GAAa,EAAI,KACnC,EAEJpkB,GAQL,GAPIiiB,EAAQkC,IAAYC,GAAanC,EAAQkC,EAAU,GAAKC,GAC1DC,GAASD,EAAYnC,EAAQkC,KAAalC,EAAQkC,EAAU,GAAKlC,EAAQkC,IACzEnkB,GAAO,GAEPmkB,GAAWG,EAGTH,EAAU,GAAKA,GAAW5jB,EAAM,EAAG,CAErC,GAAI4jB,IAAY5jB,EAAM,EACpB,OAAOyhB,EAASmC,GAGlBnkB,GAAO,CACR,CAGH,SAAgBmkB,IAAYnC,EAASmC,EAAU,GAAKnC,EAASmC,IAAYE,CAC1E,CAUD,MAA0B3hB,iBAAiB,UAAW,GAyDtD,MAAO,CACL6hB,kBA7LF,SAA2BC,GACzB,IAKK33B,EALa43B,EAAGvC,mBAAmBP,aACpC5U,EAASyX,EAAUx2B,EACd02B,EAAGF,EAAUp+B,EACbu+B,EAAGH,EAAUn0B,EACbu0B,EAAGJ,EAAU33B,EAElB0T,EAAMikB,EAAUhD,QACTS,EAAGwC,EAAexC,QACdE,EAAG,EAElB,IAAKt1B,EAAI,EAAGA,EAAI0T,EAAM,EAAG1T,GAAK,EAC5Bo1B,EAAQp1B,GAAKg2B,EAAgB6B,EAAM73B,GAAI63B,EAAM73B,EAAI,GAAI83B,EAAM93B,GAAI+3B,EAAM/3B,EAAI,IACzEs1B,GAAeF,EAAQp1B,GAAGk1B,YAS5B,OANIhV,GAAUxM,IACZ0hB,EAAQp1B,GAAKg2B,EAAgB6B,EAAM73B,GAAI63B,EAAM,GAAIC,EAAM93B,GAAI+3B,EAAM,IACjEzC,GAAeF,EAAQp1B,GAAGk1B,aAG5B0C,EAAetC,YAAcA,GAE9B,EAuKC0C,cAzDF,SAAuB/B,EAAKC,EAAKC,EAAKC,EAAK6B,EAAWC,EAASd,GACzDa,EAAY,EACdA,EAAY,EACHA,EAAY,IACrBA,EAAY,GAGd,IAGKj4B,EAHCm4B,EAAGd,EAAgBY,EAAWb,KAE3BC,EADTa,EAAUA,EAAU,EAAI,EAAIA,EACMd,GAE3B1jB,EAAGuiB,EAAIt9B,OACVy/B,EAAK,EAAID,IACJ,EAAIE,EACHC,EAAGF,EAAKA,EAAKA,EACXG,EAAGJ,EAAKC,EAAKA,EAAK,EAE1BI,EAAWL,EAAKA,EAAKC,EAAK,IAEjBD,EAAKA,EAAKA,EAEbM,EAAGL,EAAKA,EAAKM,EACnBC,EAAWR,EAAKC,EAAKM,EAAKN,EAAKD,EAAKO,EAAKN,EAAKA,EAAKC,IAExCF,EAAKA,EAAKO,EAAKN,EAAKD,EAAKE,EAAKF,EAAKC,EAAKC,IAE1CF,EAAKA,EAAKE,EAEbO,EAAGR,EAAKM,EAAKA,EACnBG,EAAWV,EAAKO,EAAKA,EAAKN,EAAKC,EAAKK,EAAKN,EAAKM,EAAKL,IAExCF,EAAKE,EAAKK,EAAKN,EAAKC,EAAKA,EAAKF,EAAKO,EAAKL,IAE1CF,EAAKE,EAAKA,EAEbS,EAAGJ,EAAKA,EAAKA,EACnBK,EAAWV,EAAKK,EAAKA,EAAKA,EAAKL,EAAKK,EAAKA,EAAKA,EAAKL,IAExCA,EAAKA,EAAKK,EAAKA,EAAKL,EAAKA,EAAKA,EAAKK,EAAKL,EAE7CW,EAAGX,EAAKA,EAAKA,EAEvB,IAAKr4B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBi5B,EAAwB,EAAJj5B,GAASk5B,EAAKjhB,MAAoF,KAA7EqgB,EAASrC,EAAIj2B,GAAKu4B,EAAWpC,EAAIn2B,GAAKw4B,EAAWpC,EAAIp2B,GAAKm5B,EAASjD,EAAIl2B,KAAc,IAE9Hi5B,EAAwB,EAAJj5B,EAAQ,GAAKk5B,EAAKjhB,MAAoF,KAA7EwgB,EAASxC,EAAIj2B,GAAK24B,EAAWxC,EAAIn2B,GAAKo5B,EAAWhD,EAAIp2B,GAAKq5B,EAASnD,EAAIl2B,KAAc,IAElIi5B,EAAwB,EAAJj5B,EAAQ,GAAKk5B,EAAKjhB,MAAoF,KAA7E2gB,EAAS3C,EAAIj2B,GAAK64B,EAAW1C,EAAIn2B,GAAKs5B,EAAWlD,EAAIp2B,GAAKu5B,EAASrD,EAAIl2B,KAAc,IAElIi5B,EAAwB,EAAJj5B,EAAQ,GAAKk5B,EAAKjhB,MAAoF,KAA7E6gB,EAAS7C,EAAIj2B,GAAK+4B,EAAW5C,EAAIn2B,GAAKw5B,EAAWpD,EAAIp2B,GAAKg5B,EAAS9C,EAAIl2B,KAAc,IAGpI,QACD,EAKCy5B,kBApEF,SAA2BxD,EAAKC,EAAKC,EAAKC,EAAKsD,EAAStC,GACtD,MAASC,EAAgBqC,EAAStC,GAC5BsB,EAAG,EAAIL,EAGb,MAAO,CAFGa,EAAKjhB,MAAwK,KAAjKygB,EAAKA,EAAKA,EAAKzC,EAAI,IAAMoC,EAAKK,EAAKA,EAAKA,EAAKL,EAAKK,EAAKA,EAAKA,EAAKL,GAAMlC,EAAI,IAAMkC,EAAKA,EAAKK,EAAKA,EAAKL,EAAKA,EAAKA,EAAKK,EAAKL,GAAMjC,EAAI,GAAKiC,EAAKA,EAAKA,EAAKnC,EAAI,KAAc,IACrLgD,EAAKjhB,MAAwK,KAAjKygB,EAAKA,EAAKA,EAAKzC,EAAI,IAAMoC,EAAKK,EAAKA,EAAKA,EAAKL,EAAKK,EAAKA,EAAKA,EAAKL,GAAMlC,EAAI,IAAMkC,EAAKA,EAAKK,EAAKA,EAAKL,EAAKA,EAAKA,EAAKK,EAAKL,GAAMjC,EAAI,GAAKiC,EAAKA,EAAKA,EAAKnC,EAAI,KAAc,IAEhM,EA+DCgB,gBAAiBA,EACjB1B,cAAeA,EACfmE,cAvQF,SAAuBlE,EAAIC,EAAIkE,EAAIjE,EAAIC,EAAIiE,EAAIhE,EAAIC,EAAIgE,GACrD,GAAW,IAAPF,GAAmB,IAAPC,GAAmB,IAAPC,EAC1B,SAAqBrE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAG3C,IAGIiE,EAHAC,EAAQd,EAAKpiB,KAAKoiB,EAAKtiB,IAAI+e,EAAKF,EAAI,GAAKyD,EAAKtiB,IAAIgf,EAAKF,EAAI,GAAKwD,EAAKtiB,IAAIijB,EAAKD,EAAI,MAC1EV,EAAKpiB,KAAKoiB,EAAKtiB,IAAIif,EAAKJ,EAAI,GAAKyD,EAAKtiB,IAAIkf,EAAKJ,EAAI,GAAKwD,EAAKtiB,IAAIkjB,EAAKF,EAAI,IAClFK,EAAQf,EAAKpiB,KAAKoiB,EAAKtiB,IAAIif,EAAKF,EAAI,GAAKuD,EAAKtiB,IAAIkf,EAAKF,EAAI,GAAKsD,EAAKtiB,IAAIkjB,EAAKD,EAAI,IAetF,OAVIE,EAFAC,EAAQE,EACNF,EAAQC,EACCD,EAAQE,EAAQD,EAEhBA,EAAQC,EAAQF,EAEpBC,EAAQC,EACND,EAAQC,EAAQF,EAEhBE,EAAQF,EAAQC,IAGV,MAAUF,EAAW,IACzC,EAkPF,CAED,IAAOI,IAAG5E,cAES6E,gBAAG,WACpB,IAAaC,EAAGpnB,oBACLqnB,EAAGv2B,KAAKyT,IAEnB,SAAS+iB,EAAiBC,EAAUC,GAClC,IACYC,EADEC,EAAGxiC,KAAKwiC,WAGA,qBAAlBxiC,KAAKyiC,WACPF,EAAW7kB,iBAAiB,UAAW1d,KAAK0iC,GAAGliC,SAWjD,IARA,UAmCI2K,EACAoa,EACIiZ,EACArZ,EACHL,EACE6d,EAxCHC,EAAiBN,EAAQp0B,UACxBrG,EAAG+6B,IACE5iC,KAAK6iC,UAAUriC,OAAS,EAC9Bwa,GAAO,EAKJA,GAAM,CAIX,GAHA8nB,EAAU9iC,KAAK6iC,UAAUh7B,GACzBk7B,EAAc/iC,KAAK6iC,UAAUh7B,EAAI,GAE7BA,IAAM0T,EAAM,GAAK8mB,GAAYU,EAAY16B,EAAIm6B,EAAY,CACvDM,EAAQtxB,IACVsxB,EAAUC,GAGZH,EAAiB,EACjB,KACD,CAED,GAAIG,EAAY16B,EAAIm6B,EAAaH,EAAU,CACzCO,EAAiB/6B,EACjB,KACD,CAEGA,EAAI0T,EAAM,EACZ1T,GAAK,GAEL+6B,EAAiB,EACjB5nB,GAAO,EAEV,CAEDgoB,EAAmBhjC,KAAKijC,kBAAkBp7B,IAAM,CAAA,EAOhD,MA6LyBq7B,EAAKC,EACxBC,EACAC,EACAC,EACAC,EACKC,EACCC,EACJC,EApMOC,EAAGZ,EAAY16B,EAAIm6B,EACvBoB,EAAGd,EAAQz6B,EAAIm6B,EAG1B,GAAIM,EAAQe,GAAI,CACTb,EAAiB/D,aACpB+D,EAAiB/D,WAAa+C,IAAIjD,gBAAgB+D,EAAQnhC,EAAGohC,EAAYphC,GAAKmhC,EAAQp/B,EAAGo/B,EAAQe,GAAIf,EAAQgB,KAG/G,IAAc7E,EAAG+D,EAAiB/D,WAElC,GAAIoD,GAAYsB,GAAetB,EAAWuB,EAAS,CACjD,IAAIG,EAAM1B,GAAYsB,EAAc1E,EAAW1E,OAAO/5B,OAAS,EAAI,EAGnE,IAFA+kB,EAAO0Z,EAAW1E,OAAOwJ,GAAK1F,MAAM79B,OAE/B2K,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACzBo3B,EAASp3B,GAAK8zB,EAAW1E,OAAOwJ,GAAK1F,MAAMlzB,EAGvD,KAAe,CACD63B,EAAiBgB,OACnBrB,EAAMK,EAAiBgB,QAEvBrB,EAAMnJ,cAAcyK,gBAAgBnB,EAAQz3B,EAAEsvB,EAAGmI,EAAQz3B,EAAE64B,EAAGpB,EAAQj7B,EAAE8yB,EAAGmI,EAAQj7B,EAAEq8B,EAAGpB,EAAQ1xB,GAAG3Q,IACnGuiC,EAAiBgB,OAASrB,GAG5BnE,EAAOmE,GAAKN,EAAWuB,IAAYD,EAAcC,IACjD,IACeO,EADXC,EAAiBnF,EAAWP,cAAgBF,EAE5CzB,EAAcuF,EAAQ+B,UAAYhC,GAAYC,EAAQgC,qBAAuBz8B,EAAIy6B,EAAQiC,iBAAmB,EAKhH,IAJAzf,EAAIwd,EAAQ+B,UAAYhC,GAAYC,EAAQgC,qBAAuBz8B,EAAIy6B,EAAQkC,WAAa,EAC5FxpB,GAAO,EACPmK,EAAO8Z,EAAW1E,OAAO/5B,OAElBwa,GAAM,CAGX,GAFA+hB,GAAekC,EAAW1E,OAAOzV,GAAG+Z,cAEb,IAAnBuF,GAAiC,IAAT5F,GAAc1Z,IAAMma,EAAW1E,OAAO/5B,OAAS,EAAG,CAG5E,IAFA+kB,EAAO0Z,EAAW1E,OAAOzV,GAAGuZ,MAAM79B,OAE7B2K,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACzBo3B,EAASp3B,GAAK8zB,EAAW1E,OAAOzV,GAAGuZ,MAAMlzB,GAG3C,KACD,CAAM,GAAIi5B,GAAkBrH,GAAeqH,EAAiBrH,EAAckC,EAAW1E,OAAOzV,EAAI,GAAG+Z,cAAe,CAIjH,IAHAsF,GAAeC,EAAiBrH,GAAekC,EAAW1E,OAAOzV,EAAI,GAAG+Z,cACxEtZ,EAAO0Z,EAAW1E,OAAOzV,GAAGuZ,MAAM79B,OAE7B2K,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACzBo3B,EAASp3B,GAAK8zB,EAAW1E,OAAOzV,GAAGuZ,MAAMlzB,IAAM8zB,EAAW1E,OAAOzV,EAAI,GAAGuZ,MAAMlzB,GAAK8zB,EAAW1E,OAAOzV,GAAGuZ,MAAMlzB,IAAMg5B,EAGtH,KACD,CAEGrf,EAAIK,EAAO,EACbL,GAAK,EAEL9J,GAAO,CAEV,CAEDsnB,EAAQkC,WAAa1f,EACrBwd,EAAQiC,iBAAmBxH,EAAckC,EAAW1E,OAAOzV,GAAG+Z,cAC9DyD,EAAQgC,mBAAqBz8B,CAC9B,CACT,KAAa,CACL,IAAQ48B,EACJC,EACGC,EACAC,EACHC,EAIJ,GAHAtpB,EAAMunB,EAAQnhC,EAAEnB,OAChBskC,EAAW/B,EAAYphC,GAAKmhC,EAAQp/B,EAEhC1D,KAAK+kC,IAAoB,IAAdjC,EAAQtxB,EACrB,GAAI6wB,GAAYsB,EACdpB,EAAS,GAAKuC,EAAS,GACvBvC,EAAS,GAAKuC,EAAS,GACvBvC,EAAS,GAAKuC,EAAS,QAClB,GAAIzC,GAAYuB,EACrBrB,EAAS,GAAKO,EAAQnhC,EAAE,GACxB4gC,EAAS,GAAKO,EAAQnhC,EAAE,GACxB4gC,EAAS,GAAKO,EAAQnhC,EAAE,OACnB,CACL,IAAaqjC,EAAGC,EAAiBnC,EAAQnhC,GACrCujC,EAAUD,EAAiBH,GAqGZ5B,EAnGDX,EAmGMY,EA1ChC,SAAe7b,EAAGtF,EAAG3Z,GACnB,IASI88B,EACKC,EACLC,EACMC,EACNC,EAbGrC,EAAG,GACNsC,EAAKle,EAAE,GACPme,EAAKne,EAAE,GACPoe,EAAKpe,EAAE,GACPqe,EAAKre,EAAE,GACPse,EAAK5jB,EAAE,GACP6jB,EAAK7jB,EAAE,GACP8jB,EAAK9jB,EAAE,GACP+jB,EAAK/jB,EAAE,GA8BX,OAxBAojB,EAAQI,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,GAE/B,IACVX,GAASA,EACTQ,GAAMA,EACNC,GAAMA,EACNC,GAAMA,EACNC,GAAMA,GAGJ,EAAMX,EAAQ,MAChBD,EAAQv5B,KAAKo6B,KAAKZ,GAClBC,EAAQz5B,KAAKq6B,IAAId,GACjBG,EAAS15B,KAAKq6B,KAAK,EAAM59B,GAAK88B,GAASE,EACvCE,EAAS35B,KAAKq6B,IAAI59B,EAAI88B,GAASE,IAE/BC,EAAS,EAAMj9B,EACfk9B,EAASl9B,GAGX66B,EAAI,GAAKoC,EAASE,EAAKD,EAASK,EAChC1C,EAAI,GAAKoC,EAASG,EAAKF,EAASM,EAChC3C,EAAI,GAAKoC,EAASI,EAAKH,EAASO,EAChC5C,EAAI,GAAKoC,EAASK,EAAKJ,EAASQ,EACtB7C,CACX,CAjGmCgD,CAAMlB,EAAWE,GADjC7C,EAAWuB,IAAYD,EAAcC,IAqGjDR,EAAGD,EAAK,GACRE,EAAGF,EAAK,GACRG,EAAGH,EAAK,GACRI,EAAGJ,EAAK,GACHK,EAAG53B,KAAKu6B,MAAM,EAAI9C,EAAKE,EAAK,EAAIH,EAAKE,EAAI,EAAI,EAAID,EAAKA,EAAK,EAAIC,EAAKA,GACnEG,EAAG73B,KAAKw6B,KAAK,EAAIhD,EAAKC,EAAK,EAAIC,EAAKC,GACxCG,EAAG93B,KAAKu6B,MAAM,EAAI/C,EAAKG,EAAK,EAAIF,EAAKC,EAAI,EAAI,EAAIF,EAAKA,EAAK,EAAIE,EAAKA,GAC5EJ,EAAI,GAAKM,EAAU/jB,UACnByjB,EAAI,GAAKO,EAAWhkB,UACpByjB,EAAI,GAAKQ,EAAOjkB,SA5GX,MAED,IAAK5X,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACN,IAAdi7B,EAAQtxB,IACN6wB,GAAYsB,EACdnF,EAAO,EACE6D,EAAWuB,EACpBpF,EAAO,GAEHsE,EAAQz3B,EAAEsvB,EAAE/6B,cAAgBuD,OACzB6/B,EAAiBgB,SACpBhB,EAAiBgB,OAAS,IAGvBhB,EAAiBgB,OAAOn8B,GAQ3B86B,EAAMK,EAAiBgB,OAAOn8B,IAP9B48B,OAA0BlkC,IAAnBuiC,EAAQz3B,EAAEsvB,EAAE9yB,GAAmBi7B,EAAQz3B,EAAEsvB,EAAE,GAAKmI,EAAQz3B,EAAEsvB,EAAE9yB,GACnE68B,OAA0BnkC,IAAnBuiC,EAAQz3B,EAAE64B,EAAEr8B,GAAmBi7B,EAAQz3B,EAAE64B,EAAE,GAAKpB,EAAQz3B,EAAE64B,EAAEr8B,GACnE88B,OAAyBpkC,IAAnBuiC,EAAQj7B,EAAE8yB,EAAE9yB,GAAmBi7B,EAAQj7B,EAAE8yB,EAAE,GAAKmI,EAAQj7B,EAAE8yB,EAAE9yB,GAClE+8B,OAAyBrkC,IAAnBuiC,EAAQj7B,EAAEq8B,EAAEr8B,GAAmBi7B,EAAQj7B,EAAEq8B,EAAE,GAAKpB,EAAQj7B,EAAEq8B,EAAEr8B,GAClE86B,EAAMnJ,cAAcyK,gBAAgBQ,EAAMC,EAAMC,EAAKC,GAAKnkC,IAC1DuiC,EAAiBgB,OAAOn8B,GAAK86B,IAIrBK,EAAiBgB,OAQ3BrB,EAAMK,EAAiBgB,QAPvBS,EAAO3B,EAAQz3B,EAAEsvB,EACjB+J,EAAO5B,EAAQz3B,EAAE64B,EACjBS,EAAM7B,EAAQj7B,EAAE8yB,EAChBiK,EAAM9B,EAAQj7B,EAAEq8B,EAChBvB,EAAMnJ,cAAcyK,gBAAgBQ,EAAMC,EAAMC,EAAKC,GAAKnkC,IAC1DqiC,EAAQE,iBAAmBL,GAK7BnE,EAAOmE,GAAKN,EAAWuB,IAAYD,EAAcC,MAIrDkB,EAAW/B,EAAYphC,GAAKmhC,EAAQp/B,EACpCmhC,EAAyB,IAAd/B,EAAQtxB,EAAUsxB,EAAQnhC,EAAEkG,GAAKi7B,EAAQnhC,EAAEkG,IAAMi9B,EAASj9B,GAAKi7B,EAAQnhC,EAAEkG,IAAM22B,EAEpE,qBAAlBx+B,KAAKyiC,SACPF,EAAS16B,GAAKg9B,EAEdtC,EAAWsC,CAIlB,CAGD,OADAvC,EAAQp0B,UAAY00B,EACLL,CAChB,CA0DD,SAAyB0C,EAAChkC,GACxB,IAAWuiC,EAAGviC,EAAO,GAAKwe,UACdgkB,EAAGxiC,EAAO,GAAKwe,UACnBikB,EAAGziC,EAAO,GAAKwe,UACjB4mB,EAAGz6B,KAAK06B,IAAI9C,EAAU,GACtB+C,EAAG36B,KAAK06B,IAAI7C,EAAW,GACvB+C,EAAG56B,KAAK06B,IAAI5C,EAAO,GACnB+C,EAAG76B,KAAKq6B,IAAIzC,EAAU,KACnB53B,KAAKq6B,IAAIxC,EAAW,GACzBiD,EAAK96B,KAAKq6B,IAAIvC,EAAO,GAKzB,MAAO,CAHC+C,EAAKE,EAAKH,EAAKH,EAAKE,EAAKG,EACzBD,EAAKF,EAAKC,EAAKH,EAAKM,EAAKD,EACzBL,EAAKM,EAAKH,EAAKC,EAAKF,EAAKG,EAHzBL,EAAKE,EAAKC,EAAKC,EAAKE,EAAKD,EAKlC,CAED,SAASE,IACP,IAAIvE,EAAWriC,KAAK+lB,KAAK8gB,cAAgB7mC,KAAKwiC,WAClCnK,EAAGr4B,KAAK6iC,UAAU,GAAGx6B,EAAIrI,KAAKwiC,WAC/BsE,EAAG9mC,KAAK6iC,UAAU7iC,KAAK6iC,UAAUriC,OAAS,GAAG6H,EAAIrI,KAAKwiC,WAEjE,KAAMH,IAAariC,KAAK+mC,SAAS1C,WAAarkC,KAAK+mC,SAAS1C,YAAcnC,IAAcliC,KAAK+mC,SAAS1C,WAAayC,GAAWzE,GAAYyE,GAAW9mC,KAAK+mC,SAAS1C,UAAYhM,GAAYgK,EAAWhK,IAAY,CAC5Mr4B,KAAK+mC,SAAS1C,WAAahC,IAC7BriC,KAAK+mC,SAASzC,oBAAsB,EACpCtkC,KAAK+mC,SAAS74B,UAAY,GAG5B,IAAI84B,EAAehnC,KAAKoiC,iBAAiBC,EAAUriC,KAAK+mC,UACxD/mC,KAAK0iC,GAAKsE,CACX,CAGD,OADAhnC,KAAK+mC,SAAS1C,UAAYhC,EACfriC,KAAC0iC,EACb,CAED,SAASuE,EAAU3nB,GACjB,IAAI4nB,EAEJ,GAAsB,mBAAlBlnC,KAAKyiC,SACPyE,EAAkB5nB,EAAMtf,KAAKmnC,KAEzBhF,EAAQniC,KAAKoB,EAAI8lC,GAAmB,OACtClnC,KAAKoB,EAAI8lC,EACTlnC,KAAKonC,MAAO,QAMd,IAHA,IAAIv/B,EAAI,EACD0T,EAAGvb,KAAKoB,EAAEZ,OAEVqH,EAAI0T,GACT2rB,EAAkB5nB,EAAIzX,GAAK7H,KAAKmnC,KAE5BhF,EAAQniC,KAAKoB,EAAEyG,GAAKq/B,GAAmB,OACzClnC,KAAKoB,EAAEyG,GAAKq/B,EACZlnC,KAAKonC,MAAO,GAGdv/B,GAAK,CAGV,CAED,SAASw/B,IACP,GAAIrnC,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,SAAYtnC,KAAKunC,gBAAgB/mC,OAI3E,GAAIR,KAAKwnC,KACPxnC,KAAKinC,UAAUjnC,KAAK0iC,QADtB,CAOA,IAAK76B,EAFL7H,KAAKwnC,MAAO,EACZxnC,KAAKonC,KAAOpnC,KAAKynC,cAEjB,IAAIlsB,EAAMvb,KAAKunC,gBAAgB/mC,OACjBknC,EAAG1nC,KAAK2nC,GAAK3nC,KAAK0iC,GAAK1iC,KAAKuQ,KAAKpF,EAE/C,IAAKtD,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB6/B,EAAa1nC,KAAKunC,gBAAgB1/B,GAAG6/B,GAGvC1nC,KAAKinC,UAAUS,GACf1nC,KAAKynC,eAAgB,EACrBznC,KAAKwnC,MAAO,EACZxnC,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,OAfnC,CAgBF,CAED,SAASM,EAAUC,GACjB7nC,KAAKunC,gBAAgBviC,KAAK6iC,GAC1B7nC,KAAK8W,UAAUgxB,mBAAmB9nC,KACnC,CAED,SAAsB+nC,EAAC/P,EAAMznB,EAAM42B,EAAMrwB,GACvC9W,KAAKyiC,SAAW,iBAChBziC,KAAKmnC,KAAOA,GAAQ,EACpBnnC,KAAKuQ,KAAOA,EACZvQ,KAAKoB,EAAI+lC,EAAO52B,EAAKpF,EAAIg8B,EAAO52B,EAAKpF,EACrCnL,KAAK0iC,GAAKnyB,EAAKpF,EACfnL,KAAKonC,MAAO,EACZpnC,KAAKg4B,KAAOA,EACZh4B,KAAK8W,UAAYA,EACjB9W,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKmL,GAAI,EACTnL,KAAK2nC,IAAK,EACV3nC,KAAKgoC,IAAM,EACXhoC,KAAKunC,gBAAkB,GACvBvnC,KAAKynC,eAAgB,EACrBznC,KAAKioC,SAAWZ,EAChBrnC,KAAKinC,UAAYA,EACjBjnC,KAAK4nC,UAAYA,CAClB,CAED,SAASM,EAAyBlQ,EAAMznB,EAAM42B,EAAMrwB,GAWlD,IAAKjP,EAVL7H,KAAKyiC,SAAW,mBAChBziC,KAAKmnC,KAAOA,GAAQ,EACpBnnC,KAAKuQ,KAAOA,EACZvQ,KAAKonC,MAAO,EACZpnC,KAAKg4B,KAAOA,EACZh4B,KAAK8W,UAAYA,EACjB9W,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKmL,GAAI,EACTnL,KAAK2nC,IAAK,EACV3nC,KAAKsnC,SAAW,EAEhB,IAAI/rB,EAAMhL,EAAKpF,EAAE3K,OAKjB,IAJAR,KAAKoB,EAAIsc,iBAAiB,UAAWnC,GACrCvb,KAAK0iC,GAAKhlB,iBAAiB,UAAWnC,GACtCvb,KAAKgoC,IAAMtqB,iBAAiB,UAAWnC,GAElC1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKoB,EAAEyG,GAAK0I,EAAKpF,EAAEtD,GAAK7H,KAAKmnC,KAC7BnnC,KAAK0iC,GAAG76B,GAAK0I,EAAKpF,EAAEtD,GAGtB7H,KAAKynC,eAAgB,EACrBznC,KAAKunC,gBAAkB,GACvBvnC,KAAKioC,SAAWZ,EAChBrnC,KAAKinC,UAAYA,EACjBjnC,KAAK4nC,UAAYA,CAClB,CAED,SAA+BO,EAACnQ,EAAMznB,EAAM42B,EAAMrwB,GAChD9W,KAAKyiC,SAAW,iBAChBziC,KAAK6iC,UAAYtyB,EAAKpF,EACtBnL,KAAKijC,kBAAoB,GACzBjjC,KAAKwiC,WAAaxK,EAAKznB,KAAK6W,GAC5BpnB,KAAKsnC,SAAW,EAChBtnC,KAAK+mC,SAAW,CACd1C,UAAWnC,EACXh0B,UAAW,EACXpN,MAAO,EACPwjC,oBAAqB,GAEvBtkC,KAAKmL,GAAI,EACTnL,KAAK2nC,IAAK,EACV3nC,KAAKuQ,KAAOA,EACZvQ,KAAKmnC,KAAOA,GAAQ,EACpBnnC,KAAKg4B,KAAOA,EACZh4B,KAAK8W,UAAYA,EACjB9W,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKoB,EAAI8gC,EACTliC,KAAK0iC,GAAKR,EACVliC,KAAKynC,eAAgB,EACrBznC,KAAKioC,SAAWZ,EAChBrnC,KAAKinC,UAAYA,EACjBjnC,KAAKoiC,iBAAmBA,EACxBpiC,KAAKunC,gBAAkB,CAACX,EAAsBra,KAAKvsB,OACnDA,KAAK4nC,UAAYA,CAClB,CAED,SAASQ,EAAkCpQ,EAAMznB,EAAM42B,EAAMrwB,GAE3D,IAAIjP,EADJ7H,KAAKyiC,SAAW,mBAEhB,IACI9gC,EACC+B,EACDmgC,EACEC,EAJCvoB,EAAGhL,EAAKpF,EAAE3K,OAMjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAM,EAAG1T,GAAK,EACxB0I,EAAKpF,EAAEtD,GAAGg8B,IAAMtzB,EAAKpF,EAAEtD,GAAGlG,GAAK4O,EAAKpF,EAAEtD,EAAI,IAAM0I,EAAKpF,EAAEtD,EAAI,GAAGlG,IAChEA,EAAI4O,EAAKpF,EAAEtD,GAAGlG,EACd+B,EAAI6M,EAAKpF,EAAEtD,EAAI,GAAGlG,EAClBkiC,EAAKtzB,EAAKpF,EAAEtD,GAAGg8B,GACfC,EAAKvzB,EAAKpF,EAAEtD,GAAGi8B,IAEE,IAAbniC,EAAEnB,SAAkBmB,EAAE,KAAO+B,EAAE,IAAM/B,EAAE,KAAO+B,EAAE,KAAOs+B,IAAI3E,cAAc17B,EAAE,GAAIA,EAAE,GAAI+B,EAAE,GAAIA,EAAE,GAAI/B,EAAE,GAAKkiC,EAAG,GAAIliC,EAAE,GAAKkiC,EAAG,KAAO7B,IAAI3E,cAAc17B,EAAE,GAAIA,EAAE,GAAI+B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKogC,EAAG,GAAIpgC,EAAE,GAAKogC,EAAG,KAAoB,IAAbniC,EAAEnB,SAAkBmB,EAAE,KAAO+B,EAAE,IAAM/B,EAAE,KAAO+B,EAAE,IAAM/B,EAAE,KAAO+B,EAAE,KAAOs+B,IAAIR,cAAc7/B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI+B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI/B,EAAE,GAAKkiC,EAAG,GAAIliC,EAAE,GAAKkiC,EAAG,GAAIliC,EAAE,GAAKkiC,EAAG,KAAO7B,IAAIR,cAAc7/B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI+B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKogC,EAAG,GAAIpgC,EAAE,GAAKogC,EAAG,GAAIpgC,EAAE,GAAKogC,EAAG,OACldvzB,EAAKpF,EAAEtD,GAAGg8B,GAAK,KACftzB,EAAKpF,EAAEtD,GAAGi8B,GAAK,MAGbniC,EAAE,KAAO+B,EAAE,IAAM/B,EAAE,KAAO+B,EAAE,IAAgB,IAAVmgC,EAAG,IAAsB,IAAVA,EAAG,IAAsB,IAAVC,EAAG,IAAsB,IAAVA,EAAG,KACnE,IAAbniC,EAAEnB,QAAgBmB,EAAE,KAAO+B,EAAE,IAAgB,IAAVmgC,EAAG,IAAsB,IAAVC,EAAG,MACvDvzB,EAAKpF,EAAEtD,GAAGg8B,GAAK,KACftzB,EAAKpF,EAAEtD,GAAGi8B,GAAK,OAMvB9jC,KAAKunC,gBAAkB,CAACX,EAAsBra,KAAKvsB,OACnDA,KAAKuQ,KAAOA,EACZvQ,KAAK6iC,UAAYtyB,EAAKpF,EACtBnL,KAAKijC,kBAAoB,GACzBjjC,KAAKwiC,WAAaxK,EAAKznB,KAAK6W,GAC5BpnB,KAAKmL,GAAI,EACTnL,KAAK2nC,IAAK,EACV3nC,KAAKynC,eAAgB,EACrBznC,KAAKmnC,KAAOA,GAAQ,EACpBnnC,KAAKg4B,KAAOA,EACZh4B,KAAK8W,UAAYA,EACjB9W,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKioC,SAAWZ,EAChBrnC,KAAKinC,UAAYA,EACjBjnC,KAAKoiC,iBAAmBA,EACxBpiC,KAAKsnC,SAAW,EAChB,IAAIe,EAAS93B,EAAKpF,EAAE,GAAGxJ,EAAEnB,OAIzB,IAHAR,KAAKoB,EAAIsc,iBAAiB,UAAW2qB,GACrCroC,KAAK0iC,GAAKhlB,iBAAiB,UAAW2qB,GAEjCxgC,EAAI,EAAGA,EAAIwgC,EAAQxgC,GAAK,EAC3B7H,KAAKoB,EAAEyG,GAAKq6B,EACZliC,KAAK0iC,GAAG76B,GAAKq6B,EAGfliC,KAAK+mC,SAAW,CACd1C,UAAWnC,EACXh0B,UAAW,EACXpN,MAAO4c,iBAAiB,UAAW2qB,IAErCroC,KAAK4nC,UAAYA,CAClB,CA+BD,IAAIlb,EAAK,CACP4b,QA9BF,SAAiBtQ,EAAMznB,EAAMvN,EAAMmkC,EAAMrwB,GACvC,IAAI1R,EAEJ,GAAKmL,EAAKpF,EAAE3K,OAED,GAAqB,iBAAV+P,EAACpF,EAAE,GACvB/F,EAAI,IAAI8iC,EAAyBlQ,EAAMznB,EAAM42B,EAAMrwB,QAEnD,OAAQ9T,GACN,KAAK,EACHoC,EAAI,IAA0B+iC,EAACnQ,EAAMznB,EAAM42B,EAAMrwB,GACjD,MAEF,KAAK,EACH1R,EAAI,IAAqCgjC,EAACpQ,EAAMznB,EAAM42B,EAAMrwB,QAVhE1R,EAAI,IAAI2iC,EAAc/P,EAAMznB,EAAM42B,EAAMrwB,GAsB1C,OAJI1R,EAAEmiC,gBAAgB/mC,QACpBsW,EAAUgxB,mBAAmB1iC,GAGxBA,CACR,GAKD,OAASsnB,CACb,CA3gBwB,GA6gBtB,SAAiC6b,2BAEjCA,CAAAA,yBAAyBlpC,UAAY,CACnCyoC,mBAAoB,SAA4BpsB,IACA,IAA1C1b,KAAKwoC,kBAAkBhgC,QAAQkT,KACjC1b,KAAKwoC,kBAAkBxjC,KAAK0W,GAC5B1b,KAAK8W,UAAUgxB,mBAAmB9nC,MAClCA,KAAKyoC,aAAc,EAEtB,EACDC,yBAA0B,WAExB,IAAI7gC,EADJ7H,KAAKonC,MAAO,EAEZ,MAAUpnC,KAAKwoC,kBAAkBhoC,OAEjC,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKwoC,kBAAkB3gC,GAAGogC,WAEtBjoC,KAAKwoC,kBAAkB3gC,GAAGu/B,OAC5BpnC,KAAKonC,MAAO,EAGjB,EACDuB,6BAA8B,SAAsC7xB,GAClE9W,KAAK8W,UAAYA,EACjB9W,KAAKwoC,kBAAoB,GACzBxoC,KAAKonC,MAAO,EACZpnC,KAAKyoC,aAAc,CACpB,GAGH,IAAaG,UAKOxM,YAAC,GAJnB,WACE,OAAO1e,iBAAiB,UAAW,EACpC,IAKH,SAASmrB,YACP7oC,KAAKgJ,GAAI,EACThJ,KAAKw8B,QAAU,EACfx8B,KAAKy8B,WAAa,EAClBz8B,KAAKoB,EAAI4c,iBAAiBhe,KAAKy8B,YAC/Bz8B,KAAKqL,EAAI2S,iBAAiBhe,KAAKy8B,YAC/Bz8B,KAAK6H,EAAImW,iBAAiBhe,KAAKy8B,WAChC,CAEDoM,UAAUxpC,UAAUypC,YAAc,SAAU/gB,EAAQxM,GAClDvb,KAAKgJ,EAAI+e,EACT/nB,KAAK+oC,UAAUxtB,GAGf,IAFA,IAAK1T,EAAG,EAEDA,EAAI0T,GACTvb,KAAKoB,EAAEyG,GAAK+gC,UAAUjM,aACtB38B,KAAKqL,EAAExD,GAAK+gC,UAAUjM,aACtB38B,KAAK6H,EAAEA,GAAK+gC,UAAUjM,aACtB90B,GAAK,CAEX,EAEEghC,UAAUxpC,UAAU0pC,UAAY,SAAUxtB,GACxC,KAAOvb,KAAKy8B,WAAalhB,GACvBvb,KAAKgpC,oBAGPhpC,KAAKw8B,QAAUjhB,CACnB,EAEEstB,UAAUxpC,UAAU2pC,kBAAoB,WACtChpC,KAAKoB,EAAIpB,KAAKoB,EAAEy3B,OAAO7a,iBAAiBhe,KAAKy8B,aAC7Cz8B,KAAK6H,EAAI7H,KAAK6H,EAAEgxB,OAAO7a,iBAAiBhe,KAAKy8B,aAC7Cz8B,KAAKqL,EAAIrL,KAAKqL,EAAEwtB,OAAO7a,iBAAiBhe,KAAKy8B,aAC7Cz8B,KAAKy8B,YAAc,CACvB,EAEEoM,UAAUxpC,UAAU4pC,QAAU,SAAUtO,EAAGuJ,EAAGlhC,EAAMkmC,EAAKxP,GACvD,IAAI9b,EAOJ,OANA5d,KAAKw8B,QAAU5wB,KAAKmT,IAAI/e,KAAKw8B,QAAS0M,EAAM,GAExClpC,KAAKw8B,SAAWx8B,KAAKy8B,YACvBz8B,KAAKgpC,oBAGChmC,GACN,IAAK,IACH4a,EAAM5d,KAAKoB,EACX,MAEF,IAAK,IACHwc,EAAM5d,KAAK6H,EACX,MAEF,IAAK,IACH+V,EAAM5d,KAAKqL,EACX,MAEF,QACEuS,EAAM,KAILA,EAAIsrB,IAAQtrB,EAAIsrB,KAASxP,KAC5B9b,EAAIsrB,GAAON,UAAUjM,cAGvB/e,EAAIsrB,GAAK,GAAKvO,EACd/c,EAAIsrB,GAAK,GAAKhF,CAClB,EAEE2E,UAAUxpC,UAAU8pC,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIP,EAAKxP,GACvE15B,KAAKipC,QAAQG,EAAIC,EAAI,IAAKH,EAAKxP,GAC/B15B,KAAKipC,QAAQK,EAAIC,EAAI,IAAKL,EAAKxP,GAC/B15B,KAAKipC,QAAQO,EAAIC,EAAI,IAAKP,EAAKxP,EACnC,EAEEmP,UAAUxpC,UAAU+H,QAAU,WAC5B,IAAIsiC,EAAU,IAAab,UAC3Ba,EAAQZ,YAAY9oC,KAAKgJ,EAAGhJ,KAAKw8B,SACjC,IAAImN,EAAW3pC,KAAKoB,EACPwoC,EAAG5pC,KAAKqL,EACjBw+B,EAAW7pC,KAAK6H,EACZ0uB,EAAG,EAEPv2B,KAAKgJ,IACP0gC,EAAQP,YAAYQ,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAIE,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAID,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAI,GAAG,GACzHrT,EAAO,GAGT,IAEI1uB,EAFAiiC,EAAM9pC,KAAKw8B,QAAU,EAClBjhB,EAAGvb,KAAKw8B,QAGf,IAAK30B,EAAI0uB,EAAM1uB,EAAI0T,EAAK1T,GAAK,EAC3B6hC,EAAQP,YAAYQ,EAASG,GAAK,GAAIH,EAASG,GAAK,GAAID,EAASC,GAAK,GAAID,EAASC,GAAK,GAAIF,EAAUE,GAAK,GAAIF,EAAUE,GAAK,GAAIjiC,GAAG,GACrIiiC,GAAO,EAGT,OAAOJ,CACX,EAEEb,UAAUxpC,UAAUmB,OAAS,WAC3B,OAAWR,KAACw8B,OAChB,EAEE,IAAIuN,WAoCStvB,QAAG2hB,YAAY,GAnC1B,WACE,OAAWyM,IAAAA,SACZ,IAED,SAAiBmB,GACf,IACIniC,EADG0T,EAAGyuB,EAAUxN,QAGpB,IAAK30B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+gC,UAAUhM,QAAQoN,EAAU5oC,EAAEyG,IAC9B+gC,UAAUhM,QAAQoN,EAAUniC,EAAEA,IAC9B+gC,UAAUhM,QAAQoN,EAAU3+B,EAAExD,IAC9BmiC,EAAU5oC,EAAEyG,GAAK,KACjBmiC,EAAUniC,EAAEA,GAAK,KACjBmiC,EAAU3+B,EAAExD,GAAK,KAGnBmiC,EAAUxN,QAAU,EACpBwN,EAAUhhC,GAAI,CACf,IAiBDyR,QAAQwvB,MAfR,SAAeC,GACb,IACKriC,EADKsiC,EAAG1vB,QAAQkiB,aAEjBphB,OAAwBhb,IAAlB2pC,EAAM1N,QAAwB0N,EAAM9oC,EAAEZ,OAAS0pC,EAAM1N,QAI/D,IAHA2N,EAAOpB,UAAUxtB,GACjB4uB,EAAOnhC,EAAIkhC,EAAMlhC,EAEZnB,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBsiC,EAAOhB,YAAYe,EAAM9oC,EAAEyG,GAAG,GAAIqiC,EAAM9oC,EAAEyG,GAAG,GAAIqiC,EAAM7+B,EAAExD,GAAG,GAAIqiC,EAAM7+B,EAAExD,GAAG,GAAIqiC,EAAMriC,EAAEA,GAAG,GAAIqiC,EAAMriC,EAAEA,GAAG,GAAIA,GAG/G,OAAasiC,CACd,EAIa1vB,SAFHA,QAKb,SAAwB2vB,kBACtBpqC,KAAKw8B,QAAU,EACfx8B,KAAKy8B,WAAa,EAClBz8B,KAAK4lB,OAAS5H,iBAAiBhe,KAAKy8B,WACrC,CAED2N,gBAAgB/qC,UAAUgrC,SAAW,SAAU7K,GACzCx/B,KAAKw8B,UAAYx8B,KAAKy8B,aACxBz8B,KAAK4lB,OAAS5lB,KAAK4lB,OAAOiT,OAAO7a,iBAAiBhe,KAAKy8B,aACvDz8B,KAAKy8B,YAAc,GAGrBz8B,KAAK4lB,OAAO5lB,KAAKw8B,SAAWgD,EAC5Bx/B,KAAKw8B,SAAW,CACpB,EAEE4N,gBAAgB/qC,UAAUirC,cAAgB,WACxC,IAAKziC,EAEL,IAAKA,EAAI,EAAGA,EAAI7H,KAAKw8B,QAAS30B,GAAK,EACjCkiC,UAAUnN,QAAQ58B,KAAK4lB,OAAO/d,IAGhC7H,KAAKw8B,QAAU,CACnB,EAEE,IAAuB+N,qBACjB7d,GAAK,CACP8d,mBAOF,WAUE,OAPIhO,QAEgBE,KADlBF,SAAW,GAGO,IAAmB4N,eAIxC,EAjBCxN,QAmBF,SAAiB6N,GACf,IAAI5iC,EACG0T,EAAGkvB,EAAgBjO,QAE1B,IAAK30B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBkiC,UAAUnN,QAAQ6N,EAAgB7kB,OAAO/d,IAG3C4iC,EAAgBjO,QAAU,EAEtBA,UAAYC,aACdC,KAAOG,QAAgB,OAAEH,MACzBD,YAAc,GAGhBC,KAAKF,SAAWiO,EAChBjO,SAAW,CACZ,GAlCUA,QAAG,EACVC,WAAa,EACTC,KAAG1e,iBAAiBye,YAkCrB/P,IAxCHA,GAIO8P,QACPC,WACIC,KAqCNgO,qBAAuB,WACzB,IAAaxI,GAAI,OAEjB,SAAyByI,EAACtI,EAAUuI,EAAetI,GACjD,IACYuI,EACRC,EACMC,EACNjmB,EACC3Z,EACDga,EACII,EACJiZ,EACWwM,EATGpI,EAAGN,EAAQp0B,UAUzBy5B,EAAK3nC,KAAK6iC,UAEd,GAAIR,EAAWsF,EAAG,GAAGt/B,EAAIrI,KAAKwiC,WAC5BqI,EAAWlD,EAAG,GAAGhmC,EAAE,GACnBopC,GAAS,EACTnI,EAAiB,OACRP,GAAAA,GAAYsF,EAAGA,EAAGnnC,OAAS,GAAG6H,EAAIrI,KAAKwiC,WAChDqI,EAAWlD,EAAGA,EAAGnnC,OAAS,GAAGmB,EAAIgmC,EAAGA,EAAGnnC,OAAS,GAAGmB,EAAE,GAAKgmC,EAAGA,EAAGnnC,OAAS,GAAGkD,EAAE,GAO9EqnC,GAAS,MACJ,CAQL,IAPA,MAIehI,EACKC,EALhBn7B,EAAI+6B,IACE+E,EAAGnnC,OAAS,KACX,EAKJwa,IACL8nB,EAAU6E,EAAG9/B,MACbk7B,EAAc4E,EAAG9/B,EAAI,IAELQ,EAAIrI,KAAKwiC,WAAaH,KAIlCx6B,EAAI0T,EAAM,EACZ1T,GAAK,EAELmT,GAAO,EAQX,GAJAgoB,EAAmBhjC,KAAKijC,kBAAkBp7B,IAAM,CAAA,EAEhD+6B,EAAiB/6B,IADjBkjC,EAAuB,IAAdjI,EAAQtxB,GAGJ,CACX,GAAI6wB,GAAYU,EAAY16B,EAAIrI,KAAKwiC,WACnChE,EAAO,OACE6D,GAAAA,EAAWS,EAAQz6B,EAAIrI,KAAKwiC,WACrChE,EAAO,MACF,CACL,IAAImE,EAEAK,EAAiBgB,OACnBrB,EAAMK,EAAiBgB,QAEvBrB,EAAMnJ,cAAcyK,gBAAgBnB,EAAQz3B,EAAEsvB,EAAGmI,EAAQz3B,EAAE64B,EAAGpB,EAAQj7B,EAAE8yB,EAAGmI,EAAQj7B,EAAEq8B,GAAGzjC,IACxFuiC,EAAiBgB,OAASrB,GAG5BnE,EAAOmE,GAAKN,GAAYS,EAAQz6B,EAAIrI,KAAKwiC,cAAgBO,EAAY16B,EAAIrI,KAAKwiC,YAAcM,EAAQz6B,EAAIrI,KAAKwiC,aAC9G,CAEDsI,EAAW/H,EAAYphC,EAAIohC,EAAYphC,EAAE,GAAKmhC,EAAQp/B,EAAE,EACzD,CAEDmnC,EAAW/H,EAAQnhC,EAAE,EACtB,CAMD,IAJAwjB,EAAOylB,EAAcpO,QACrBjX,EAAOslB,EAAShjC,EAAE,GAAGrH,OACrB8hC,EAAQp0B,UAAY00B,EAEf9d,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzB,IAAK3Z,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACzB6/B,EAAcD,EAASF,EAAShjC,EAAEid,GAAG3Z,GAAK0/B,EAAShjC,EAAEid,GAAG3Z,IAAM2/B,EAASjjC,EAAEid,GAAG3Z,GAAK0/B,EAAShjC,EAAEid,GAAG3Z,IAAMqzB,EACrGoM,EAAc/iC,EAAEid,GAAG3Z,GAAK6/B,EACxBA,EAAcD,EAASF,EAASx/B,EAAEyZ,GAAG3Z,GAAK0/B,EAASx/B,EAAEyZ,GAAG3Z,IAAM2/B,EAASz/B,EAAEyZ,GAAG3Z,GAAK0/B,EAASx/B,EAAEyZ,GAAG3Z,IAAMqzB,EACrGoM,EAAcv/B,EAAEyZ,GAAG3Z,GAAK6/B,EACxBA,EAAcD,EAASF,EAASzpC,EAAE0jB,GAAG3Z,GAAK0/B,EAASzpC,EAAE0jB,GAAG3Z,IAAM2/B,EAAS1pC,EAAE0jB,GAAG3Z,GAAK0/B,EAASzpC,EAAE0jB,GAAG3Z,IAAMqzB,EACrGoM,EAAcxpC,EAAE0jB,GAAG3Z,GAAK6/B,CAG7B,CAED,aACE,IAAI3I,EAAWriC,KAAK+lB,KAAK8gB,cAAgB7mC,KAAKwiC,WAClCnK,EAAGr4B,KAAK6iC,UAAU,GAAGx6B,EAAIrI,KAAKwiC,WACtCsE,EAAU9mC,KAAK6iC,UAAU7iC,KAAK6iC,UAAUriC,OAAS,GAAG6H,EAAIrI,KAAKwiC,WACpD6B,EAAGrkC,KAAK+mC,SAAS1C,UAS9B,OAPMA,IAAcnC,IAAcmC,EAAYhM,GAAYgK,EAAWhK,GAAYgM,EAAYyC,GAAWzE,EAAWyE,KAEjH9mC,KAAK+mC,SAAS74B,UAAYm2B,EAAYhC,EAAWriC,KAAK+mC,SAAS74B,UAAY,EAC3ElO,KAAK2qC,iBAAiBtI,EAAUriC,KAAK0iC,GAAI1iC,KAAK+mC,WAGhD/mC,KAAK+mC,SAAS1C,UAAYhC,EACnBriC,KAAK0iC,EACb,CAED,SAASuI,IACPjrC,KAAKkrC,MAAQlrC,KAAKmrC,oBACnB,CAmBD,SAASlE,EAAUyC,IAjBnB,SAAqB0B,EAAQC,GAC3B,GAAID,EAAO5O,UAAY6O,EAAO7O,SAAW4O,EAAOpiC,IAAMqiC,EAAOriC,EAC3D,OAAY,EAGd,IAAKnB,EACD0T,EAAM6vB,EAAO5O,QAEjB,IAAK30B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,GAAIujC,EAAOhqC,EAAEyG,GAAG,KAAOwjC,EAAOjqC,EAAEyG,GAAG,IAAMujC,EAAOhqC,EAAEyG,GAAG,KAAOwjC,EAAOjqC,EAAEyG,GAAG,IAAMujC,EAAO//B,EAAExD,GAAG,KAAOwjC,EAAOhgC,EAAExD,GAAG,IAAMujC,EAAO//B,EAAExD,GAAG,KAAOwjC,EAAOhgC,EAAExD,GAAG,IAAMujC,EAAOvjC,EAAEA,GAAG,KAAOwjC,EAAOxjC,EAAEA,GAAG,IAAMujC,EAAOvjC,EAAEA,GAAG,KAAOwjC,EAAOxjC,EAAEA,GAAG,GAC1N,OAAY,EAIhB,OAAO,CACR,EAGMyjC,CAAYtrC,KAAKoB,EAAGsoC,KACvB1pC,KAAKoB,EAAI2oC,UAAUE,MAAMP,GACzB1pC,KAAKmrC,qBAAqBb,gBAC1BtqC,KAAKmrC,qBAAqBd,SAASrqC,KAAKoB,GACxCpB,KAAKonC,MAAO,EACZpnC,KAAKkrC,MAAQlrC,KAAKmrC,qBAErB,CAED,SAA+B9D,IAC7B,GAAIrnC,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,QAI1C,GAAKtnC,KAAKunC,gBAAgB/mC,OAK1B,GAAIR,KAAKwnC,KACPxnC,KAAKinC,UAAUjnC,KAAK0iC,QADtB,CAOA,IAAcgF,EAUV7/B,EAZJ7H,KAAKwnC,MAAO,EACZxnC,KAAKonC,MAAO,EAIVM,EADE1nC,KAAK2nC,GACM3nC,KAAK0iC,GACT1iC,KAAKuQ,KAAK2V,GACNlmB,KAAKuQ,KAAK2V,GAAG/a,EAEbnL,KAAKuQ,KAAK8U,GAAGla,EAI5B,IAAOoQ,EAAGvb,KAAKunC,gBAAgB/mC,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB6/B,EAAa1nC,KAAKunC,gBAAgB1/B,GAAG6/B,GAGvC1nC,KAAKinC,UAAUS,GACf1nC,KAAKwnC,MAAO,EACZxnC,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,OAvBnC,MAPCtnC,KAAKonC,MAAO,CA+Bf,CAED,SAAsBmE,EAACvT,EAAMznB,EAAMvN,GACjChD,KAAKyiC,SAAW,QAChBziC,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAK8W,UAAYkhB,EACjBh4B,KAAKg4B,KAAOA,EACZh4B,KAAKuQ,KAAOA,EACZvQ,KAAKmL,GAAI,EACTnL,KAAK2nC,IAAK,EACV3nC,KAAKonC,MAAO,EACZ,IAAY1f,EAAY,IAAT1kB,EAAauN,EAAK8U,GAAGla,EAAIoF,EAAK2V,GAAG/a,EAChDnL,KAAKoB,EAAI2oC,UAAUE,MAAMviB,GACzB1nB,KAAK0iC,GAAKqH,UAAUE,MAAMjqC,KAAKoB,GAC/BpB,KAAKmrC,qBAAuBZ,oBAAoBC,qBAChDxqC,KAAKkrC,MAAQlrC,KAAKmrC,qBAClBnrC,KAAKkrC,MAAMb,SAASrqC,KAAKoB,GACzBpB,KAAKwrC,MAAQP,EACbjrC,KAAKunC,gBAAkB,EACxB,CAED,SAAkBK,EAACC,GACjB7nC,KAAKunC,gBAAgBviC,KAAK6iC,GAC1B7nC,KAAK8W,UAAUgxB,mBAAmB9nC,KACnC,CAOD,SAASyrC,EAAuBzT,EAAMznB,EAAMvN,GAC1ChD,KAAKyiC,SAAW,QAChBziC,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKg4B,KAAOA,EACZh4B,KAAK8W,UAAYkhB,EACjBh4B,KAAKwiC,WAAaxK,EAAKznB,KAAK6W,GAC5BpnB,KAAK6iC,UAAqB,IAAT7/B,EAAauN,EAAK8U,GAAGla,EAAIoF,EAAK2V,GAAG/a,EAClDnL,KAAKijC,kBAAoB,GACzBjjC,KAAKmL,GAAI,EACTnL,KAAK2nC,IAAK,EACV,IAAIpsB,EAAMvb,KAAK6iC,UAAU,GAAGlhC,EAAE,GAAGkG,EAAErH,OACnCR,KAAKoB,EAAI2oC,UAAUpN,aACnB38B,KAAKoB,EAAE0nC,YAAY9oC,KAAK6iC,UAAU,GAAGlhC,EAAE,GAAGqH,EAAGuS,GAC7Cvb,KAAK0iC,GAAKqH,UAAUE,MAAMjqC,KAAKoB,GAC/BpB,KAAKmrC,qBAAuBZ,oBAAoBC,qBAChDxqC,KAAKkrC,MAAQlrC,KAAKmrC,qBAClBnrC,KAAKkrC,MAAMb,SAASrqC,KAAKoB,GACzBpB,KAAKqkC,UAAYnC,EACjBliC,KAAKwrC,MAAQP,EACbjrC,KAAK+mC,SAAW,CACd1C,UAAWnC,EACXh0B,UAAW,GAEblO,KAAKunC,gBAAkB,CAACmE,EAA4Bnf,KAAKvsB,MAC1D,CA7BDurC,EAAclsC,UAAUsrC,iBAAmBA,EAC3CY,EAAclsC,UAAU4oC,SAAWZ,EACnCkE,EAAclsC,UAAU4nC,UAAYA,EACpCsE,EAAclsC,UAAUuoC,UAAYA,EA4BpC6D,EAAuBpsC,UAAU4oC,SAAWZ,EAC5CoE,EAAuBpsC,UAAUsrC,iBAAmBA,EACpDc,EAAuBpsC,UAAU4nC,UAAYA,EAC7CwE,EAAuBpsC,UAAUuoC,UAAYA,EAE7C,IAAI+D,EAAmB,WACrB,IAAUC,EAAGjsB,YAEb,SAASksB,EAAwB7T,EAAMznB,GACrCvQ,KAAKoB,EAAI2oC,UAAUpN,aACnB38B,KAAKoB,EAAE0nC,aAAY,EAAM,GACzB9oC,KAAKmrC,qBAAuBZ,oBAAoBC,qBAChDxqC,KAAKkrC,MAAQlrC,KAAKmrC,qBAClBnrC,KAAKmrC,qBAAqBd,SAASrqC,KAAKoB,GACxCpB,KAAKiM,EAAIsE,EAAKtE,EACdjM,KAAKg4B,KAAOA,EACZh4B,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKsnC,SAAW,EAChBtnC,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnL,EAAG,EAAG,EAAGpF,MACrDA,KAAK2B,EAAIsgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAK5O,EAAG,EAAG,EAAG3B,MAEjDA,KAAKwoC,kBAAkBhoC,OACzBR,KAAKmL,GAAI,GAETnL,KAAKmL,GAAI,EACTnL,KAAK8rC,mBAER,CAoDD,OAlDAD,EAAwBxsC,UAAY,CAClCmsC,MAAOP,EACPhD,SAAU,WACJjoC,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,UAI1CtnC,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,QACpCtnC,KAAK0oC,2BAED1oC,KAAKonC,MACPpnC,KAAK8rC,mBAER,EACDA,iBAAkB,WAChB,IAAMC,EAAG/rC,KAAKoF,EAAEhE,EAAE,GACZ4qC,EAAGhsC,KAAKoF,EAAEhE,EAAE,GACZ6qC,EAAGjsC,KAAK2B,EAAEP,EAAE,GAAK,EACjBqlC,EAAGzmC,KAAK2B,EAAEP,EAAE,GAAK,EAEhB8qC,EAAc,IAAXlsC,KAAKiM,EAEXxD,EAAKzI,KAAKoB,EACdqH,EAAGrH,EAAE,GAAG,GAAK2qC,EACbtjC,EAAGrH,EAAE,GAAG,GAAK4qC,EAAKvF,EAClBh+B,EAAGrH,EAAE,GAAG,GAAK8qC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCxjC,EAAGrH,EAAE,GAAG,GAAK4qC,EACbvjC,EAAGrH,EAAE,GAAG,GAAK2qC,EACbtjC,EAAGrH,EAAE,GAAG,GAAK4qC,EAAKvF,EAClBh+B,EAAGrH,EAAE,GAAG,GAAK8qC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCxjC,EAAGrH,EAAE,GAAG,GAAK4qC,EACbvjC,EAAGZ,EAAE,GAAG,GAAKqkC,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDnjC,EAAGZ,EAAE,GAAG,GAAKmkC,EAAKvF,EAClBh+B,EAAGZ,EAAE,GAAG,GAAKqkC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCxjC,EAAGZ,EAAE,GAAG,GAAKmkC,EAAKvF,EAAKmF,EACvBnjC,EAAGZ,EAAE,GAAG,GAAKqkC,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDnjC,EAAGZ,EAAE,GAAG,GAAKmkC,EAAKvF,EAClBh+B,EAAGZ,EAAE,GAAG,GAAKqkC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCxjC,EAAGZ,EAAE,GAAG,GAAKmkC,EAAKvF,EAAKmF,EACvBnjC,EAAG4C,EAAE,GAAG,GAAK6gC,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDnjC,EAAG4C,EAAE,GAAG,GAAK2gC,EAAKvF,EAClBh+B,EAAG4C,EAAE,GAAG,GAAK6gC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCxjC,EAAG4C,EAAE,GAAG,GAAK2gC,EAAKvF,EAAKmF,EACvBnjC,EAAG4C,EAAE,GAAG,GAAK6gC,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDnjC,EAAG4C,EAAE,GAAG,GAAK2gC,EAAKvF,EAClBh+B,EAAG4C,EAAE,GAAG,GAAK6gC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCxjC,EAAG4C,EAAE,GAAG,GAAK2gC,EAAKvF,EAAKmF,CACxB,GAEHzwB,gBAAgB,CAACotB,0BAA2BsD,GACdA,CACpC,CA5E2B,GA8EFM,EAAG,WACtB,SAASC,EAAyBpU,EAAMznB,GACtCvQ,KAAKoB,EAAI2oC,UAAUpN,aACnB38B,KAAKoB,EAAE0nC,aAAY,EAAM,GACzB9oC,KAAKg4B,KAAOA,EACZh4B,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKuQ,KAAOA,EACZvQ,KAAKsnC,SAAW,EAChBtnC,KAAKiM,EAAIsE,EAAKtE,EACdjM,KAAK2oC,6BAA6B3Q,GAElB,IAAZznB,EAAK87B,IACPrsC,KAAKssC,GAAKrK,gBAAgBqG,QAAQtQ,EAAMznB,EAAK+7B,GAAI,EAAG,EAAGtsC,MACvDA,KAAKusC,GAAKtK,gBAAgBqG,QAAQtQ,EAAMznB,EAAKg8B,GAAI,EAAG,IAAMvsC,MAC1DA,KAAKwsC,cAAgBxsC,KAAKysC,mBAE1BzsC,KAAKwsC,cAAgBxsC,KAAK0sC,qBAG5B1sC,KAAKqlB,GAAK4c,gBAAgBqG,QAAQtQ,EAAMznB,EAAK8U,GAAI,EAAG,EAAGrlB,MACvDA,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnL,EAAG,EAAG,EAAGpF,MACrDA,KAAKqR,EAAI4wB,gBAAgBqG,QAAQtQ,EAAMznB,EAAKc,EAAG,EAAGoO,UAAWzf,MAC7DA,KAAK2sC,GAAK1K,gBAAgBqG,QAAQtQ,EAAMznB,EAAKo8B,GAAI,EAAG,EAAG3sC,MACvDA,KAAK4sC,GAAK3K,gBAAgBqG,QAAQtQ,EAAMznB,EAAKq8B,GAAI,EAAG,IAAM5sC,MAC1DA,KAAKmrC,qBAAuBZ,oBAAoBC,qBAChDxqC,KAAKmrC,qBAAqBd,SAASrqC,KAAKoB,GACxCpB,KAAKkrC,MAAQlrC,KAAKmrC,qBAEdnrC,KAAKwoC,kBAAkBhoC,OACzBR,KAAKmL,GAAI,GAETnL,KAAKmL,GAAI,EACTnL,KAAKwsC,gBAER,CAuFD,OArFAJ,EAAyB/sC,UAAY,CACnCmsC,MAAOP,EACPhD,SAAU,WACJjoC,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,UAI1CtnC,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,QACpCtnC,KAAK0oC,2BAED1oC,KAAKonC,MACPpnC,KAAKwsC,gBAER,EACDC,kBAAmB,WACjB,QAeaI,EACGC,EAhBNC,EAA2B,EAAxBnhC,KAAKiT,MAAM7e,KAAKqlB,GAAGjkB,GACvB4rC,EAAa,EAAVphC,KAAK8T,GAASqtB,EAKdE,GAAG,EACJC,EAAGltC,KAAK2sC,GAAGvrC,IACPpB,KAAKssC,GAAGlrC,EACnB+rC,EAAYntC,KAAK4sC,GAAGxrC,IACPpB,KAAKusC,GAAGnrC,EACLgsC,EAAG,EAAIxhC,KAAK8T,GAAKwtB,GAAoB,EAATH,GAC5CM,EAAoB,EAAIzhC,KAAK8T,GAAK4tB,GAAqB,EAATP,GAK9CQ,GAAc3hC,KAAK8T,GAAK,EAC5B6tB,GAAcvtC,KAAKqR,EAAEjQ,EACrB,IAAIk+B,EAAsB,IAAhBt/B,KAAKuQ,KAAKtE,GAAW,EAAI,EAGnC,IAFAjM,KAAKoB,EAAEo7B,QAAU,EAEZ30B,EAAI,EAAGA,EAAIklC,EAAQllC,GAAK,EAAG,CAE9BglC,EAAYI,EAAWE,EAAYK,EACnCV,EAAeG,EAAWG,EAAmBC,EAC7C,IAAI1S,GAHJ8S,EAAMR,EAAWC,EAAUI,GAGb1hC,KAAK06B,IAAIiH,GACnBrJ,EAAIuJ,EAAM7hC,KAAKq6B,IAAIsH,GACjBG,EAAS,IAAN/S,GAAiB,IAANuJ,EAAU,EAAIA,EAAIt4B,KAAK+S,KAAKgc,EAAIA,EAAIuJ,EAAIA,GACtDyJ,EAAS,IAANhT,GAAiB,IAANuJ,EAAU,GAAKvJ,EAAI/uB,KAAK+S,KAAKgc,EAAIA,EAAIuJ,EAAIA,GAC7DvJ,IAAM36B,KAAKoF,EAAEhE,EAAE,GACf8iC,IAAMlkC,KAAKoF,EAAEhE,EAAE,GACfpB,KAAKoB,EAAE+nC,YAAYxO,EAAGuJ,EAAGvJ,EAAI+S,EAAKZ,EAAeD,EAAYvN,EAAK4E,EAAIyJ,EAAKb,EAAeD,EAAYvN,EAAK3E,EAAI+S,EAAKZ,EAAeD,EAAYvN,EAAK4E,EAAIyJ,EAAKb,EAAeD,EAAYvN,EAAKz3B,GAAG,GAMhMolC,GAAYA,EACZM,GAAcP,EAAQ1N,CACvB,CACF,EACDoN,qBAAsB,WACpB,IAKI7kC,EALMklC,EAAGnhC,KAAKiT,MAAM7e,KAAKqlB,GAAGjkB,GACvB4rC,EAAa,EAAVphC,KAAK8T,GAASqtB,IAChB/sC,KAAK2sC,GAAGvrC,EACdyrC,EAAY7sC,KAAK4sC,GAAGxrC,EACpB0rC,EAAe,EAAIlhC,KAAK8T,GAAK+tB,GAAgB,EAATV,GAEpCQ,EAAwB,IAAV3hC,KAAK8T,GAChB4f,EAAmB,IAAhBt/B,KAAKuQ,KAAKtE,GAAW,EAAI,EAInC,IAHAshC,GAAcvtC,KAAKqR,EAAEjQ,EACrBpB,KAAKoB,EAAEo7B,QAAU,EAEZ30B,EAAI,EAAGA,EAAIklC,EAAQllC,GAAK,EAAG,CAC9B,IAAK8yB,EAAG8S,EAAM7hC,KAAK06B,IAAIiH,GAClBrJ,EAAGuJ,EAAM7hC,KAAKq6B,IAAIsH,GACnBG,EAAW,IAAN/S,GAAiB,IAANuJ,EAAU,EAAIA,EAAIt4B,KAAK+S,KAAKgc,EAAIA,EAAIuJ,EAAIA,GACxDyJ,EAAW,IAANhT,GAAiB,IAANuJ,EAAU,GAAKvJ,EAAI/uB,KAAK+S,KAAKgc,EAAIA,EAAIuJ,EAAIA,GAC7DvJ,IAAM36B,KAAKoF,EAAEhE,EAAE,GACf8iC,IAAMlkC,KAAKoF,EAAEhE,EAAE,GACfpB,KAAKoB,EAAE+nC,YAAYxO,EAAGuJ,EAAGvJ,EAAI+S,EAAKZ,EAAeD,EAAYvN,EAAK4E,EAAIyJ,EAAKb,EAAeD,EAAYvN,EAAK3E,EAAI+S,EAAKZ,EAAeD,EAAYvN,EAAK4E,EAAIyJ,EAAKb,EAAeD,EAAYvN,EAAKz3B,GAAG,GAChM0lC,GAAcP,EAAQ1N,CACvB,CAEDt/B,KAAKkrC,MAAM1qC,OAAS,EACpBR,KAAKkrC,MAAM,GAAKlrC,KAAKoB,CACtB,GAEH+Z,gBAAgB,CAACotB,0BAA2B6D,IAElD,CA1H4B,GA4HpBwB,EAAoB,WACtB,SAASC,EAAyB7V,EAAMznB,GACtCvQ,KAAKoB,EAAI2oC,UAAUpN,aACnB38B,KAAKoB,EAAE4H,GAAI,EACXhJ,KAAKmrC,qBAAuBZ,oBAAoBC,qBAChDxqC,KAAKmrC,qBAAqBd,SAASrqC,KAAKoB,GACxCpB,KAAKkrC,MAAQlrC,KAAKmrC,qBAClBnrC,KAAKg4B,KAAOA,EACZh4B,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKsnC,SAAW,EAChBtnC,KAAKiM,EAAIsE,EAAKtE,EACdjM,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnL,EAAG,EAAG,EAAGpF,MACrDA,KAAK2B,EAAIsgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAK5O,EAAG,EAAG,EAAG3B,MACrDA,KAAKqR,EAAI4wB,gBAAgBqG,QAAQtQ,EAAMznB,EAAKc,EAAG,EAAG,EAAGrR,MAEjDA,KAAKwoC,kBAAkBhoC,OACzBR,KAAKmL,GAAI,GAETnL,KAAKmL,GAAI,EACTnL,KAAK8tC,oBAER,CA4DD,OA1DAD,EAAyBxuC,UAAY,CACnCyuC,kBAAmB,WACjB,IAAI/B,EAAK/rC,KAAKoF,EAAEhE,EAAE,KACTpB,KAAKoF,EAAEhE,EAAE,GACd2sC,EAAK/tC,KAAK2B,EAAEP,EAAE,GAAK,EACnB4sC,EAAKhuC,KAAK2B,EAAEP,EAAE,GAAK,EACnB0e,EAAQd,MAAM+uB,EAAIC,EAAIhuC,KAAKqR,EAAEjQ,GACvBwqC,EAAG9rB,GAAS,EAAIH,aAC1B3f,KAAKoB,EAAEo7B,QAAU,EAEF,IAAXx8B,KAAKiM,GAAsB,IAAXjM,KAAKiM,GACvBjM,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQ,GAAG,GACrG5rC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQG,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAO,GAAG,GAEvF,IAAVA,GACF9f,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAI,GAAG,GACrGhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAIjC,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAI,GAAG,GACrGhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQ,GAAG,GACrG5rC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQG,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAO,GAAG,GACrG9f,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAI,GAAG,GACrGhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAIjC,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAI,GAAG,KAErGhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAIjC,EAAKgC,EAAI/B,EAAKgC,EAAI,GAClFhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAIjC,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQG,EAAKgC,EAAI/B,EAAKgC,EAAI,MAGpFhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQG,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAO,GAAG,GAEvF,IAAVA,GACF9f,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAI,GAAG,GACrGhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAIjC,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAI,GAAG,GACrGhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQ,GAAG,GACrG5rC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQG,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAO,GAAG,GACrG9f,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAI,GAAG,GACrGhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAIjC,EAAKgC,EAAKjuB,EAAOksB,EAAKgC,EAAI,GAAG,GACrGhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKluB,EAAOisB,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQ,GAAG,KAErG5rC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAIjC,EAAKgC,EAAI/B,EAAKgC,EAAI,GAAG,GACrFhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAIjC,EAAKgC,EAAI/B,EAAKgC,EAAKpC,EAAQG,EAAKgC,EAAI/B,EAAKgC,EAAI,GAAG,GACrFhuC,KAAKoB,EAAE+nC,YAAY4C,EAAKgC,EAAI/B,EAAKgC,EAAIjC,EAAKgC,EAAKnC,EAAQI,EAAKgC,EAAIjC,EAAKgC,EAAI/B,EAAKgC,EAAI,GAAG,IAG1F,EACD/F,SAAU,WACJjoC,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,UAI1CtnC,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,QACpCtnC,KAAK0oC,2BAED1oC,KAAKonC,MACPpnC,KAAK8tC,oBAER,EACDtC,MAAOP,GAET9vB,gBAAgB,CAACotB,0BAA2BsF,GACrCA,CACb,CAnF4B,GAwHlBnhB,EAAG,CACTA,aApCA,SAAsBsL,EAAMznB,EAAMvN,GAChC,IAAQ0Y,EAuBR,OArBa,IAAT1Y,GAAuB,IAATA,EAKd0Y,GAJsB,IAAT1Y,EAAauN,EAAK8U,GAAK9U,EAAK2V,IACvB/a,EAEX3K,OACA,IAAIirC,EAAuBzT,EAAMznB,EAAMvN,GAEvC,IAAiBuoC,EAACvT,EAAMznB,EAAMvN,GAErB,IAATA,EACT0Y,EAAO,IAAqBkyB,EAAC5V,EAAMznB,GACjB,IAATvN,EACT0Y,EAAO,MAAqBsc,EAAMznB,GAChB,IAATvN,IACT0Y,EAAO,IAAIywB,EAAkBnU,EAAMznB,IAGjCmL,EAAKvQ,GACP6sB,EAAK8P,mBAAmBpsB,GAGnBA,CACR,EAYDgR,uBAVA,WACE,QACD,EASDA,gCAPA,WACE,OAA6B+e,CAC9B,GAMD,OAAS/e,CACb,CAzjB6B,GAwlBjBuhB,OAAG,WACX,IAAQC,EAAGtiC,KAAK06B,IACR6H,EAAGviC,KAAKq6B,MACLr6B,KAAKwiC,IACZC,EAAOziC,KAAKkU,MAEhB,SAAc0rB,IAiBZ,OAhBAxrC,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,GAAK,EAChBxG,KAAKwG,MAAM,IAAM,EACjBxG,KAAKwG,MAAM,IAAM,EACjBxG,KAAKwG,MAAM,IAAM,EACjBxG,KAAKwG,MAAM,IAAM,EACjBxG,KAAKwG,MAAM,IAAM,EACjBxG,KAAKwG,MAAM,IAAM,EACNxG,IACZ,CAED,WAAgBgtC,GACd,GAAc,IAAVA,EACF,OAAOhtC,KAGT,MAAWkuC,EAAKlB,GAERsB,EAAGH,EAAKnB,GAEhB,OAAWhtC,KAACuuC,GAAGC,GAAOF,EAAM,EAAG,EAAGA,EAAME,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC1E,CAED,SAASC,EAAQzB,GACf,GAAc,IAAVA,EACF,OAAWhtC,KAGb,MAAWkuC,EAAKlB,KAELmB,EAAKnB,GAEhB,YAAYuB,GAAG,EAAG,EAAG,EAAG,EAAG,EAAGC,GAAOF,EAAM,EAAG,EAAGA,EAAME,EAAM,EAAG,EAAG,EAAG,EAAG,EAC1E,CAED,SAAgBE,EAAC1B,GACf,GAAc,IAAVA,EACF,YAGF,IAAIwB,EAAON,EAAKlB,GAEZsB,EAAOH,EAAKnB,GAEhB,YAAYuB,GAAGC,EAAM,EAAGF,EAAM,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAM,EAAGE,EAAM,EAAG,EAAG,EAAG,EAAG,EAC1E,CAED,SAAgBG,EAAC3B,GACf,GAAc,IAAVA,EACF,OAAOhtC,KAGT,IAAQwuC,EAAGN,EAAKlB,GAERsB,EAAGH,EAAKnB,GAEhB,OAAOhtC,KAAKuuC,GAAGC,GAAOF,EAAM,EAAG,EAAGA,EAAME,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC1E,CAED,SAASI,EAAMC,EAAIxC,GACjB,YAAYkC,GAAG,EAAGlC,EAAIwC,EAAI,EAAG,EAAG,EACjC,CAED,SAAaC,EAACtJ,EAAIC,GAChB,OAAWzlC,KAAC4uC,MAAMG,EAAKvJ,GAAKuJ,EAAKtJ,GAClC,CAED,SAAqBuJ,EAACxJ,EAAIwH,GACxB,MAAWkB,EAAKlB,GAERsB,EAAGH,EAAKnB,GAEhB,OAAWhtC,KAACuuC,GAAGC,EAAMF,EAAM,EAAG,GAAIA,EAAME,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGD,GAAG,EAAG,EAAG,EAAG,EAAGQ,EAAKvJ,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG+I,GAAGC,GAAOF,EAAM,EAAG,EAAGA,EAAME,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACpM,CAED,WAAeK,EAAIxC,EAAI4C,GAKrB,OAJKA,GAAa,IAAPA,IACTA,EAAK,GAGI,IAAPJ,GAAmB,IAAPxC,GAAmB,IAAP4C,EACfjvC,KAGFA,KAACuuC,GAAGM,EAAI,EAAG,EAAG,EAAG,EAAGxC,EAAI,EAAG,EAAG,EAAG,EAAG4C,EAAI,EAAG,EAAG,EAAG,EAAG,EAChE,CAED,WAAsB3nB,EAAGtF,EAAGhZ,EAAGiD,EAAGvI,EAAGwe,EAAGH,EAAGvQ,EAAG3J,EAAGid,EAAG3Z,EAAGyC,EAAGoC,EAAGoB,EAAG/F,EAAGjG,GAiBjE,OAhBApF,KAAKwG,MAAM,GAAK8gB,EAChBtnB,KAAKwG,MAAM,GAAKwb,EAChBhiB,KAAKwG,MAAM,GAAKwC,EAChBhJ,KAAKwG,MAAM,GAAKyF,EAChBjM,KAAKwG,MAAM,GAAK9C,EAChB1D,KAAKwG,MAAM,GAAK0b,EAChBliB,KAAKwG,MAAM,GAAKub,EAChB/hB,KAAKwG,MAAM,GAAKgL,EAChBxR,KAAKwG,MAAM,GAAKqB,EAChB7H,KAAKwG,MAAM,GAAKse,EAChB9kB,KAAKwG,MAAM,IAAM2E,EACjBnL,KAAKwG,MAAM,IAAMoH,EACjB5N,KAAKwG,MAAM,IAAMwJ,EACjBhQ,KAAKwG,MAAM,IAAM4K,EACjBpR,KAAKwG,MAAM,IAAM6E,EACjBrL,KAAKwG,MAAM,IAAMpB,MAElB,CAED,SAAS8pC,EAAUC,EAAI3pB,EAAI4pB,GAGzB,OAFAA,EAAKA,GAAM,EAEA,IAAPD,GAAmB,IAAP3pB,GAAmB,IAAP4pB,OACdb,GAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGY,EAAI3pB,EAAI4pB,EAAI,GAG1DpvC,IACR,CAED,SAAkBqvC,EAACC,EAAIC,EAAIhJ,EAAIiJ,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC7E,IAAM5V,EAAGx6B,KAAKwG,MAEd,GAAW,IAAP8oC,GAAmB,IAAPC,GAAmB,IAAPhJ,GAAmB,IAAPiJ,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,EAStI,OANAxV,EAAG,IAAMA,EAAG,IAAM8U,EAAK9U,EAAG,IAAMyV,EAChCzV,EAAG,IAAMA,EAAG,IAAMkV,EAAKlV,EAAG,IAAM0V,EAChC1V,EAAG,IAAMA,EAAG,IAAMuV,EAAKvV,EAAG,IAAM2V,EAChC3V,EAAG,KAAO4V,EAEVpwC,KAAKqwC,qBAAsB,EAChBrwC,KAGb,IAAMswC,EAAG9V,EAAG,GACR+V,EAAK/V,EAAG,GACN6L,EAAG7L,EAAG,GACRgW,EAAKhW,EAAG,GACRiW,EAAKjW,EAAG,GACNkW,EAAGlW,EAAG,GACRmW,EAAKnW,EAAG,GACNoW,EAAGpW,EAAG,GACNqW,EAAGrW,EAAG,KACHA,EAAG,GACRsW,EAAKtW,EAAG,IACNuW,EAAGvW,EAAG,IACRwW,EAAKxW,EAAG,IACRyW,EAAKzW,EAAG,IACN0W,EAAG1W,EAAG,IACRwR,EAAKxR,EAAG,IAwBZ,OAjBAA,EAAG,GAAK8V,EAAKhB,EAAKiB,EAAKd,EAAKpJ,EAAKwJ,EAAKW,EAAKP,EAC3CzV,EAAG,GAAK8V,EAAKf,EAAKgB,EAAKb,EAAKrJ,EAAKyJ,EAAKU,EAAKN,EAC3C1V,EAAG,GAAK8V,EAAK/J,EAAKgK,EAAKZ,EAAKtJ,EAAK0J,EAAKS,EAAKL,EAC3C3V,EAAG,GAAK8V,EAAKd,EAAKe,EAAKX,EAAKvJ,EAAK2J,EAAKQ,EAAKJ,EAC3C5V,EAAG,GAAKiW,EAAKnB,EAAKoB,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAC3CzV,EAAG,GAAKiW,EAAKlB,EAAKmB,EAAKhB,EAAKiB,EAAKb,EAAKc,EAAKV,EAC3C1V,EAAG,GAAKiW,EAAKlK,EAAKmK,EAAKf,EAAKgB,EAAKZ,EAAKa,EAAKT,EAC3C3V,EAAG,GAAKiW,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAAKY,EAAKR,EAC3C5V,EAAG,GAAKqW,EAAKvB,EAAK6B,EAAK1B,EAAKqB,EAAKjB,EAAKkB,EAAKd,EAC3CzV,EAAG,GAAKqW,EAAKtB,EAAK4B,EAAKzB,EAAKoB,EAAKhB,EAAKiB,EAAKb,EAC3C1V,EAAG,IAAMqW,EAAKtK,EAAK4K,EAAKxB,EAAKmB,EAAKf,EAAKgB,EAAKZ,EAC5C3V,EAAG,IAAMqW,EAAKrB,EAAK2B,EAAKvB,EAAKkB,EAAKd,EAAKe,EAAKX,EAC5C5V,EAAG,IAAMwW,EAAK1B,EAAK2B,EAAKxB,EAAKyB,EAAKrB,EAAK7D,EAAKiE,EAC5CzV,EAAG,IAAMwW,EAAKzB,EAAK0B,EAAKvB,EAAKwB,EAAKpB,EAAK9D,EAAKkE,EAC5C1V,EAAG,IAAMwW,EAAKzK,EAAK0K,EAAKtB,EAAKuB,EAAKnB,EAAK/D,EAAKmE,EAC5C3V,EAAG,IAAMwW,EAAKxB,EAAKyB,EAAKrB,EAAKsB,EAAKlB,EAAKhE,EAAKoE,EAC5CpwC,KAAKqwC,qBAAsB,MAE5B,CAED,SAAmBe,IAMjB,OALKpxC,KAAKqwC,sBACRrwC,KAAKqxC,YAAgC,IAAlBrxC,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA8B,IAAlBxG,KAAKwG,MAAM,IAA+B,IAAnBxG,KAAKwG,MAAM,KAAgC,IAAnBxG,KAAKwG,MAAM,KAAgC,IAAnBxG,KAAKwG,MAAM,KAAgC,IAAnBxG,KAAKwG,MAAM,KAAgC,IAAnBxG,KAAKwG,MAAM,KAAgC,IAAnBxG,KAAKwG,MAAM,KAC5XxG,KAAKqwC,qBAAsB,GAGlBrwC,KAACqxC,SACb,CAED,SAAeC,EAACC,GAGd,IAFA,IAAK1pC,EAAG,EAEDA,EAAI,IAAI,CACb,GAAI0pC,EAAK/qC,MAAMqB,KAAO7H,KAAKwG,MAAMqB,GAC/B,OAAY,EAGdA,GAAK,CACN,CAED,OAAW,CACZ,CAED,SAASoiC,EAAMsH,GACb,IAAI1pC,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB0pC,EAAK/qC,MAAMqB,GAAK7H,KAAKwG,MAAMqB,GAG7B,OAAW0pC,CACZ,CAED,SAASC,EAAehrC,GACtB,IAAIqB,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB7H,KAAKwG,MAAMqB,GAAKrB,EAAMqB,EAEzB,CAED,WAAsB8yB,EAAGuJ,EAAGuN,GAC1B,MAAO,CACL9W,EAAGA,EAAI36B,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,IAC1E09B,EAAGvJ,EAAI36B,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,IAC1EirC,EAAG9W,EAAI36B,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,IAAMxG,KAAKwG,MAAM,IAQ/E,CAAA,SAASkrC,EAAS/W,EAAGuJ,EAAGuN,GACtB,OAAO9W,EAAI36B,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,GAC/E,CAED,SAAiBmrC,EAAChX,EAAGuJ,EAAGuN,GACtB,SAAWzxC,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,GAC/E,CAED,SAASorC,EAASjX,EAAGuJ,EAAGuN,GACtB,OAAO9W,EAAI36B,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,IAAMxG,KAAKwG,MAAM,GAChF,CAED,SAASqrC,IACP,IAAIC,EAAc9xC,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,GACzE8gB,EAAItnB,KAAKwG,MAAM,GAAKsrC,EACnB9vB,GAAIhiB,KAAKwG,MAAM,GAAKsrC,EACpB9oC,GAAIhJ,KAAKwG,MAAM,GAAKsrC,EACpB7lC,EAAGjM,KAAKwG,MAAM,GAAKsrC,EACnBpuC,GAAI1D,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,IAAMxG,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,KAAOsrC,EACvE5vB,IAAKliB,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,IAAMxG,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,KAAOsrC,EACzEC,EAAgB,IAAU9D,OAO9B,OANA8D,EAAcvrC,MAAM,GAAK8gB,EACzByqB,EAAcvrC,MAAM,GAAKwb,EACzB+vB,EAAcvrC,MAAM,GAAKwC,EACzB+oC,EAAcvrC,MAAM,GAAKyF,EACzB8lC,EAAcvrC,MAAM,IAAM9C,EAC1BquC,EAAcvrC,MAAM,IAAM0b,EACnB6vB,CACR,CAED,SAASC,EAAa3sB,GAEpB,OADoBrlB,KAAK6xC,mBACJI,kBAAkB5sB,EAAG,GAAIA,EAAG,GAAIA,EAAG,IAAM,EAC/D,CAED,SAAsB6sB,EAACC,GACrB,IAAKtqC,EACD0T,EAAM42B,EAAI3xC,OACJ4xC,EAAG,GAEb,IAAKvqC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBuqC,EAAOvqC,GAAKmqC,EAAaG,EAAItqC,IAG/B,OAAOuqC,CACR,CAED,SAASC,EAAoBvU,EAAKC,EAAKC,GACrC,IAAOpgB,EAAGF,iBAAiB,UAAW,GAEtC,GAAI1d,KAAKoxC,aACPxzB,EAAI,GAAKkgB,EAAI,GACblgB,EAAI,GAAKkgB,EAAI,GACblgB,EAAI,GAAKmgB,EAAI,GACbngB,EAAI,GAAKmgB,EAAI,GACbngB,EAAI,GAAKogB,EAAI,GACbpgB,EAAI,GAAKogB,EAAI,OACR,CACL,IAAM+N,EAAG/rC,KAAKwG,MAAM,GAChBwlC,EAAKhsC,KAAKwG,MAAM,GACd8rC,EAAGtyC,KAAKwG,MAAM,GACd+rC,EAAGvyC,KAAKwG,MAAM,GAChBgsC,EAAMxyC,KAAKwG,MAAM,IACjBisC,EAAMzyC,KAAKwG,MAAM,IACrBoX,EAAI,GAAKkgB,EAAI,GAAKiO,EAAKjO,EAAI,GAAKwU,EAAKE,EACrC50B,EAAI,GAAKkgB,EAAI,GAAKkO,EAAKlO,EAAI,GAAKyU,EAAKE,EACrC70B,EAAI,GAAKmgB,EAAI,GAAKgO,EAAKhO,EAAI,GAAKuU,EAAKE,EACrC50B,EAAI,GAAKmgB,EAAI,GAAKiO,EAAKjO,EAAI,GAAKwU,EAAKE,EACrC70B,EAAI,GAAKogB,EAAI,GAAK+N,EAAK/N,EAAI,GAAKsU,EAAKE,EACrC50B,EAAI,GAAKogB,EAAI,GAAKgO,EAAKhO,EAAI,GAAKuU,EAAKE,CACtC,CAED,QACD,CAED,SAASR,EAAkBtX,EAAGuJ,EAAGuN,GAS/B,OANIzxC,KAAKoxC,aACD,CAACzW,EAAGuJ,EAAGuN,GAEP,CAAC9W,EAAI36B,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,IAAKm0B,EAAI36B,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,GAAKxG,KAAKwG,MAAM,IAAKm0B,EAAI36B,KAAKwG,MAAM,GAAK09B,EAAIlkC,KAAKwG,MAAM,GAAKirC,EAAIzxC,KAAKwG,MAAM,IAAMxG,KAAKwG,MAAM,IAI1O,CAED,SAAgCksC,EAAC/X,EAAGuJ,GAClC,GAAIlkC,KAAKoxC,aACP,OAAQzW,EAAG,IAAMuJ,EAGnB,IAAM1J,EAAGx6B,KAAKwG,MACd,OAAOoF,KAAKkU,MAAyC,KAAlC6a,EAAIH,EAAG,GAAK0J,EAAI1J,EAAG,GAAKA,EAAG,MAAc,IAAM,IAAM5uB,KAAKkU,MAAyC,KAAlC6a,EAAIH,EAAG,GAAK0J,EAAI1J,EAAG,GAAKA,EAAG,MAAc,GAC9H,CAED,SAAcmY,IAWZ,IALA,IAAK9qC,EAAG,EACCrB,EAAGxG,KAAKwG,MACLosC,EAAG,YAGR/qC,EAAI,IACT+qC,GAAYvE,EAHN,IAGW7nC,EAAMqB,IAHjB,IAIN+qC,GAAkB,KAAN/qC,EAAW,IAAM,IAC7BA,GAAK,EAGP,OAAO+qC,CACR,CAED,SAA4BC,EAACvzB,GAG3B,OAAIA,EAAM,MAAYA,EAAM,GAAKA,GAAO,MAAYA,EAAM,EAC7C+uB,EAHL,IAGM/uB,GAHN,IAMEA,CACX,CAED,SAAgBwzB,IAMd,IAAStsC,EAAGxG,KAAKwG,MAcjB,MAAO,UAZEqsC,EAAoBrsC,EAAM,IAYX,IAVfqsC,EAAoBrsC,EAAM,IAUA,IAR1BqsC,EAAoBrsC,EAAM,IAQW,IANrCqsC,EAAoBrsC,EAAM,IAMsB,IAJhDqsC,EAAoBrsC,EAAM,KAIiC,IAF3DqsC,EAAoBrsC,EAAM,KAE4C,GAChF,CAED,OAAO,WACLxG,KAAKwrC,MAAQA,EACbxrC,KAAK+yC,OAASA,EACd/yC,KAAKyuC,QAAUA,EACfzuC,KAAK0uC,QAAUA,EACf1uC,KAAK2uC,QAAUA,EACf3uC,KAAK8uC,KAAOA,EACZ9uC,KAAKgvC,aAAeA,EACpBhvC,KAAK4uC,MAAQA,EACb5uC,KAAKgzC,MAAQA,EACbhzC,KAAKizC,aAAeA,EACpBjzC,KAAKkvC,UAAYA,EACjBlvC,KAAKqvC,UAAYA,EACjBrvC,KAAKkzC,aAAeA,EACpBlzC,KAAK0xC,SAAWA,EAChB1xC,KAAK2xC,SAAWA,EAChB3xC,KAAK4xC,SAAWA,EAChB5xC,KAAKiyC,kBAAoBA,EACzBjyC,KAAKqyC,oBAAsBA,EAC3BryC,KAAK0yC,wBAA0BA,EAC/B1yC,KAAK2yC,MAAQA,EACb3yC,KAAK8yC,QAAUA,EACf9yC,KAAKiqC,MAAQA,EACbjqC,KAAKwxC,eAAiBA,EACtBxxC,KAAKsxC,OAASA,EACdtxC,KAAKkyC,cAAgBA,EACrBlyC,KAAKgyC,aAAeA,EACpBhyC,KAAK6xC,iBAAmBA,EACxB7xC,KAAKuuC,GAAKvuC,KAAKqvC,UACfrvC,KAAKoxC,WAAaA,EAClBpxC,KAAKqxC,WAAY,EACjBrxC,KAAKqwC,qBAAsB,EAC3BrwC,KAAKwG,MAAQkX,iBAAiB,UAAW,IACzC1d,KAAKwrC,OACX,CACA,CA1ae,GA4ab,mBAAmBrtB,GAAuV,OAA1Og1B,UAArD,2BAAyC,iBAApB3zC,OAAO+M,SAAqC,SAAiB4R,GAAO,cAAiBA,GAA0B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX3e,QAAyB2e,EAAIve,cAAgBJ,QAAU2e,IAAQ3e,OAAOH,UAAY,gBAAqB8e,CAAC,EAAsBg1B,UAACh1B,EAAO,CAClY,IAAIi1B,OAAS,CAAE,EACXza,WAAa,mBACA/R,cAAG,+BACL,GAEf,SAASysB,YAAYC,GACnBp4B,gBAAgBo4B,EACjB,CAED,SAAS5a,oBACY,IAAfC,WACFnB,iBAAiBkB,iBAAiB9R,cAAe+R,WAAY9H,UAE7D2G,iBAAiBkB,kBAEpB,CAED,8BAA8B1d,GAC5Bu4B,mBAAmBv4B,EACpB,CAED,SAAkBw4B,UAACC,GACjBpwB,YAAYowB,EACb,CAED,SAAsBxpB,cAAC6H,GAKrB,OAJmB,IAAf6G,aACF7G,EAAOlL,cAAgBxjB,KAAKK,MAAMmjB,gBAGb4Q,iBAACvN,cAAc6H,EACvC,CAED,SAAmB4hB,WAAC5yC,GAClB,GAAqB,iBAAVA,EACT,OAAQA,GACN,IAAK,OACH6yC,wBAAwB,KACxB,MAEF,QACA,IAAK,SACHA,wBAAwB,IACxB,MAEF,IAAK,MACHA,wBAAwB,SAGlBhe,MAAM70B,IAAUA,EAAQ,GAClC6yC,wBAAwB7yC,GAGtBsiB,2BAA6B,GAC/BxD,aAAY,GAEZA,aAAY,EAEf,CAED,SAASg0B,YACP,MAA4B,oBAALl5B,SACxB,CAED,SAAsBm5B,cAAC7wC,EAAM8wC,GACd,gBAAT9wC,GACF8f,qBAAqBgxB,EAExB,CAED,SAAmBC,WAACvuC,GAClB,OAAQA,GACN,IAAK,kBACH,OAAsBy8B,gBAExB,IAAK,uBACH,OAA2ByI,qBAE7B,IAAK,SACH,OAAauD,OAEf,QACE,YAEL,CA+BD,sBAC8B,aAAxBnsC,SAASqnB,aACXmD,cAAc0nB,yBACdtb,mBAEH,CAED,SAAyBub,iBAACC,GAGxB,IAFA,IAAQC,EAAGC,YAAYrkC,MAAM,KAEnBlI,EAAG,EAAGA,EAAIssC,EAAK3zC,OAAQqH,GAAK,EAAG,CACvC,IAAIwsC,EAAOF,EAAKtsC,GAAGkI,MAAM,KAEzB,GAAIukC,mBAAmBD,EAAK,KAAOH,EAEjC,OAAyBI,mBAACD,EAAK,GAElC,CAED,OAAO,IACR,CAjDDjB,OAAOr2B,KAAOya,iBAAiBza,KAC/Bq2B,OAAO92B,MAAQkb,iBAAiBlb,MAChC82B,OAAOl4B,gBAAkBm4B,YACzBD,OAAOje,YAAcqC,iBAAiBrC,YACtCie,OAAOhd,SAAWoB,iBAAiBpB,SACnCgd,OAAO/c,aAAemB,iBAAiBnB,aACvC+c,OAAOhe,KAAOoC,iBAAiBpC,KAC/Bge,OAAO1a,iBAAmBA,iBAC1B0a,OAAO3a,kBAAoBjB,iBAAiBiB,kBAC5C2a,OAAOnpB,cAAgBA,cACvBmpB,OAAOmB,qBAAuBA,qBAC9BnB,OAAOxe,OAAS4C,iBAAiB5C,OAEjCwe,OAAO5d,YAAcgC,iBAAiBhC,YACtC4d,OAAO9lB,QAAUkK,iBAAiBlK,QAClC8lB,OAAOM,WAAaA,WACpBN,OAAOQ,UAAYA,UACnBR,OAAOS,cAAgBA,cACvBT,OAAOha,OAAS5B,iBAAiB4B,OACjCga,OAAO/Z,SAAW7B,iBAAiB6B,SACnC+Z,OAAOj2B,UAAYqa,iBAAiBra,UACpCi2B,OAAO91B,KAAOka,iBAAiBla,KAC/B81B,OAAO71B,OAASia,iBAAiBja,OACjC61B,OAAO9Z,wBAA0B9B,iBAAiB8B,wBAClD8Z,OAAOoB,aAAez5B,aACtBq4B,OAAOqB,YAAcjB,UACrBJ,OAAOsB,aAAeX,WACtBX,OAAOuB,QAAU,SAwBjB,IAAeP,YAAG,GAElB,GAAIzb,WAAY,CACd,YAAc72B,SAASm3B,qBAAqB,gBAChC2b,QAAQp0C,OAAS,WACdo0C,QAAQ3kC,QAAU,CAC/B4M,IAAK,IAEPu3B,YAAcS,SAASh4B,IAAMg4B,SAASh4B,IAAI6c,QAAQ,aAAc,IAAM,GAEtE7I,SAAWojB,iBAAiB,WAC7B,CAED,IAA2BD,wBAAG7nB,YAAY2oB,WAAY,KAEtD,IACgF,WAAxB3B,UAAU4B,WAE9Dh2C,OAAOi2C,UAAY5B,OAET,CAAZ,MAAOnqB,GAAK,CAGd,IAAIgsB,eAAiB,WACnB,IAAMvoB,EAAG,CAAA,EACIwoB,EAAG,GAchB,OAbAxoB,EAAGyoB,iBAGH,SAA0B3lB,EAAI/U,GACvBy6B,EAAU1lB,KACb0lB,EAAU1lB,GAAM/U,EAEnB,EANDiS,EAAG0oB,YAQH,SAAqB5lB,EAAIwI,EAAMznB,GAC7B,OAAO,IAAa2kC,EAAC1lB,GAAIwI,EAAMznB,EAChC,EAEQmc,CACb,CAjBuB,GAmBrB,SAAsB2oB,gBAAG,CAmDzB,SAASC,eAAe,CAgZxB,SAASC,yBAETp6B,CAncAk6B,cAAch2C,UAAUm2C,uBAAyB,WAAc,EAE/DH,cAAch2C,UAAUo2C,mBAAqB,WAAY,EAEzDJ,cAAch2C,UAAUgrC,SAAW,SAAU95B,GAC3C,IAAKvQ,KAAK+nB,OAAQ,CAEhBxX,EAAKw0B,GAAGjuB,UAAUgxB,mBAAmBv3B,EAAKw0B,IAC1C,IAAavF,EAAG,CACd0K,MAAO35B,EAAKw0B,GACZx0B,KAAMA,EACN46B,qBAAsBZ,oBAAoBC,sBAE5CxqC,KAAK4lB,OAAO5gB,KAAKw6B,GACjBx/B,KAAKy1C,mBAAmBjW,GAEpBx/B,KAAKyoC,aACPl4B,EAAKmlC,eAER,CACL,EAEEL,cAAch2C,UAAUk3B,KAAO,SAAUyB,EAAMznB,GAC7CvQ,KAAK4lB,OAAS,GACd5lB,KAAKg4B,KAAOA,EACZh4B,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKw1C,uBAAuBxd,EAAMznB,GAClCvQ,KAAKsnC,QAAUxsB,oBACf9a,KAAK+nB,QAAS,EACd/nB,KAAKmL,GAAI,EAELnL,KAAKwoC,kBAAkBhoC,OACzBR,KAAKmL,GAAI,EAETnL,KAAKioC,UAAS,EAEpB,EAEEoN,cAAch2C,UAAUs2C,YAAc,WAChC31C,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,UAI1CtnC,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,QACpCtnC,KAAK0oC,2BACT,EAEEvtB,gBAAgB,CAACotB,0BAA2B8M,eAI5Cl6B,gBAAgB,CAACk6B,eAAgBC,cAEjCA,aAAaj2C,UAAUm2C,uBAAyB,SAAUxd,EAAMznB,GAC9DvQ,KAAK2B,EAAIsgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAK5O,EAAG,EAAG,IAAM3B,MACxDA,KAAK0D,EAAIu+B,gBAAgBqG,QAAQtQ,EAAMznB,EAAK7M,EAAG,EAAG,IAAM1D,MACxDA,KAAKqL,EAAI42B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKlF,EAAG,EAAG,EAAGrL,MACrDA,KAAK41C,OAAS,EACd51C,KAAK61C,OAAS,EACd71C,KAAKioC,SAAWjoC,KAAK21C,YACrB31C,KAAKgQ,EAAIO,EAAKP,EACdhQ,KAAKyoC,cAAgBzoC,KAAK2B,EAAE4lC,gBAAgB/mC,UAAYR,KAAK0D,EAAE6jC,gBAAgB/mC,UAAYR,KAAKqL,EAAEk8B,gBAAgB/mC,MACtH,EAEE80C,aAAaj2C,UAAUo2C,mBAAqB,SAAUjW,GACpDA,EAAUsW,UAAY,EAC1B,EAEER,aAAaj2C,UAAU02C,oBAAsB,SAAUp0C,EAAG+B,EAAGsyC,EAAajZ,EAAakZ,GACrF,IAAI/kB,EAAW,GAEXxtB,GAAK,EACPwtB,EAASlsB,KAAK,CACZrD,EAAGA,EACH+B,EAAGA,IAEI/B,GAAK,EACduvB,EAASlsB,KAAK,CACZrD,EAAGA,EAAI,EACP+B,EAAGA,EAAI,KAGTwtB,EAASlsB,KAAK,CACZrD,EAAGA,EACH+B,EAAG,IAELwtB,EAASlsB,KAAK,CACZrD,EAAG,EACH+B,EAAGA,EAAI,KAIX,IACKmE,EAEDquC,EAHAC,EAAgB,GAEhB56B,EAAM2V,EAAS1wB,OAGnB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAIzB,IAAUuuC,EACNC,GAJNH,EAAYhlB,EAASrpB,IAELnE,EAAIuyC,EAAsBlZ,GAAemZ,EAAUv0C,EAAIs0C,EAAsBlZ,EAAciZ,IAKvGI,EADEF,EAAUv0C,EAAIs0C,GAAuBlZ,EAC9B,GAECmZ,EAAUv0C,EAAIs0C,EAAsBlZ,GAAeiZ,EAI7DK,EADEH,EAAUxyC,EAAIuyC,GAAuBlZ,EAAciZ,EAC5C,GAECE,EAAUxyC,EAAIuyC,EAAsBlZ,GAAeiZ,EAG/DG,EAAcnxC,KAAK,CAACoxC,EAAQC,IAE/B,CAMD,OAJKF,EAAc31C,QACjB21C,EAAcnxC,KAAK,CAAC,EAAG,IAGLmxC,CACxB,EAEEb,aAAaj2C,UAAUi3C,iBAAmB,SAAUR,GAClD,IAAKjuC,EACD0T,EAAMu6B,EAAUt1C,OAEpB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBq1B,mBAAmBN,QAAQkZ,EAAUjuC,IAIvC,OADAiuC,EAAUt1C,OAAS,GAEvB,EAEE80C,aAAaj2C,UAAUk3C,cAAgB,SAAU9O,GAC/C,IAAK9lC,EACA+B,EAwCD8yC,EACA3uC,EAvCJ,GAAI7H,KAAKonC,MAAQK,EAAe,CAC9B,IAAIp8B,EAAIrL,KAAKqL,EAAEjK,EAAI,IAAM,IAsBzB,GApBIiK,EAAI,IACNA,GAAK,IAIL1J,EADE3B,KAAK2B,EAAEP,EAAI,EACT,EAAIiK,EACCrL,KAAK2B,EAAEP,EAAI,EAChB,EAAIiK,EAEJrL,KAAK2B,EAAEP,EAAIiK,IAIf3H,EADE1D,KAAK0D,EAAEtC,EAAI,EACT,EAAIiK,EACCrL,KAAK0D,EAAEtC,EAAI,EAChB,EAAIiK,EAEJrL,KAAK0D,EAAEtC,EAAIiK,GAGN,CACT,MAAS1J,EACTA,EAAI+B,EACJA,EAAI+yC,CACL,CAED90C,EAA4B,KAAxBiK,KAAKkU,MAAU,IAAJne,GACf+B,EAA4B,KAAxBkI,KAAKkU,MAAU,IAAJpc,GACf1D,KAAK41C,OAASj0C,EACd3B,KAAK61C,OAASnyC,CACpB,MACM/B,EAAI3B,KAAK41C,OACTlyC,EAAI1D,KAAK61C,OAKX,IACI/wB,IAESgxB,EACTpuB,IAJGnM,EAAGvb,KAAK4lB,OAAOplB,OAMCy1C,EAAG,EAE1B,GAAIvyC,IAAM/B,EACR,IAAKkG,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK4lB,OAAO/d,GAAGsjC,qBAAqBb,gBACpCtqC,KAAK4lB,OAAO/d,GAAGqiC,MAAM9C,MAAO,EAC5BpnC,KAAK4lB,OAAO/d,GAAGqiC,MAAMgB,MAAQlrC,KAAK4lB,OAAO/d,GAAGsjC,qBAExCnrC,KAAKonC,OACPpnC,KAAK4lB,OAAO/d,GAAGiuC,UAAUt1C,OAAS,WAGrB,IAANkD,GAAiB,IAAN/B,GAAiB,IAAN+B,GAAiB,IAAN/B,MAyGnC3B,KAAKonC,KACd,IAAKv/B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAGxB7H,KAAK4lB,OAAO/d,GAAGiuC,UAAUt1C,OAAS,EAClCR,KAAK4lB,OAAO/d,GAAGqiC,MAAM9C,MAAO,MA9GwB,CACtD,IACa5H,EACT2L,EAFAja,EAAW,GAIf,IAAKrpB,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAGxB,IAFA23B,EAAYx/B,KAAK4lB,OAAO/d,IAETqiC,MAAM9C,MAASpnC,KAAKonC,MAASK,GAA4B,IAAXznC,KAAKgQ,EAE3D,CAKL,GAHAmV,GADAqxB,EAAahX,EAAU0K,MAAMgB,OACX1O,QAClBka,EAAmB,GAEdlX,EAAU0K,MAAM9C,MAAQ5H,EAAUsW,UAAUt1C,OAC/Ck2C,EAAmBlX,EAAUkX,qBACxB,CAGL,IAFAZ,EAAY91C,KAAKs2C,iBAAiB9W,EAAUsW,WAEvChxB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzB4C,EAAWsa,IAAIzC,kBAAkBiX,EAAW5wB,OAAOd,IACnDgxB,EAAU9wC,KAAK0iB,GACfgvB,GAAoBhvB,EAASyV,YAG/BqC,EAAUkX,iBAAmBA,EAC7BlX,EAAUsW,UAAYA,CACvB,CAEDG,GAAuBS,EACvBlX,EAAU0K,MAAM9C,MAAO,CACxB,MAvBC5H,EAAU0K,MAAMgB,MAAQ1L,EAAU2L,qBA0BtC,IAGIwL,EAHMP,EAAGz0C,EACT00C,EAAS3yC,EACTq5B,EAAc,EAGlB,IAAKl1B,EAAI0T,EAAM,EAAG1T,GAAK,EAAGA,GAAK,EAG7B,IAFA23B,EAAYx/B,KAAK4lB,OAAO/d,IAEVqiC,MAAM9C,KAAM,CAaxB,KAZA+D,EAAuB3L,EAAU2L,sBACZb,gBAEN,IAAXtqC,KAAKgQ,GAAWuL,EAAM,GACxBo7B,EAAQ32C,KAAK+1C,oBAAoBp0C,EAAG+B,EAAG87B,EAAUkX,iBAAkB3Z,EAAakZ,GAChFlZ,GAAeyC,EAAUkX,kBAEzBC,EAAQ,CAAC,CAACP,EAAQC,IAGpBlxB,EAAOwxB,EAAMn2C,OAERskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAAG,CAC5BsxB,EAASO,EAAM7xB,GAAG,GAClBuxB,EAASM,EAAM7xB,GAAG,GAClBoM,EAAS1wB,OAAS,EAEd61C,GAAU,EACZnlB,EAASlsB,KAAK,CACZrD,EAAG69B,EAAUkX,iBAAmBN,EAChC1yC,EAAG87B,EAAUkX,iBAAmBL,IAEzBD,GAAU,EACnBllB,EAASlsB,KAAK,CACZrD,EAAG69B,EAAUkX,kBAAoBN,EAAS,GAC1C1yC,EAAG87B,EAAUkX,kBAAoBL,EAAS,MAG5CnlB,EAASlsB,KAAK,CACZrD,EAAG69B,EAAUkX,iBAAmBN,EAChC1yC,EAAG87B,EAAUkX,mBAEfxlB,EAASlsB,KAAK,CACZrD,EAAG,EACH+B,EAAG87B,EAAUkX,kBAAoBL,EAAS,MAI9C,MAAoBr2C,KAAK42C,UAAUpX,EAAWtO,EAAS,IAEvD,GAAIA,EAAS,GAAGvvB,IAAMuvB,EAAS,GAAGxtB,EAAG,CACnC,GAAIwtB,EAAS1wB,OAAS,EAGpB,GAF4Bg/B,EAAU0K,MAAMgB,MAAMtlB,OAAO4Z,EAAU0K,MAAMgB,MAAM1O,QAAU,GAE/DxzB,EAAG,CAC3B,IAAa6tC,EAAGC,EAAcC,MAC9B/2C,KAAKg3C,SAASF,EAAe3L,GAC7B2L,EAAgB92C,KAAK42C,UAAUpX,EAAWtO,EAAS,GAAI2lB,EACzE,MACkB72C,KAAKg3C,SAASF,EAAe3L,GAC7B2L,EAAgB92C,KAAK42C,UAAUpX,EAAWtO,EAAS,IAIvDlxB,KAAKg3C,SAASF,EAAe3L,EAC9B,CACF,CAED3L,EAAU0K,MAAMgB,MAAQC,CACzB,CAET,CAQA,EAEEmK,aAAaj2C,UAAU23C,SAAW,SAAUC,EAAU9L,GACpD,IAAKtjC,EACE0T,EAAG07B,EAASz2C,OAEnB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBsjC,EAAqBd,SAAS4M,EAASpvC,GAE7C,EAEEytC,aAAaj2C,UAAU63C,WAAa,SAAUpZ,EAAKC,EAAKC,EAAKC,EAAK+L,EAAWd,EAAKiO,GAChFnN,EAAUf,QAAQlL,EAAI,GAAIA,EAAI,GAAI,IAAKmL,GACvCc,EAAUf,QAAQjL,EAAI,GAAIA,EAAI,GAAI,IAAKkL,EAAM,GAEzCiO,GACFnN,EAAUf,QAAQnL,EAAI,GAAIA,EAAI,GAAI,IAAKoL,GAGzCc,EAAUf,QAAQhL,EAAI,GAAIA,EAAI,GAAI,IAAKiL,EAAM,EACjD,EAEEoM,aAAaj2C,UAAU+3C,oBAAsB,SAAU7c,EAAQyP,EAAWd,EAAKiO,GAC7EnN,EAAUf,QAAQ1O,EAAO,GAAIA,EAAO,GAAI,IAAK2O,GAC7Cc,EAAUf,QAAQ1O,EAAO,GAAIA,EAAO,GAAI,IAAK2O,EAAM,GAE/CiO,GACFnN,EAAUf,QAAQ1O,EAAO,GAAIA,EAAO,GAAI,IAAK2O,GAG/Cc,EAAUf,QAAQ1O,EAAO,GAAIA,EAAO,GAAI,IAAK2O,EAAM,EACvD,EAEEoM,aAAaj2C,UAAUu3C,UAAY,SAAUpX,EAAW6X,EAAcrN,GACpE,IAEIniC,EAEAid,EACAK,EAEiBmyB,EACLC,EACZta,EACAvJ,EAEAyL,IAZYK,EAAUsW,UACtBU,EAAahX,EAAU0K,MAAMgB,MAAMtlB,OAEnCrK,EAAMikB,EAAU0K,MAAMgB,MAAM1O,QAG5BO,EAAc,EAKdnX,EAAS,GAETuxB,GAAW,EAaf,IAXKnN,GAKHuN,EAAevN,EAAUxN,QACzB2C,EAAU6K,EAAUxN,UALpBwN,EAAYD,UAAUpN,aACtB4a,EAAe,EACfpY,EAAU,GAMZvZ,EAAO5gB,KAAKglC,GAEPniC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAK3B,IAJAo1B,EAAU6Y,EAAUjuC,GAAGo1B,QACvB+M,EAAUhhC,EAAIwtC,EAAW3uC,GAAGmB,EAC5Bmc,EAAOqxB,EAAW3uC,GAAGmB,EAAIi0B,EAAQz8B,OAASy8B,EAAQz8B,OAAS,EAEtDskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAGzB,GAAIiY,GAFJua,EAAoBra,EAAQnY,EAAI,IAEIiY,YAAcsa,EAAa11C,EAC7Do7B,GAAeua,EAAkBva,YACjCiN,EAAUhhC,GAAI,MACL+zB,IAAAA,EAAcsa,EAAa3zC,EAAG,CACvCsmC,EAAUhhC,GAAI,EACd,KACV,CACcquC,EAAa11C,GAAKo7B,GAAesa,EAAa3zC,GAAKq5B,EAAcua,EAAkBva,aACrF/8B,KAAKk3C,WAAWV,EAAW3uC,GAAGzG,EAAE0jB,EAAI,GAAI0xB,EAAW3uC,GAAGwD,EAAEyZ,EAAI,GAAI0xB,EAAW3uC,GAAGA,EAAEid,GAAI0xB,EAAW3uC,GAAGzG,EAAE0jB,GAAIklB,EAAWuN,EAAcJ,GACjIA,GAAW,IAEXzjB,EAAUsO,IAAInC,cAAc2W,EAAW3uC,GAAGzG,EAAE0jB,EAAI,GAAI0xB,EAAW3uC,GAAGzG,EAAE0jB,GAAI0xB,EAAW3uC,GAAGwD,EAAEyZ,EAAI,GAAI0xB,EAAW3uC,GAAGA,EAAEid,IAAKuyB,EAAa11C,EAAIo7B,GAAeua,EAAkBva,aAAcsa,EAAa3zC,EAAIq5B,GAAeua,EAAkBva,YAAaE,EAAQnY,EAAI,IAChQ9kB,KAAKo3C,oBAAoB1jB,EAASsW,EAAWuN,EAAcJ,GAE3DA,GAAW,EACXnN,EAAUhhC,GAAI,GAGhB+zB,GAAeua,EAAkBva,YACjCwa,GAAgB,CACjB,CAGH,GAAIf,EAAW3uC,GAAGmB,GAAKi0B,EAAQz8B,OAAQ,CAGrC,GAFA82C,EAAoBra,EAAQnY,EAAI,GAE5BiY,GAAesa,EAAa3zC,EAAG,CACjC,IAAIg7B,EAAgBzB,EAAQnY,EAAI,GAAGiY,YAE/Bsa,EAAa11C,GAAKo7B,GAAesa,EAAa3zC,GAAKq5B,EAAc2B,GACnE1+B,KAAKk3C,WAAWV,EAAW3uC,GAAGzG,EAAE0jB,EAAI,GAAI0xB,EAAW3uC,GAAGwD,EAAEyZ,EAAI,GAAI0xB,EAAW3uC,GAAGA,EAAE,GAAI2uC,EAAW3uC,GAAGzG,EAAE,GAAI4oC,EAAWuN,EAAcJ,GACjIA,GAAW,IAEXzjB,EAAUsO,IAAInC,cAAc2W,EAAW3uC,GAAGzG,EAAE0jB,EAAI,GAAI0xB,EAAW3uC,GAAGzG,EAAE,GAAIo1C,EAAW3uC,GAAGwD,EAAEyZ,EAAI,GAAI0xB,EAAW3uC,GAAGA,EAAE,IAAKwvC,EAAa11C,EAAIo7B,GAAe2B,GAAgB2Y,EAAa3zC,EAAIq5B,GAAe2B,EAAezB,EAAQnY,EAAI,IAChO9kB,KAAKo3C,oBAAoB1jB,EAASsW,EAAWuN,EAAcJ,GAE3DA,GAAW,EACXnN,EAAUhhC,GAAI,EAE1B,MACUghC,EAAUhhC,GAAI,EAGhB+zB,GAAeua,EAAkBva,YACjCwa,GAAgB,CACjB,CAOD,GALIvN,EAAUxN,UACZwN,EAAUf,QAAQe,EAAU5oC,EAAE+9B,GAAS,GAAI6K,EAAU5oC,EAAE+9B,GAAS,GAAI,IAAKA,GACzE6K,EAAUf,QAAQe,EAAU5oC,EAAE4oC,EAAUxN,QAAU,GAAG,GAAIwN,EAAU5oC,EAAE4oC,EAAUxN,QAAU,GAAG,GAAI,IAAKwN,EAAUxN,QAAU,IAGvHO,EAAcsa,EAAa3zC,EAC7B,MAGEmE,EAAI0T,EAAM,IACZyuB,EAAYD,UAAUpN,aACtBwa,GAAW,EACXvxB,EAAO5gB,KAAKglC,GACZuN,EAAe,EAElB,CAED,QACJ,EAIEp8B,gBAAgB,CAACk6B,eAAgBE,wBAEjCA,uBAAuBl2C,UAAUm2C,uBAAyB,SAAUxd,EAAMznB,GACxEvQ,KAAKioC,SAAWjoC,KAAK21C,YACrB31C,KAAKw3C,OAASvV,gBAAgBqG,QAAQtQ,EAAMznB,EAAK+W,EAAG,EAAG,KAAMtnB,MAC7DA,KAAKyoC,cAAgBzoC,KAAKw3C,OAAOjQ,gBAAgB/mC,MACrD,EAEE+0C,uBAAuBl2C,UAAUo4C,YAAc,SAAU1zB,EAAMyzB,GAC7D,IAAWjW,EAAGiW,EAAS,IACRE,EAAG,CAAC,EAAG,GAClBC,EAAa5zB,EAAKyY,QAClB30B,EAAI,EAER,IAAKA,EAAI,EAAGA,EAAI8vC,EAAY9vC,GAAK,EAC/B6vC,EAAY,IAAM3zB,EAAK3iB,EAAEyG,GAAG,GAC5B6vC,EAAY,IAAM3zB,EAAK3iB,EAAEyG,GAAG,GAG9B6vC,EAAY,IAAMC,EAClBD,EAAY,IAAMC,EAClB,IAEMvO,EACAC,EACFC,EACAC,IAEEE,EAPFmO,EAAa7N,UAAUpN,aAS3B,IARAib,EAAW5uC,EAAI+a,EAAK/a,EAQfnB,EAAI,EAAGA,EAAI8vC,EAAY9vC,GAAK,EAC/BuhC,EAAKrlB,EAAK3iB,EAAEyG,GAAG,IAAM6vC,EAAY,GAAK3zB,EAAK3iB,EAAEyG,GAAG,IAAM05B,EACtD8H,EAAKtlB,EAAK3iB,EAAEyG,GAAG,IAAM6vC,EAAY,GAAK3zB,EAAK3iB,EAAEyG,GAAG,IAAM05B,EACtD+H,EAAKvlB,EAAK1Y,EAAExD,GAAG,IAAM6vC,EAAY,GAAK3zB,EAAK1Y,EAAExD,GAAG,KAAO05B,EACvDgI,EAAKxlB,EAAK1Y,EAAExD,GAAG,IAAM6vC,EAAY,GAAK3zB,EAAK1Y,EAAExD,GAAG,KAAO05B,EACvDiI,EAAKzlB,EAAKlc,EAAEA,GAAG,IAAM6vC,EAAY,GAAK3zB,EAAKlc,EAAEA,GAAG,KAAO05B,EACvDkI,EAAK1lB,EAAKlc,EAAEA,GAAG,IAAM6vC,EAAY,GAAK3zB,EAAKlc,EAAEA,GAAG,KAAO05B,EACvDqW,EAAWzO,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI5hC,GAGjD,OAAiB+vC,CACrB,EAEErC,uBAAuBl2C,UAAUk3C,cAAgB,SAAU9O,GACzD,IAAc+O,EACV3uC,IAGIsd,EAIOqa,EACT2L,EAPF5vB,EAAMvb,KAAK4lB,OAAOplB,OAGZg3C,EAAGx3C,KAAKw3C,OAAOp2C,EAEzB,GAAe,IAAXo2C,EAIF,IAAK3vC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAI3B,GAFAsjC,GADA3L,EAAYx/B,KAAK4lB,OAAO/d,IACSsjC,qBAE1B3L,EAAU0K,MAAM9C,MAASpnC,KAAKonC,MAASK,EAM5C,IALA0D,EAAqBb,gBACrB9K,EAAU0K,MAAM9C,MAAO,EACvBoP,EAAahX,EAAU0K,MAAMgB,MAAMtlB,OACnCT,EAAOqa,EAAU0K,MAAMgB,MAAM1O,QAExB1X,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBqmB,EAAqBd,SAASrqC,KAAKy3C,YAAYjB,EAAW1xB,GAAI0yB,IAIlEhY,EAAU0K,MAAMgB,MAAQ1L,EAAU2L,oBACnC,CAGEnrC,KAAKwoC,kBAAkBhoC,SAC1BR,KAAKonC,MAAO,EAElB,EAEE,IAAIyQ,yBAA2B,WAC7B,IAAIC,EAAgB,CAAC,EAAG,GA+KxB,SAA0BC,EAAC/f,EAAMznB,EAAMuG,GAwBrC,GAvBA9W,KAAKg4B,KAAOA,EACZh4B,KAAKsnC,SAAW,EAChBtnC,KAAKyiC,SAAW,YAChBziC,KAAKuQ,KAAOA,EACZvQ,KAAKoB,EAAI,IAAI6sC,OAEbjuC,KAAKg4C,IAAM,WACXh4C,KAAKi4C,uBAAyB,EAC9Bj4C,KAAK2oC,6BAA6B7xB,GAAakhB,GAE3CznB,EAAKnL,GAAKmL,EAAKnL,EAAEzD,GACnB3B,KAAKk4C,GAAKjW,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnL,EAAEu1B,EAAG,EAAG,EAAG36B,MACxDA,KAAKm4C,GAAKlW,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnL,EAAE8+B,EAAG,EAAG,EAAGlkC,MAEpDuQ,EAAKnL,EAAEqsC,IACTzxC,KAAKo4C,GAAKnW,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnL,EAAEqsC,EAAG,EAAG,EAAGzxC,QAG1DA,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnL,GAAK,CAC/C+F,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAGnL,MAGPuQ,EAAK8nC,GAAI,CAKX,GAJAr4C,KAAKq4C,GAAKpW,gBAAgBqG,QAAQtQ,EAAMznB,EAAK8nC,GAAI,EAAG54B,UAAWzf,MAC/DA,KAAKs4C,GAAKrW,gBAAgBqG,QAAQtQ,EAAMznB,EAAK+nC,GAAI,EAAG74B,UAAWzf,MAC/DA,KAAKu4C,GAAKtW,gBAAgBqG,QAAQtQ,EAAMznB,EAAKgoC,GAAI,EAAG94B,UAAWzf,MAE3DuQ,EAAKo8B,GAAGxhC,EAAE,GAAG24B,GAAI,CACnB,IAAIj8B,EACG0T,EAAGhL,EAAKo8B,GAAGxhC,EAAE3K,OAEpB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB0I,EAAKo8B,GAAGxhC,EAAEtD,GAAGg8B,GAAK,KAClBtzB,EAAKo8B,GAAGxhC,EAAEtD,GAAGi8B,GAAK,IAErB,CAED9jC,KAAK2sC,GAAK1K,gBAAgBqG,QAAQtQ,EAAMznB,EAAKo8B,GAAI,EAAGltB,UAAWzf,MAE/DA,KAAK2sC,GAAG5H,IAAK,CACrB,MACQ/kC,KAAKqR,EAAI4wB,gBAAgBqG,QAAQtQ,EAAMznB,EAAKc,GAAK,CAC/ClG,EAAG,GACF,EAAGsU,UAAWzf,MAGfuQ,EAAKgX,KACPvnB,KAAKunB,GAAK0a,gBAAgBqG,QAAQtQ,EAAMznB,EAAKgX,GAAI,EAAG9H,UAAWzf,MAC/DA,KAAKwnB,GAAKya,gBAAgBqG,QAAQtQ,EAAMznB,EAAKiX,GAAI,EAAG/H,UAAWzf,OAGjEA,KAAKsnB,EAAI2a,gBAAgBqG,QAAQtQ,EAAMznB,EAAK+W,GAAK,CAC/Cnc,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAGnL,MACTA,KAAK2B,EAAIsgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAK5O,GAAK,CAC/CwJ,EAAG,CAAC,IAAK,IAAK,MACb,EAAG,IAAMnL,MAERuQ,EAAKlF,EACPrL,KAAKqL,EAAI42B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKlF,EAAG,EAAG,IAAM2sB,GAExDh4B,KAAKqL,EAAI,CACP+7B,MAAM,EACNhmC,EAAG,GAIPpB,KAAKw4C,UAAW,EAEXx4C,KAAKwoC,kBAAkBhoC,QAC1BR,KAAKioC,UAAS,EAEjB,CAgBD,OAdA8P,EAAkB14C,UAAY,CAC5Bo5C,cA1PF,SAAuBC,GACrB,IAAItR,EAAOpnC,KAAKonC,KAChBpnC,KAAK0oC,2BACL1oC,KAAKonC,KAAOpnC,KAAKonC,MAAQA,EAErBpnC,KAAKsnB,GACPoxB,EAAIxJ,WAAWlvC,KAAKsnB,EAAElmB,EAAE,IAAKpB,KAAKsnB,EAAElmB,EAAE,GAAIpB,KAAKsnB,EAAElmB,EAAE,IAGjDpB,KAAK2B,GACP+2C,EAAI1F,MAAMhzC,KAAK2B,EAAEP,EAAE,GAAIpB,KAAK2B,EAAEP,EAAE,GAAIpB,KAAK2B,EAAEP,EAAE,IAG3CpB,KAAKunB,IACPmxB,EAAI1J,cAAchvC,KAAKunB,GAAGnmB,EAAGpB,KAAKwnB,GAAGpmB,GAGnCpB,KAAKqR,EACPqnC,EAAI3F,QAAQ/yC,KAAKqR,EAAEjQ,GAEnBs3C,EAAI/J,SAAS3uC,KAAKu4C,GAAGn3C,GAAGstC,QAAQ1uC,KAAKs4C,GAAGl3C,GAAGqtC,QAAQzuC,KAAKq4C,GAAGj3C,GAAGutC,SAAS3uC,KAAK2sC,GAAGvrC,EAAE,IAAIstC,QAAQ1uC,KAAK2sC,GAAGvrC,EAAE,IAAIqtC,QAAQzuC,KAAK2sC,GAAGvrC,EAAE,IAG3HpB,KAAKuQ,KAAKnL,EAAEzD,EACV3B,KAAKuQ,KAAKnL,EAAEqsC,EACdiH,EAAIxJ,UAAUlvC,KAAKk4C,GAAG92C,EAAGpB,KAAKm4C,GAAG/2C,GAAIpB,KAAKo4C,GAAGh3C,GAE7Cs3C,EAAIxJ,UAAUlvC,KAAKk4C,GAAG92C,EAAGpB,KAAKm4C,GAAG/2C,EAAG,GAGtCs3C,EAAIxJ,UAAUlvC,KAAKoF,EAAEhE,EAAE,GAAIpB,KAAKoF,EAAEhE,EAAE,IAAKpB,KAAKoF,EAAEhE,EAAE,GAErD,EA2NC6mC,SAzNF,SAAqB0Q,GACnB,GAAI34C,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,QAA1C,CAWA,GAPItnC,KAAKw4C,WACPx4C,KAAK44C,qBACL54C,KAAKw4C,UAAW,GAGlBx4C,KAAK0oC,2BAED1oC,KAAKonC,MAAQuR,EAAa,CAC5B,IAAItoB,EAqBJ,GApBArwB,KAAKoB,EAAEowC,eAAexxC,KAAKg4C,IAAIxxC,OAE3BxG,KAAKi4C,uBAAyB,GAChCj4C,KAAKoB,EAAE8tC,WAAWlvC,KAAKsnB,EAAElmB,EAAE,IAAKpB,KAAKsnB,EAAElmB,EAAE,GAAIpB,KAAKsnB,EAAElmB,EAAE,IAGpDpB,KAAKi4C,uBAAyB,GAChCj4C,KAAKoB,EAAE4xC,MAAMhzC,KAAK2B,EAAEP,EAAE,GAAIpB,KAAK2B,EAAEP,EAAE,GAAIpB,KAAK2B,EAAEP,EAAE,IAG9CpB,KAAKunB,IAAMvnB,KAAKi4C,uBAAyB,GAC3Cj4C,KAAKoB,EAAE4tC,cAAchvC,KAAKunB,GAAGnmB,EAAGpB,KAAKwnB,GAAGpmB,GAGtCpB,KAAKqR,GAAKrR,KAAKi4C,uBAAyB,EAC1Cj4C,KAAKoB,EAAE2xC,QAAQ/yC,KAAKqR,EAAEjQ,IACZpB,KAAKqR,GAAKrR,KAAKi4C,uBAAyB,GAClDj4C,KAAKoB,EAAEutC,SAAS3uC,KAAKu4C,GAAGn3C,GAAGstC,QAAQ1uC,KAAKs4C,GAAGl3C,GAAGqtC,QAAQzuC,KAAKq4C,GAAGj3C,GAAGutC,SAAS3uC,KAAK2sC,GAAGvrC,EAAE,IAAIstC,QAAQ1uC,KAAK2sC,GAAGvrC,EAAE,IAAIqtC,QAAQzuC,KAAK2sC,GAAGvrC,EAAE,IAG9HpB,KAAK64C,aAAc,CACrB,IAAI7K,IAIJ,GAFA3d,EAAYrwB,KAAKg4B,KAAK7F,WAAW9B,UAE7BrwB,KAAKoF,GAAKpF,KAAKoF,EAAEy9B,WAAa7iC,KAAKoF,EAAE0zC,eACnC94C,KAAKoF,EAAE2hC,SAAS1C,UAAYrkC,KAAKoF,EAAEo9B,YAAcxiC,KAAKoF,EAAEy9B,UAAU,GAAGx6B,GACvE2lC,EAAKhuC,KAAKoF,EAAE0zC,gBAAgB94C,KAAKoF,EAAEy9B,UAAU,GAAGx6B,EAAI,KAAQgoB,EAAW,GACvE0oB,EAAK/4C,KAAKoF,EAAE0zC,eAAe94C,KAAKoF,EAAEy9B,UAAU,GAAGx6B,EAAIgoB,EAAW,IACrDrwB,KAAKoF,EAAE2hC,SAAS1C,UAAYrkC,KAAKoF,EAAEo9B,YAAcxiC,KAAKoF,EAAEy9B,UAAU7iC,KAAKoF,EAAEy9B,UAAUriC,OAAS,GAAG6H,GACxG2lC,EAAKhuC,KAAKoF,EAAE0zC,eAAe94C,KAAKoF,EAAEy9B,UAAU7iC,KAAKoF,EAAEy9B,UAAUriC,OAAS,GAAG6H,EAAIgoB,EAAW,GACxF0oB,EAAK/4C,KAAKoF,EAAE0zC,gBAAgB94C,KAAKoF,EAAEy9B,UAAU7iC,KAAKoF,EAAEy9B,UAAUriC,OAAS,GAAG6H,EAAI,KAAQgoB,EAAW,KAEjG2d,EAAKhuC,KAAKoF,EAAEs9B,GACZqW,EAAK/4C,KAAKoF,EAAE0zC,gBAAgB94C,KAAKoF,EAAE2hC,SAAS1C,UAAYrkC,KAAKoF,EAAEo9B,WAAa,KAAQnS,EAAWrwB,KAAKoF,EAAEo9B,kBAEnG,GAAIxiC,KAAKk4C,IAAMl4C,KAAKk4C,GAAGrV,WAAa7iC,KAAKm4C,GAAGtV,WAAa7iC,KAAKk4C,GAAGY,gBAAkB94C,KAAKm4C,GAAGW,eAAgB,CAChH9K,EAAK,GACL+K,EAAK,GACL,MAAS/4C,KAAKk4C,GACVC,EAAKn4C,KAAKm4C,GAEVD,EAAGnR,SAAS1C,UAAY6T,EAAG1V,YAAc0V,EAAGrV,UAAU,GAAGx6B,GAC3D2lC,EAAG,GAAKkK,EAAGY,gBAAgBZ,EAAGrV,UAAU,GAAGx6B,EAAI,KAAQgoB,EAAW,GAClE2d,EAAG,GAAKmK,EAAGW,gBAAgBX,EAAGtV,UAAU,GAAGx6B,EAAI,KAAQgoB,EAAW,GAClE0oB,EAAG,GAAKb,EAAGY,eAAeZ,EAAGrV,UAAU,GAAGx6B,EAAIgoB,EAAW,GACzD0oB,EAAG,GAAKZ,EAAGW,eAAeX,EAAGtV,UAAU,GAAGx6B,EAAIgoB,EAAW,IAChD6nB,EAAGnR,SAAS1C,UAAY6T,EAAG1V,YAAc0V,EAAGrV,UAAUqV,EAAGrV,UAAUriC,OAAS,GAAG6H,GACxF2lC,EAAG,GAAKkK,EAAGY,eAAeZ,EAAGrV,UAAUqV,EAAGrV,UAAUriC,OAAS,GAAG6H,EAAIgoB,EAAW,GAC/E2d,EAAG,GAAKmK,EAAGW,eAAeX,EAAGtV,UAAUsV,EAAGtV,UAAUriC,OAAS,GAAG6H,EAAIgoB,EAAW,GAC/E0oB,EAAG,GAAKb,EAAGY,gBAAgBZ,EAAGrV,UAAUqV,EAAGrV,UAAUriC,OAAS,GAAG6H,EAAI,KAAQgoB,EAAW,GACxF0oB,EAAG,GAAKZ,EAAGW,gBAAgBX,EAAGtV,UAAUsV,EAAGtV,UAAUriC,OAAS,GAAG6H,EAAI,KAAQgoB,EAAW,KAExF2d,EAAK,CAACkK,EAAGxV,GAAIyV,EAAGzV,IAChBqW,EAAG,GAAKb,EAAGY,gBAAgBZ,EAAGnR,SAAS1C,UAAY6T,EAAG1V,WAAa,KAAQnS,EAAW6nB,EAAG1V,YACzFuW,EAAG,GAAKZ,EAAGW,gBAAgBX,EAAGpR,SAAS1C,UAAY8T,EAAG3V,WAAa,KAAQnS,EAAW8nB,EAAG3V,YAEvG,MAEYwL,EADA+K,EAAKjB,EAIP93C,KAAKoB,EAAE2xC,QAAQnnC,KAAKu6B,MAAM6H,EAAG,GAAK+K,EAAG,GAAI/K,EAAG,GAAK+K,EAAG,IACrD,CAEG/4C,KAAKuQ,KAAKnL,GAAKpF,KAAKuQ,KAAKnL,EAAEzD,EACzB3B,KAAKuQ,KAAKnL,EAAEqsC,EACdzxC,KAAKoB,EAAE8tC,UAAUlvC,KAAKk4C,GAAG92C,EAAGpB,KAAKm4C,GAAG/2C,GAAIpB,KAAKo4C,GAAGh3C,GAEhDpB,KAAKoB,EAAE8tC,UAAUlvC,KAAKk4C,GAAG92C,EAAGpB,KAAKm4C,GAAG/2C,EAAG,GAGzCpB,KAAKoB,EAAE8tC,UAAUlvC,KAAKoF,EAAEhE,EAAE,GAAIpB,KAAKoF,EAAEhE,EAAE,IAAKpB,KAAKoF,EAAEhE,EAAE,GAExD,CAEDpB,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,OAvFnC,CAwFF,EA+HCsR,mBA7HF,WACE,IAAK54C,KAAKsnB,EAAEnc,IACVnL,KAAKg4C,IAAI9I,WAAWlvC,KAAKsnB,EAAElmB,EAAE,IAAKpB,KAAKsnB,EAAElmB,EAAE,GAAIpB,KAAKsnB,EAAElmB,EAAE,IACxDpB,KAAKi4C,uBAAyB,GAK3Bj4C,KAAK2B,EAAE4lC,gBAAgB/mC,QAA5B,CAOA,GANER,KAAKg4C,IAAIhF,MAAMhzC,KAAK2B,EAAEP,EAAE,GAAIpB,KAAK2B,EAAEP,EAAE,GAAIpB,KAAK2B,EAAEP,EAAE,IAClDpB,KAAKi4C,uBAAyB,EAK5Bj4C,KAAKunB,GAAI,CACX,GAAKvnB,KAAKunB,GAAGggB,gBAAgB/mC,QAAWR,KAAKwnB,GAAG+f,gBAAgB/mC,OAI9D,OAHAR,KAAKg4C,IAAIhJ,cAAchvC,KAAKunB,GAAGnmB,EAAGpB,KAAKwnB,GAAGpmB,GAC1CpB,KAAKi4C,uBAAyB,CAIjC,CAEGj4C,KAAKqR,EACFrR,KAAKqR,EAAEk2B,gBAAgB/mC,SAC1BR,KAAKg4C,IAAIjF,QAAQ/yC,KAAKqR,EAAEjQ,GACxBpB,KAAKi4C,uBAAyB,GAEtBj4C,KAAKu4C,GAAGhR,gBAAgB/mC,QAAWR,KAAKs4C,GAAG/Q,gBAAgB/mC,QAAWR,KAAKq4C,GAAG9Q,gBAAgB/mC,QAAWR,KAAK2sC,GAAGpF,gBAAgB/mC,SAC3IR,KAAKg4C,IAAIrJ,SAAS3uC,KAAKu4C,GAAGn3C,GAAGstC,QAAQ1uC,KAAKs4C,GAAGl3C,GAAGqtC,QAAQzuC,KAAKq4C,GAAGj3C,GAAGutC,SAAS3uC,KAAK2sC,GAAGvrC,EAAE,IAAIstC,QAAQ1uC,KAAK2sC,GAAGvrC,EAAE,IAAIqtC,QAAQzuC,KAAK2sC,GAAGvrC,EAAE,IAClIpB,KAAKi4C,uBAAyB,EAlB/B,CAoBF,EA6FCe,WA3FF,WACJ,GA4FI79B,gBAAgB,CAACotB,0BAA2BwP,GAC5CA,EAAkB14C,UAAUyoC,mBA1F5B,SAA4BpsB,GAC1B1b,KAAKi5C,oBAAoBv9B,GAEzB1b,KAAKg4B,KAAK8P,mBAAmBpsB,GAC7B1b,KAAKw4C,UAAW,CACjB,EAsFDT,EAAkB14C,UAAU45C,oBAAsB1Q,yBAAyBlpC,UAAUyoC,mBAM9E,CACLoR,qBALF,SAA8BlhB,EAAMznB,EAAMuG,GACxC,OAAO,MAAsBkhB,EAAMznB,EAAMuG,EAC1C,EAKL,CA7QiC,GA+Q/B,4BAA4B,CAkS5B,SAASqiC,wBA0HT,SAASC,WAAW9xB,EAAGtF,GACrB,OAAyB,SAAb3C,IAAIiI,EAAItF,IAAepW,KAAKqT,IAAIrT,KAAKyT,IAAIiI,GAAI1b,KAAKyT,IAAI2C,GACnE,CAED,SAAkBq3B,UAACn3B,GACjB,OAAWtW,KAACyT,IAAI6C,IAAM,IACvB,CAED,SAASo3B,KAAKvN,EAAIC,EAAIwL,GACpB,UAAa,EAAIA,GAAUxL,EAAKwL,CACjC,CAED,SAAS+B,UAAUxN,EAAIC,EAAIwL,GACzB,MAAO,CAAC8B,KAAKvN,EAAG,GAAIC,EAAG,GAAIwL,GAAS8B,KAAKvN,EAAG,GAAIC,EAAG,GAAIwL,GACxD,CAED,mBAAmBlwB,EAAGtF,EAAGhZ,GAEvB,GAAU,IAANse,EAAS,MAAO,GACpB,IAAI3lB,EAAIqgB,EAAIA,EAAI,EAAIsF,EAAIte,EAExB,GAAIrH,EAAI,EAAG,MAAO,GAClB,IAAc63C,GAAIx3B,GAAK,EAAIsF,GAE3B,GAAU,IAAN3lB,EAAS,MAAO,CAAC63C,GACrB,IAAIC,EAAQ7tC,KAAK+S,KAAKhd,IAAM,EAAI2lB,GAEhC,MAAO,CAACkyB,EAAaC,EAAOD,EAAaC,EAC1C,CAED,SAASC,uBAAuB3N,EAAIC,EAAIoE,EAAIuJ,GAC1C,MAAO,CAAO,EAAI3N,EAATD,EAAc,EAAIqE,EAAKuJ,EAAI,EAAI5N,EAAK,EAAIC,EAAK,EAAIoE,GAAK,EAAIrE,EAAK,EAAIC,EAAID,EACjF,CAED,SAAoB6N,YAACx0C,GACnB,OAAWy0C,IAAAA,iBAAiBz0C,EAAGA,EAAGA,EAAGA,GAAG,EACzC,CAED,SAASy0C,iBAAiB9N,EAAIC,EAAIoE,EAAIuJ,EAAIG,GACpCA,GAAaC,WAAWhO,EAAIC,KAC9BA,EAAKuN,UAAUxN,EAAI4N,EAAI,EAAI,IAGzBG,GAAaC,WAAW3J,EAAIuJ,KAC9BvJ,EAAKmJ,UAAUxN,EAAI4N,EAAI,EAAI,IAG7B,MAAaD,uBAAuB3N,EAAG,GAAIC,EAAG,GAAIoE,EAAG,GAAIuJ,EAAG,IACxDK,EAASN,uBAAuB3N,EAAG,GAAIC,EAAG,GAAIoE,EAAG,GAAIuJ,EAAG,IAC5D35C,KAAKsnB,EAAI,CAAC2yB,EAAO,GAAID,EAAO,IAC5Bh6C,KAAKgiB,EAAI,CAACi4B,EAAO,GAAID,EAAO,IAC5Bh6C,KAAKgJ,EAAI,CAACixC,EAAO,GAAID,EAAO,IAC5Bh6C,KAAKiM,EAAI,CAACguC,EAAO,GAAID,EAAO,IAC5Bh6C,KAAKu6B,OAAS,CAACwR,EAAIC,EAAIoE,EAAIuJ,EAC5B,CAkDD,SAASO,QAAQlY,EAAKjc,GACpB,IAAI9G,EAAM+iB,EAAIzH,OAAO,GAAGxU,GACjBhH,EAAGijB,EAAIzH,OAAOyH,EAAIzH,OAAO/5B,OAAS,GAAGulB,GAE5C,GAAI9G,EAAMF,EAAK,CACb,IAAKrb,EAAGqb,EACRA,EAAME,EACNA,EAAMvb,CACP,CAKD,IAFA,MAAQy2C,UAAU,EAAInY,EAAI1a,EAAEvB,GAAO,EAAIic,EAAIhgB,EAAE+D,GAAOic,EAAIh5B,EAAE+c,IAEhDle,EAAG,EAAGA,EAAIqa,EAAE1hB,OAAQqH,GAAK,EACjC,GAAIqa,EAAEra,GAAK,GAAKqa,EAAEra,GAAK,EAAG,CACxB,IAAOyX,EAAG0iB,EAAI3D,MAAMnc,EAAEra,IAAIke,GACtBzG,EAAML,EAAKA,EAAMK,EAAaA,EAAMP,IAAKA,EAAMO,EACpD,CAGH,MAAO,CACLL,IAAKA,EACLF,IAAKA,EAER,CAuBD,SAASq7B,cAAcpY,EAAK9B,EAAIma,GAC9B,IAAOC,EAAGtY,EAAIuY,cACd,MAAO,CACLC,GAAIF,EAAIE,GACRC,GAAIH,EAAIG,GACR3vB,MAAOwvB,EAAIxvB,MACXC,OAAQuvB,EAAIvvB,OACZiX,IAAKA,EACL35B,GAAI63B,EAAKma,GAAM,EACfna,GAAIA,EACJma,GAAIA,EAEP,CAED,mBAAmB9pC,GACjB,MAAYA,EAAKyxB,IAAIjyB,MAAM,IAC3B,MAAO,CAACqqC,cAAcrqC,EAAM,GAAIQ,EAAK2vB,GAAI3vB,EAAKlI,GAAI+xC,cAAcrqC,EAAM,GAAIQ,EAAKlI,EAAGkI,EAAK8pC,IACxF,CAED,SAAqBK,aAACnK,EAAIhB,GACxB,OAAiC,EAA1B3jC,KAAKyT,IAAIkxB,EAAGiK,GAAKjL,EAAGiL,IAAUjK,EAAGzlB,MAAQykB,EAAGzkB,OAAmC,EAA1Blf,KAAKyT,IAAIkxB,EAAGkK,GAAKlL,EAAGkL,IAAUlK,EAAGxlB,OAASwkB,EAAGxkB,MAC1G,CAED,SAAS4vB,eAAenK,EAAIhB,EAAIoL,EAAOC,EAAWC,EAAeC,GAC/D,GAAKL,aAAalK,EAAIhB,GAEtB,GAAIoL,GAASG,GAAgBvK,EAAG1lB,OAAS+vB,GAAarK,EAAGzlB,QAAU8vB,GAAarL,EAAG1kB,OAAS+vB,GAAarL,EAAGzkB,QAAU8vB,EACpHC,EAAc91C,KAAK,CAACwrC,EAAGnoC,EAAGmnC,EAAGnnC,QAD/B,CAKA,IAAO2yC,EAAGC,UAAUzK,GACb0K,EAAGD,UAAUzL,GACpBmL,eAAeK,EAAI,GAAIE,EAAI,GAAIN,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIE,EAAI,GAAIN,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIE,EAAI,GAAIN,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIE,EAAI,GAAIN,EAAQ,EAAGC,EAAWC,EAAeC,EAPnE,CAQF,CAoBD,SAAqBI,aAAC7zB,EAAGtF,GACvB,MAAO,CAACsF,EAAE,GAAKtF,EAAE,GAAKsF,EAAE,GAAKtF,EAAE,GAAIsF,EAAE,GAAKtF,EAAE,GAAKsF,EAAE,GAAKtF,EAAE,GAAIsF,EAAE,GAAKtF,EAAE,GAAKsF,EAAE,GAAKtF,EAAE,GACtF,CAED,0BAA0Bo5B,EAAQC,EAAMC,EAAQC,GAC9C,IAAIvN,EAAK,CAACoN,EAAO,GAAIA,EAAO,GAAI,GAC1BrC,EAAG,CAACsC,EAAK,GAAIA,EAAK,GAAI,GACxBG,EAAK,CAACF,EAAO,GAAIA,EAAO,GAAI,KACvB,CAACC,EAAK,GAAIA,EAAK,GAAI,GACxBlqC,EAAI8pC,aAAaA,aAAanN,EAAI+K,GAAKoC,aAAaK,EAAIC,IAC5D,OAAIpC,UAAUhoC,EAAE,IAAY,KACrB,CAACA,EAAE,GAAKA,EAAE,GAAIA,EAAE,GAAKA,EAAE,GAC/B,CAED,SAASqqC,YAAYt2C,EAAG4nC,EAAOxsC,GAC7B,MAAO,CAAC4E,EAAE,GAAKwG,KAAK06B,IAAI0G,GAASxsC,EAAQ4E,EAAE,GAAKwG,KAAKq6B,IAAI+G,GAASxsC,EACnE,CAED,SAASm7C,cAAc3P,EAAIoE,GACzB,OAAOxkC,KAAKgwC,MAAM5P,EAAG,GAAKoE,EAAG,GAAIpE,EAAG,GAAKoE,EAAG,GAC7C,CAED,SAAS2J,WAAW/N,EAAIoE,GACtB,kBAAkBpE,EAAG,GAAIoE,EAAG,KAAOgJ,WAAWpN,EAAG,GAAIoE,EAAG,GACzD,CAED,SAASyL,iBAET1gC,CAUA,SAAS2gC,SAASC,EAAc1d,EAAO2O,EAAOjsB,EAAWi7B,EAAWC,EAAcC,GAChF,IAAIC,EAAOnP,EAAQphC,KAAK8T,GAAK,IAClBstB,EAAQphC,KAAK8T,GAAK,IACpB2e,EAAM,GAAKzyB,KAAK06B,IAAI0G,GAASjsB,EAAYi7B,EAC5C7D,EAAG9Z,EAAM,GAAKzyB,KAAKq6B,IAAI+G,GAASjsB,EAAYi7B,EAClDD,EAAa5S,YAAY+O,EAAIC,EAAID,EAAKtsC,KAAK06B,IAAI6V,GAAQF,EAAc9D,EAAKvsC,KAAKq6B,IAAIkW,GAAQF,EAAc/D,EAAKtsC,KAAK06B,IAAI8V,GAAQF,EAAa/D,EAAKvsC,KAAKq6B,IAAImW,GAAQF,EAAaH,EAAav7C,SAC7L,CAED,SAAS67C,uBAAuBve,EAAKC,GACnC,IAAIue,EAAS,CAACve,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IACrCye,EAAc,IAAV3wC,KAAK8T,GAEhB,MADoB,CAAC9T,KAAK06B,IAAIiW,GAAOD,EAAO,GAAK1wC,KAAKq6B,IAAIsW,GAAOD,EAAO,GAAI1wC,KAAKq6B,IAAIsW,GAAOD,EAAO,GAAK1wC,KAAK06B,IAAIiW,GAAOD,EAAO,GAEhI,CAED,SAASE,mBAAmBz4B,EAAM04B,GAChC,IAAIC,EAAoB,IAARD,EAAY14B,EAAKvjB,SAAW,EAAIi8C,EAAM,EACzCE,GAAIF,EAAM,GAAK14B,EAAKvjB,SAG7Bo8C,EAAUP,uBAFEt4B,EAAK3iB,EAAEs7C,GACP34B,EAAK3iB,EAAEu7C,IAEvB,OAAO/wC,KAAKu6B,MAAM,EAAG,GAAKv6B,KAAKu6B,MAAMyW,EAAQ,GAAIA,EAAQ,GAC1D,CAED,SAASC,aAAad,EAAch4B,EAAM04B,EAAKT,EAAWc,EAAWC,EAAWh8B,GAC9E,IAAIisB,EAAQwP,mBAAmBz4B,EAAM04B,GAC5Bpe,EAAGta,EAAK3iB,EAAEq7C,EAAM14B,EAAKyY,SAC1BwgB,EAAYj5B,EAAK3iB,EAAU,IAARq7C,EAAY14B,EAAKyY,QAAU,EAAIigB,EAAM,KAC5C14B,EAAK3iB,GAAGq7C,EAAM,GAAK14B,EAAKyY,SAC5BygB,EAAiB,IAAdF,EAAkBnxC,KAAK+S,KAAK/S,KAAK6S,IAAI4f,EAAM,GAAK2e,EAAU,GAAI,GAAKpxC,KAAK6S,IAAI4f,EAAM,GAAK2e,EAAU,GAAI,IAAM,EAC9GE,EAAiB,IAAdH,EAAkBnxC,KAAK+S,KAAK/S,KAAK6S,IAAI4f,EAAM,GAAK8e,EAAU,GAAI,GAAKvxC,KAAK6S,IAAI4f,EAAM,GAAK8e,EAAU,GAAI,IAAM,EAC1HrB,SAASC,EAAch4B,EAAK3iB,EAAEq7C,EAAM14B,EAAKyY,SAAUwQ,EAAOjsB,EAAWi7B,EAAWkB,GAA8B,GAAjBJ,EAAY,IAASG,GAA8B,GAAjBH,EAAY,IAASC,EACrJ,CAED,SAASK,cAAcrB,EAAcroB,EAASsoB,EAAWc,EAAWC,EAAWh8B,GAC7E,IAAK,IAAKlZ,EAAG,EAAGA,EAAIi1C,EAAWj1C,GAAK,EAAG,CACrC,IAAKQ,GAAIR,EAAI,IAAMi1C,EAAY,GACvBO,EAAiB,IAAdN,EAAkBnxC,KAAK+S,KAAK/S,KAAK6S,IAAIiV,EAAQ6G,OAAO,GAAG,GAAK7G,EAAQ6G,OAAO,GAAG,GAAI,GAAK3uB,KAAK6S,IAAIiV,EAAQ6G,OAAO,GAAG,GAAK7G,EAAQ6G,OAAO,GAAG,GAAI,IAAM,EACrJyS,EAAGtZ,EAAQ4pB,YAAYj1C,GAEhCyzC,SAASC,EADGroB,EAAQ2K,MAAMh2B,GACI2kC,EAAOjsB,EAAWi7B,EAAWqB,GAA0B,GAAjBP,EAAY,IAASO,GAA0B,GAAjBP,EAAY,IAASC,GACvHh8B,GAAaA,CACd,CAED,OAAgBA,CACjB,CAqED,SAAqBw8B,aAACvR,EAAIoE,EAAIoH,GAC5B,MAAY5rC,KAAKu6B,MAAMiK,EAAG,GAAKpE,EAAG,GAAIoE,EAAG,GAAKpE,EAAG,IACjD,MAAO,CAAC0P,YAAY1P,EAAIgB,EAAOwK,GAASkE,YAAYtL,EAAIpD,EAAOwK,GAChE,CAED,SAAsBgG,cAAC9pB,EAAS8jB,GAC9B,IAAMzL,EACC0R,EACAC,EACHC,EACAC,IAECl6C,EAELqoC,GADAroC,EAAI65C,aAAa7pB,EAAQ6G,OAAO,GAAI7G,EAAQ6G,OAAO,GAAIid,IAChD,GACPiG,EAAM/5C,EAAE,GAERg6C,GADAh6C,EAAI65C,aAAa7pB,EAAQ6G,OAAO,GAAI7G,EAAQ6G,OAAO,GAAIid,IAC/C,GACRmG,EAAMj6C,EAAE,GAERk6C,GADAl6C,EAAI65C,aAAa7pB,EAAQ6G,OAAO,GAAI7G,EAAQ6G,OAAO,GAAIid,IAC/C,GACRmC,EAAKj2C,EAAE,GACP,MAASm6C,iBAAiB9R,EAAI0R,EAAKC,EAAKC,GAC7B,OAAP3R,IAAaA,EAAKyR,GACtB,IAAIrN,EAAKyN,iBAAiBD,EAAKjE,EAAI+D,EAAKC,GAExC,OADW,OAAPvN,IAAaA,EAAKwN,GACX/D,IAAAA,iBAAiB9N,EAAIC,EAAIoE,EAAIuJ,EACzC,CAED,SAASmE,UAAU/B,EAAcgC,EAAMC,EAAMC,EAAUC,GACrD,MAASH,EAAKxjB,OAAO,GACjByR,EAAKgS,EAAKzjB,OAAO,GAErB,GAAiB,IAAb0jB,EAAgB,SAEpB,GAAIlE,WAAWhO,EAAIC,GAAK,OAAOD,EAE/B,GAAiB,IAAbkS,EAAgB,CAClB,IAAIE,GAAYJ,EAAKK,aAAa,GACvBC,GAAIL,EAAKI,aAAa,GAAKxyC,KAAK8T,GACjC4+B,EAAGT,iBAAiB9R,EAAI2P,YAAY3P,EAAIoS,EAAWvyC,KAAK8T,GAAK,EAAG,KAAMssB,EAAI0P,YAAY1P,EAAImS,EAAWvyC,KAAK8T,GAAK,EAAG,MACxH6+B,EAASD,EAAS3C,cAAc2C,EAAQvS,GAAM4P,cAAc5P,EAAIC,GAAM,EACnEoC,EAAGsN,YAAY3P,EAAIoS,EAAU,EAAII,EAAS5+B,aAIjD,OAHAo8B,EAAa9S,QAAQmF,EAAI,GAAIA,EAAI,GAAI,IAAK2N,EAAav7C,SAAW,GAClE4tC,EAAMsN,YAAY1P,EAAIqS,EAAS,EAAIE,EAAS5+B,aAC5Co8B,EAAa5S,YAAY6C,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIoC,EAAI,GAAIA,EAAI,GAAI2N,EAAav7C,UACzEwrC,CACV,CAGD,IAEIwS,EAAeX,iBAFV9D,WAAWhO,EAAIgS,EAAKxjB,OAAO,IAAMwjB,EAAKxjB,OAAO,GAAKwjB,EAAKxjB,OAAO,GAE/BwR,EAAIC,EADnC+N,WAAW/N,EAAIgS,EAAKzjB,OAAO,IAAMyjB,EAAKzjB,OAAO,GAAKyjB,EAAKzjB,OAAO,IAGvE,OAAIikB,GAAgB7C,cAAc6C,EAAczS,GAAMmS,GACpDnC,EAAa5S,YAAYqV,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIzC,EAAav7C,UACzHg+C,GAGZzS,CACV,CAED,SAAwB0S,gBAACn3B,EAAGtF,GAC1B,IAAa08B,EAAGp3B,EAAEwzB,cAAc94B,GAEhC,OADI08B,EAAUl+C,QAAU44C,WAAWsF,EAAU,GAAG,GAAI,IAAIA,EAAU/qB,QAC9D+qB,EAAUl+C,OAAwBk+C,EAAC,GAC5B,IACZ,CAED,SAAiCC,yBAACr3B,EAAGtF,GACnC,IAAQ48B,EAAGt3B,EAAExb,QACL+yC,EAAG78B,EAAElW,QACA4yC,EAAGD,gBAAgBn3B,EAAEA,EAAE9mB,OAAS,GAAIwhB,EAAE,IAOnD,OALI08B,IACFE,EAAKt3B,EAAE9mB,OAAS,GAAK8mB,EAAEA,EAAE9mB,OAAS,GAAGuP,MAAM2uC,EAAU,IAAI,GACzDG,EAAK,GAAK78B,EAAE,GAAGjS,MAAM2uC,EAAU,IAAI,IAGjCp3B,EAAE9mB,OAAS,GAAKwhB,EAAExhB,OAAS,IAC7Bk+C,EAAYD,gBAAgBn3B,EAAE,GAAItF,EAAEA,EAAExhB,OAAS,KAGtC,CAAC,CAAC8mB,EAAE,GAAGvX,MAAM2uC,EAAU,IAAI,IAAK,CAAC18B,EAAEA,EAAExhB,OAAS,GAAGuP,MAAM2uC,EAAU,IAAI,KAIzE,CAACE,EAAMC,EACf,CAED,SAA2BC,mBAAC5tB,GAG1B,IAFA,IAAKxtB,EAEKmE,EAAG,EAAGA,EAAIqpB,EAAS1wB,OAAQqH,GAAK,EACxCnE,EAAIi7C,yBAAyBztB,EAASrpB,EAAI,GAAIqpB,EAASrpB,IACvDqpB,EAASrpB,EAAI,GAAKnE,EAAE,GACpBwtB,EAASrpB,GAAKnE,EAAE,GASlB,OANIwtB,EAAS1wB,OAAS,IACpBkD,EAAIi7C,yBAAyBztB,EAASA,EAAS1wB,OAAS,GAAI0wB,EAAS,IACrEA,EAASA,EAAS1wB,OAAS,GAAKkD,EAAE,GAClCwtB,EAAS,GAAKxtB,EAAE,IAGHwtB,CAChB,CAED,SAA2B6tB,mBAACrrB,EAAS8jB,GAOnC,IACIt3B,IAEKnQ,EACLivC,EAJIC,EAAGvrB,EAAQwrB,mBAMnB,GAAoB,IAAhBD,EAAKz+C,OACP,MAAO,CAACg9C,cAAc9pB,EAAS8jB,IAGjC,GAAoB,IAAhByH,EAAKz+C,QAAgB44C,WAAW6F,EAAK,GAAI,GAI3C,OAFA/+B,GADAnQ,EAAQ2jB,EAAQ3jB,MAAMkvC,EAAK,KACd,GACbE,EAAQpvC,EAAM,GACP,CAACytC,cAAct9B,EAAMs3B,GAASgG,cAAc2B,EAAO3H,IAI5Dt3B,GADAnQ,EAAQ2jB,EAAQ3jB,MAAMkvC,EAAK,KACd,GACb,IAAK52C,GAAI42C,EAAK,GAAKA,EAAK,KAAO,EAAIA,EAAK,IAIxC,OAFAD,GADAjvC,EAAQA,EAAM,GAAGA,MAAM1H,IACX,GACZ82C,EAAQpvC,EAAM,GACP,CAACytC,cAAct9B,EAAMs3B,GAASgG,cAAcwB,EAAKxH,GAASgG,cAAc2B,EAAO3H,GACvF,CAED,SAA2B4H,sBAwG3B,SAASC,kBAAkBC,GAOzB,IANA,MAAaA,EAASC,OAASD,EAASC,OAAOxvC,MAAM,KAAO,GACjDyvC,EAAG,SACJD,EAAG,WACH/9C,EAAOhB,OAGRqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAG5B,OAFYrG,EAAOqG,GAAGP,eAGpB,IAAK,SACHi4C,EAAS,SACT,MAEF,IAAK,OACHC,EAAU,MACV,MAEF,IAAK,QACHA,EAAU,MACV,MAEF,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,UACL,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,QACL,IAAK,OACHA,EAAU,MAQhB,MAAO,CACL39C,MAAO09C,EACPE,OAAQH,EAASE,SAAWA,EAE/B,CAriCDrkC,gBAAgB,CAACk6B,eAAgBqK,kBAEjCA,iBAAiBrgD,UAAUm2C,uBAAyB,SAAUxd,EAAMznB,GAClEvQ,KAAKioC,SAAWjoC,KAAK21C,YACrB31C,KAAKgJ,EAAIi5B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKvH,EAAG,EAAG,KAAMhJ,MACxDA,KAAKqL,EAAI42B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKlF,EAAG,EAAG,KAAMrL,MACxDA,KAAK2/C,GAAK9H,yBAAyBqB,qBAAqBlhB,EAAMznB,EAAKovC,GAAI3/C,MACvEA,KAAK4/C,GAAK3d,gBAAgBqG,QAAQtQ,EAAMznB,EAAKovC,GAAGC,GAAI,EAAG,IAAM5/C,MAC7DA,KAAK6/C,GAAK5d,gBAAgBqG,QAAQtQ,EAAMznB,EAAKovC,GAAGE,GAAI,EAAG,IAAM7/C,MAC7DA,KAAKuQ,KAAOA,EAEPvQ,KAAKwoC,kBAAkBhoC,QAC1BR,KAAKioC,UAAS,GAGhBjoC,KAAKyoC,cAAgBzoC,KAAKwoC,kBAAkBhoC,OAC5CR,KAAK8/C,QAAU,IAAI7R,OACnBjuC,KAAK+/C,QAAU,IAAU9R,OACzBjuC,KAAKggD,QAAU,WACfhgD,KAAKigD,QAAU,IAAIhS,OACnBjuC,KAAKkgD,OAAS,IAAUjS,MAC5B,EAEEyR,iBAAiBrgD,UAAU8gD,gBAAkB,SAAUL,EAASC,EAASC,EAAS3Q,EAAW7Q,EAAM4hB,GACjG,IAAO9gB,EAAG8gB,GAAO,EAAI,EACjBC,EAAShR,EAAU1tC,EAAEP,EAAE,IAAM,EAAIiuC,EAAU1tC,EAAEP,EAAE,KAAO,EAAIo9B,GACpD8hB,EAAGjR,EAAU1tC,EAAEP,EAAE,IAAM,EAAIiuC,EAAU1tC,EAAEP,EAAE,KAAO,EAAIo9B,GAC9DshB,EAAQ5Q,UAAUG,EAAUjqC,EAAEhE,EAAE,GAAKk+B,EAAMd,EAAM6Q,EAAUjqC,EAAEhE,EAAE,GAAKk+B,EAAMd,EAAM6Q,EAAUjqC,EAAEhE,EAAE,IAC9F2+C,EAAQ7Q,WAAWG,EAAU/nB,EAAElmB,EAAE,IAAKiuC,EAAU/nB,EAAElmB,EAAE,GAAIiuC,EAAU/nB,EAAElmB,EAAE,IACtE2+C,EAAQhN,QAAQ1D,EAAUh+B,EAAEjQ,EAAIk+B,EAAMd,GACtCuhB,EAAQ7Q,UAAUG,EAAU/nB,EAAElmB,EAAE,GAAIiuC,EAAU/nB,EAAElmB,EAAE,GAAIiuC,EAAU/nB,EAAElmB,EAAE,IACpE4+C,EAAQ9Q,WAAWG,EAAU/nB,EAAElmB,EAAE,IAAKiuC,EAAU/nB,EAAElmB,EAAE,GAAIiuC,EAAU/nB,EAAElmB,EAAE,IACtE4+C,EAAQhN,MAAMoN,EAAM,EAAIC,EAASA,EAAQD,EAAM,EAAIE,EAASA,GAC5DN,EAAQ9Q,UAAUG,EAAU/nB,EAAElmB,EAAE,GAAIiuC,EAAU/nB,EAAElmB,EAAE,GAAIiuC,EAAU/nB,EAAElmB,EAAE,GACxE,EAEEs+C,iBAAiBrgD,UAAUk3B,KAAO,SAAUyB,EAAMpa,EAAKsrB,EAAKqX,GAY1D,IAXAvgD,KAAKg4B,KAAOA,EACZh4B,KAAK4d,IAAMA,EACX5d,KAAKkpC,IAAMA,EACXlpC,KAAKugD,UAAYA,EACjBvgD,KAAKwgD,eAAiB,EACtBxgD,KAAKygD,UAAY,GACjBzgD,KAAK0gD,QAAU,GACf1gD,KAAKsnC,SAAW,EAChBtnC,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKw1C,uBAAuBxd,EAAMpa,EAAIsrB,IAE/BA,EAAM,GACXA,GAAO,EAEPlpC,KAAKygD,UAAUp5C,QAAQuW,EAAIsrB,IAGzBlpC,KAAKwoC,kBAAkBhoC,OACzBR,KAAKmL,GAAI,EAETnL,KAAKioC,UAAS,EAEpB,EAEEyX,iBAAiBrgD,UAAUshD,cAAgB,SAAUxoC,GACnD,IAAKtQ,EACE0T,EAAGpD,EAAS3X,OAEnB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBsQ,EAAStQ,GAAG+4C,YAAa,EAEF,OAAnBzoC,EAAStQ,GAAG2d,IACdxlB,KAAK2gD,cAAcxoC,EAAStQ,GAAGse,GAGvC,EAEEu5B,iBAAiBrgD,UAAUwhD,cAAgB,SAAU1oC,GACnD,IAAI2oC,EAAc19C,KAAKK,MAAML,KAAKC,UAAU8U,IAE5C,OADAnY,KAAK2gD,cAAcG,IAEvB,EAEEpB,iBAAiBrgD,UAAU0hD,kBAAoB,SAAU5oC,EAAU6oC,GACjE,IAAKn5C,EACE0T,EAAGpD,EAAS3X,OAEnB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBsQ,EAAStQ,GAAGo5C,QAAUD,EAEC,OAAnB7oC,EAAStQ,GAAG2d,IACdxlB,KAAK+gD,kBAAkB5oC,EAAStQ,GAAGse,GAAI66B,EAG/C,EAEEtB,iBAAiBrgD,UAAUk3C,cAAgB,SAAU9O,GACnD,IAAIyZ,EACAC,IAEG7hB,EACC8hB,EACOC,GAAG,EAElB,GAAIrhD,KAAKonC,MAAQK,EAAe,CAC9B,IAmEcuZ,EAnEJM,EAAG11C,KAAK21C,KAAKvhD,KAAKgJ,EAAE5H,GAE9B,GAAIpB,KAAK0gD,QAAQlgD,OAAS8gD,EAAQ,CAChC,KAAOthD,KAAK0gD,QAAQlgD,OAAS8gD,GAAQ,CACnC,IAASE,EAAG,CACVr7B,GAAInmB,KAAK6gD,cAAc7gD,KAAKygD,WAC5Bj7B,GAAI,MAENg8B,EAAMr7B,GAAGnhB,KAAK,CACZsiB,EAAG,CACDA,EAAG,EACHm6B,GAAI,EACJt2C,EAAG,CAAC,EAAG,IAETqkB,GAAI,YACJnkB,EAAG,CACDic,EAAG,EACHm6B,GAAI,EACJt2C,EAAG,KAEL/F,EAAG,CACDkiB,EAAG,EACHm6B,GAAI,EACJt2C,EAAG,CAAC,EAAG,IAETkG,EAAG,CACDiW,EAAG,EACHm6B,GAAI,EACJt2C,EAAG,CAAC,CACFxJ,EAAG,EACH+B,EAAG,EACH2E,EAAG,GACF,CACD1G,EAAG,EACH+B,EAAG,EACH2E,EAAG,KAGP1G,EAAG,CACD2lB,EAAG,EACHm6B,GAAI,EACJt2C,EAAG,CAAC,IAAK,MAEXqc,GAAI,CACFF,EAAG,EACHm6B,GAAI,EACJt2C,EAAG,GAELoc,GAAI,CACFD,EAAG,EACHm6B,GAAI,EACJt2C,EAAG,GAELqa,GAAI,OAENxlB,KAAK4d,IAAIrV,OAAO,EAAG,EAAGi5C,GAEtBxhD,KAAK0gD,QAAQn4C,OAAO,EAAG,EAAGi5C,GAE1BxhD,KAAKwgD,gBAAkB,CACxB,CAEDxgD,KAAKg4B,KAAK0pB,eACVL,GAAc,CACf,CAKD,IAHAD,EAAO,EAGFv5C,EAAI,EAAGA,GAAK7H,KAAK0gD,QAAQlgD,OAAS,EAAGqH,GAAK,EAAG,CAKhD,GAJAm5C,EAAaI,EAAOE,EACpBthD,KAAK0gD,QAAQ74C,GAAGo5C,QAAUD,EAC1BhhD,KAAK+gD,kBAAkB/gD,KAAK0gD,QAAQ74C,GAAGse,GAAI66B,IAEtCA,EAAY,CACf,IAASW,EAAG3hD,KAAKugD,UAAU14C,GAAGse,KACVw7B,EAAMA,EAAMnhD,OAAS,GAEJ,IAAjCohD,EAAcvS,UAAUloB,GAAG/lB,GAC7BwgD,EAAcvS,UAAUloB,GAAGigB,MAAO,EAClCwa,EAAcvS,UAAUloB,GAAG/lB,EAAI,GAE/BwgD,EAAcvS,UAAUloB,GAAGigB,MAAO,CAErC,CAEDga,GAAQ,CACT,CAEDphD,KAAKwgD,eAAiBc,EAEtB,IAAUh/B,EAAGtiB,KAAKqL,EAAEjK,IACDkhB,EAAS,EACxBu/B,EAAcv/B,EAAS,EAAI1W,KAAKiT,MAAMyD,GAAU1W,KAAK21C,KAAKj/B,GAC1Dw/B,EAAS9hD,KAAK8/C,QAAQt5C,MACtBu7C,EAAS/hD,KAAK+/C,QAAQv5C,MAChBw7C,EAAGhiD,KAAKggD,QAAQx5C,MAC1BxG,KAAK8/C,QAAQtU,QACbxrC,KAAK+/C,QAAQvU,QACbxrC,KAAKggD,QAAQxU,QACbxrC,KAAKigD,QAAQzU,QACbxrC,KAAKkgD,OAAO1U,QACZ,IA2BI1mB,EACAK,EA5BS88B,EAAG,EAEhB,GAAI3/B,EAAS,EAAG,CACd,KAAO2/B,EAAYJ,GACjB7hD,KAAKmgD,gBAAgBngD,KAAK8/C,QAAS9/C,KAAK+/C,QAAS//C,KAAKggD,QAAShgD,KAAK2/C,GAAI,GAAG,GAC3EsC,GAAa,EAGXC,IACFliD,KAAKmgD,gBAAgBngD,KAAK8/C,QAAS9/C,KAAK+/C,QAAS//C,KAAKggD,QAAShgD,KAAK2/C,GAAIuC,GAAc,GACtFD,GAAaC,EAEvB,MAAiB5/B,GAAAA,EAAS,EAAG,CACrB,KAAO2/B,EAAYJ,GACjB7hD,KAAKmgD,gBAAgBngD,KAAK8/C,QAAS9/C,KAAK+/C,QAAS//C,KAAKggD,QAAShgD,KAAK2/C,GAAI,GAAG,GAC3EsC,GAAa,EAGXC,IACFliD,KAAKmgD,gBAAgBngD,KAAK8/C,QAAS9/C,KAAK+/C,QAAS//C,KAAKggD,QAAShgD,KAAK2/C,IAAKuC,GAAc,GACvFD,GAAaC,EAEhB,CAQD,IANAr6C,EAAoB,IAAhB7H,KAAKuQ,KAAKP,EAAU,EAAIhQ,KAAKwgD,eAAiB,EAClDlhB,EAAsB,IAAhBt/B,KAAKuQ,KAAKP,EAAU,GAAK,EAC/BoxC,EAAOphD,KAAKwgD,eAILY,GAAM,CAQX,GALAj8B,GADAg8B,GADAD,EAAQlhD,KAAKugD,UAAU14C,GAAGse,IACH+6B,EAAM1gD,OAAS,GAAG6uC,UAAU8S,OAAO/gD,EAAEoF,OACtChG,OACtB0gD,EAAMA,EAAM1gD,OAAS,GAAG6uC,UAAU8S,OAAO/a,MAAO,EAChD8Z,EAAMA,EAAM1gD,OAAS,GAAG6uC,UAAUloB,GAAGigB,MAAO,EAC5C8Z,EAAMA,EAAM1gD,OAAS,GAAG6uC,UAAUloB,GAAG/lB,EAA4B,IAAxBpB,KAAKwgD,eAAuBxgD,KAAK4/C,GAAGx+C,EAAIpB,KAAK4/C,GAAGx+C,GAAKpB,KAAK6/C,GAAGz+C,EAAIpB,KAAK4/C,GAAGx+C,IAAMyG,GAAK7H,KAAKwgD,eAAiB,IAEjI,IAAdyB,EAAiB,CASnB,KARU,IAANp6C,GAAmB,IAARy3B,GAAaz3B,IAAM7H,KAAKwgD,eAAiB,IAAc,IAATlhB,IAC3Dt/B,KAAKmgD,gBAAgBngD,KAAK8/C,QAAS9/C,KAAK+/C,QAAS//C,KAAKggD,QAAShgD,KAAK2/C,GAAI,GAAG,GAG7E3/C,KAAKkgD,OAAO7Q,UAAU0S,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvM/hD,KAAKkgD,OAAO7Q,UAAU2S,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvMhiD,KAAKkgD,OAAO7Q,UAAUyS,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAElMh9B,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBq8B,EAAer8B,GAAK9kB,KAAKkgD,OAAO15C,MAAMse,GAGxC9kB,KAAKkgD,OAAO1U,OACtB,MAGU,IAFAxrC,KAAKkgD,OAAO1U,QAEP1mB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBq8B,EAAer8B,GAAK9kB,KAAKkgD,OAAO15C,MAAMse,GAI1Cm9B,GAAa,EACbb,GAAQ,EACRv5C,GAAKy3B,CACN,CACP,MAKM,IAJA8hB,EAAOphD,KAAKwgD,eACZ34C,EAAI,EACJy3B,EAAM,EAEC8hB,GAELD,GADAD,EAAQlhD,KAAKugD,UAAU14C,GAAGse,IACH+6B,EAAM1gD,OAAS,GAAG6uC,UAAU8S,OAAO/gD,EAAEoF,MAC5D06C,EAAMA,EAAM1gD,OAAS,GAAG6uC,UAAU8S,OAAO/a,MAAO,EAChD8Z,EAAMA,EAAM1gD,OAAS,GAAG6uC,UAAUloB,GAAGigB,MAAO,EAC5Cga,GAAQ,EACRv5C,GAAKy3B,EAIT,OAAkB+hB,CACtB,EAEE3B,iBAAiBrgD,UAAUgrC,SAAW,WAAY,EAIlDlvB,gBAAgB,CAACk6B,eAAgB8D,sBAEjCA,qBAAqB95C,UAAUm2C,uBAAyB,SAAUxd,EAAMznB,GACtEvQ,KAAKioC,SAAWjoC,KAAK21C,YACrB31C,KAAKoiD,GAAKngB,gBAAgBqG,QAAQtQ,EAAMznB,EAAKc,EAAG,EAAG,KAAMrR,MACzDA,KAAKyoC,cAAgBzoC,KAAKoiD,GAAG7a,gBAAgB/mC,MACjD,EAEE24C,qBAAqB95C,UAAUo4C,YAAc,SAAU1zB,EAAMjE,GAC3D,IAEIjY,EAFA+vC,EAAa7N,UAAUpN,aAC3Bib,EAAW5uC,EAAI+a,EAAK/a,EAEpB,IACIq5C,EACAC,IAEOC,EACCC,EACRC,EAEArZ,EACEC,EACFC,EACAC,IAEEE,EAbFluB,EAAMwI,EAAKyY,QAOXvsB,EAAQ,EAQZ,IAAKpI,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBw6C,EAAWt+B,EAAK3iB,EAAEyG,GAClB66C,EAAW3+B,EAAK1Y,EAAExD,GAClBy6C,EAAWv+B,EAAKlc,EAAEA,GAEdw6C,EAAS,KAAOK,EAAS,IAAML,EAAS,KAAOK,EAAS,IAAML,EAAS,KAAOC,EAAS,IAAMD,EAAS,KAAOC,EAAS,GAC7G,IAANz6C,GAAWA,IAAM0T,EAAM,GAAOwI,EAAK/a,GASpCu5C,EADQ,IAAN16C,EACQkc,EAAK3iB,EAAEma,EAAM,GAEbwI,EAAK3iB,EAAEyG,EAAI,GAIvB46C,GADAD,EAAW52C,KAAK+S,KAAK/S,KAAK6S,IAAI4jC,EAAS,GAAKE,EAAQ,GAAI,GAAK32C,KAAK6S,IAAI4jC,EAAS,GAAKE,EAAQ,GAAI,KACxE32C,KAAKqT,IAAIujC,EAAW,EAAG1iC,GAAS0iC,EAAW,EAEnEpZ,EADAI,EAAK6Y,EAAS,IAAME,EAAQ,GAAKF,EAAS,IAAMI,EAGhDpZ,EADAI,EAAK4Y,EAAS,IAAMA,EAAS,GAAKE,EAAQ,IAAME,EAEhDnZ,EAAKF,GAAMA,EAAKiZ,EAAS,IAAM1iC,YAC/B4pB,EAAKF,GAAMA,EAAKgZ,EAAS,IAAM1iC,YAC/Bi4B,EAAWzO,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIx5B,GAC/CA,GAAS,EAGPsyC,EADE16C,IAAM0T,EAAM,EACJwI,EAAK3iB,EAAE,GAEP2iB,EAAK3iB,EAAEyG,EAAI,GAIvB46C,GADAD,EAAW52C,KAAK+S,KAAK/S,KAAK6S,IAAI4jC,EAAS,GAAKE,EAAQ,GAAI,GAAK32C,KAAK6S,IAAI4jC,EAAS,GAAKE,EAAQ,GAAI,KACxE32C,KAAKqT,IAAIujC,EAAW,EAAG1iC,GAAS0iC,EAAW,EAEnEpZ,EADAE,EAAK+Y,EAAS,IAAME,EAAQ,GAAKF,EAAS,IAAMI,EAGhDpZ,EADAE,EAAK8Y,EAAS,IAAME,EAAQ,GAAKF,EAAS,IAAMI,EAEhDjZ,EAAKJ,GAAMA,EAAKiZ,EAAS,IAAM1iC,YAC/B8pB,EAAKJ,GAAMA,EAAKgZ,EAAS,IAAM1iC,YAC/Bi4B,EAAWzO,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIx5B,GAC/CA,GAAS,IAvCT2nC,EAAWzO,YAAYkZ,EAAS,GAAIA,EAAS,GAAIK,EAAS,GAAIA,EAAS,GAAIJ,EAAS,GAAIA,EAAS,GAAIryC,GAKrGA,GAAS,IAqCX2nC,EAAWzO,YAAYplB,EAAK3iB,EAAEyG,GAAG,GAAIkc,EAAK3iB,EAAEyG,GAAG,GAAIkc,EAAK1Y,EAAExD,GAAG,GAAIkc,EAAK1Y,EAAExD,GAAG,GAAIkc,EAAKlc,EAAEA,GAAG,GAAIkc,EAAKlc,EAAEA,GAAG,GAAIoI,GAC3GA,GAAS,GAIb,OAAO2nC,CACX,EAEEuB,qBAAqB95C,UAAUk3C,cAAgB,SAAU9O,GACvD,IAAc+O,EACT3uC,EAEDid,MAMsBqmB,EAPnB5vB,EAAGvb,KAAK4lB,OAAOplB,SAGbR,KAAKoiD,GAAGhhD,EAEjB,GAAW,IAAPghD,EAIF,IAAKv6C,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAI3B,GAFAsjC,GADA3L,EAAYx/B,KAAK4lB,OAAO/d,IACSsjC,qBAE1B3L,EAAU0K,MAAM9C,MAASpnC,KAAKonC,MAASK,EAM5C,IALA0D,EAAqBb,gBACrB9K,EAAU0K,MAAM9C,MAAO,EACvBoP,EAAahX,EAAU0K,MAAMgB,MAAMtlB,OACnCT,EAAOqa,EAAU0K,MAAMgB,MAAM1O,QAExB1X,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBqmB,EAAqBd,SAASrqC,KAAKy3C,YAAYjB,EAAW1xB,GAAIs9B,IAIlE5iB,EAAU0K,MAAMgB,MAAQ1L,EAAU2L,oBACnC,CAGEnrC,KAAKwoC,kBAAkBhoC,SAC1BR,KAAKonC,MAAO,EAElB,EA0DEyS,iBAAiBx6C,UAAUg/B,MAAQ,SAAUh2B,GAC3C,MAAO,GAAGrI,KAAKsnB,EAAE,GAAKjf,EAAIrI,KAAKgiB,EAAE,IAAM3Z,EAAIrI,KAAKgJ,EAAE,IAAMX,EAAIrI,KAAKiM,EAAE,KAAMjM,KAAKsnB,EAAE,GAAKjf,EAAIrI,KAAKgiB,EAAE,IAAM3Z,EAAIrI,KAAKgJ,EAAE,IAAMX,EAAIrI,KAAKiM,EAAE,GACtI,EAEE4tC,iBAAiBx6C,UAAUsjD,WAAa,SAAUt6C,GAChD,MAAO,EAAE,EAAIA,EAAIrI,KAAKsnB,EAAE,GAAK,EAAItnB,KAAKgiB,EAAE,IAAM3Z,EAAIrI,KAAKgJ,EAAE,IAAK,EAAIX,EAAIrI,KAAKsnB,EAAE,GAAK,EAAItnB,KAAKgiB,EAAE,IAAM3Z,EAAIrI,KAAKgJ,EAAE,GAClH,EAEE6wC,iBAAiBx6C,UAAU++C,aAAe,SAAU/1C,GAClD,IAAIjD,EAAIpF,KAAK2iD,WAAWt6C,GACxB,OAAWuD,KAACu6B,MAAM/gC,EAAE,GAAIA,EAAE,GAC9B,EAEEy0C,iBAAiBx6C,UAAUi+C,YAAc,SAAUj1C,GACjD,IAAIjD,EAAIpF,KAAK2iD,WAAWt6C,GACxB,OAAOuD,KAAKu6B,MAAM/gC,EAAE,GAAIA,EAAE,GAC9B,EAEEy0C,iBAAiBx6C,UAAU6/C,iBAAmB,WAC5C,IAAI0D,EAAQ5iD,KAAKsnB,EAAE,GAAKtnB,KAAKgiB,EAAE,GAAKhiB,KAAKsnB,EAAE,GAAKtnB,KAAKgiB,EAAE,GACvD,GAAIq3B,UAAUuJ,GAAQ,MAAO,GAC7B,IAASC,GAAI,IAAO7iD,KAAKsnB,EAAE,GAAKtnB,KAAKgJ,EAAE,GAAKhJ,KAAKsnB,EAAE,GAAKtnB,KAAKgJ,EAAE,IAAM45C,EAC3DE,EAAGD,EAAQA,EAAQ,EAAI,GAAK7iD,KAAKgiB,EAAE,GAAKhiB,KAAKgJ,EAAE,GAAKhJ,KAAKgiB,EAAE,GAAKhiB,KAAKgJ,EAAE,IAAM45C,EACvF,GAAIE,EAAS,EAAG,MAAO,GACvB,IAAIC,EAAOn3C,KAAK+S,KAAKmkC,GAErB,OAAIzJ,UAAU0J,GACRA,EAAO,GAAKA,EAAO,EAAU,CAACF,GAC3B,GAGF,CAACA,EAAQE,EAAMF,EAAQE,GAAMjpC,QAAO,SAAUzI,GACnD,OAAOA,EAAI,GAAKA,EAAI,CAC1B,GACA,EAEEwoC,iBAAiBx6C,UAAU0Q,MAAQ,SAAU1H,GAC3C,GAAIA,GAAK,EAAG,MAAO,CAACuxC,YAAY55C,KAAKu6B,OAAO,IAAKv6B,MACjD,GAAIqI,GAAK,EAAG,MAAO,CAACrI,KAAM45C,YAAY55C,KAAKu6B,OAAOv6B,KAAKu6B,OAAO/5B,OAAS,KACvE,IAAOwiD,EAAGzJ,UAAUv5C,KAAKu6B,OAAO,GAAIv6B,KAAKu6B,OAAO,GAAIlyB,GAChD46C,EAAM1J,UAAUv5C,KAAKu6B,OAAO,GAAIv6B,KAAKu6B,OAAO,GAAIlyB,GAChDmqC,EAAM+G,UAAUv5C,KAAKu6B,OAAO,GAAIv6B,KAAKu6B,OAAO,GAAIlyB,GAC7C66C,EAAG3J,UAAUyJ,EAAKC,EAAK56C,GACvB86C,EAAG5J,UAAU0J,EAAKzQ,EAAKnqC,GAC1BsxC,EAAKJ,UAAU2J,EAAKC,EAAK96C,GAC7B,MAAO,CAAC,IAAoBwxC,iBAAC75C,KAAKu6B,OAAO,GAAIyoB,EAAKE,EAAKvJ,GAAI,GAAO,IAAoBE,iBAACF,EAAIwJ,EAAK3Q,EAAKxyC,KAAKu6B,OAAO,IAAI,GACzH,EA4BEsf,iBAAiBx6C,UAAU+jD,OAAS,WAClC,MAAO,CACLzoB,EAAGuf,QAAQl6C,KAAM,GACjBkkC,EAAGgW,QAAQl6C,KAAM,GAEvB,EAEE65C,iBAAiBx6C,UAAUk7C,YAAc,WACvC,MAAav6C,KAAKojD,SAClB,MAAO,CACLljC,KAAMkjC,EAAOzoB,EAAE1b,IACfkgC,MAAOiE,EAAOzoB,EAAE5b,IAChBkB,IAAKmjC,EAAOlf,EAAEjlB,IACdokC,OAAQD,EAAOlf,EAAEnlB,IACjB+L,MAAOs4B,EAAOzoB,EAAE5b,IAAMqkC,EAAOzoB,EAAE1b,IAC/B8L,OAAQq4B,EAAOlf,EAAEnlB,IAAMqkC,EAAOlf,EAAEjlB,IAChCu7B,IAAK4I,EAAOzoB,EAAE5b,IAAMqkC,EAAOzoB,EAAE1b,KAAO,EACpCw7B,IAAK2I,EAAOlf,EAAEnlB,IAAMqkC,EAAOlf,EAAEjlB,KAAO,EAE1C,EAyCE46B,iBAAiBx6C,UAAUy7C,cAAgB,SAAUwI,EAAOzI,EAAWE,QACnDx6C,IAAds6C,IAAyBA,EAAY,QACpBt6C,IAAjBw6C,IAA4BA,EAAe,GAC/C,IAAID,EAAgB,GAEpB,OADAH,eAAeP,cAAcp6C,KAAM,EAAG,GAAIo6C,cAAckJ,EAAO,EAAG,GAAI,EAAGzI,EAAWC,EAAeC,GAC5FD,CACX,EAEEjB,iBAAiBxC,aAAe,SAAUrN,EAAW/5B,GACnD,IAAa0sC,GAAI1sC,EAAQ,GAAK+5B,EAAUxpC,SACxC,WAA2Bq5C,iBAAC7P,EAAU5oC,EAAE6O,GAAQ+5B,EAAU3+B,EAAE4E,GAAQ+5B,EAAUniC,EAAE80C,GAAY3S,EAAU5oC,EAAEu7C,IAAY,EACxH,EAEE9C,iBAAiB0J,qBAAuB,SAAUvZ,EAAW/5B,GAC3D,OAAiBA,EAAQ,GAAK+5B,EAAUxpC,SACxC,WAA2Bq5C,iBAAC7P,EAAU5oC,EAAEu7C,GAAY3S,EAAUniC,EAAE80C,GAAY3S,EAAU3+B,EAAE4E,GAAQ+5B,EAAU5oC,EAAE6O,IAAQ,EACxH,EA8BEkL,gBAAgB,CAACk6B,eAAgBwG,gBAEjCA,eAAex8C,UAAUm2C,uBAAyB,SAAUxd,EAAMznB,GAChEvQ,KAAKioC,SAAWjoC,KAAK21C,YACrB31C,KAAKg8C,UAAY/Z,gBAAgBqG,QAAQtQ,EAAMznB,EAAK5O,EAAG,EAAG,KAAM3B,MAChEA,KAAK88C,UAAY7a,gBAAgBqG,QAAQtQ,EAAMznB,EAAKc,EAAG,EAAG,KAAMrR,MAChEA,KAAKwjD,WAAavhB,gBAAgBqG,QAAQtQ,EAAMznB,EAAK8U,GAAI,EAAG,KAAMrlB,MAClEA,KAAKyoC,YAAwD,IAA1CzoC,KAAKg8C,UAAUzU,gBAAgB/mC,QAA0D,IAA1CR,KAAK88C,UAAUvV,gBAAgB/mC,QAA2D,IAA3CR,KAAKwjD,WAAWjc,gBAAgB/mC,MACrJ,EAiDEq7C,eAAex8C,UAAUo4C,YAAc,SAAU1zB,EAAMi4B,EAAWc,EAAWC,GAC3E,IAAI0G,EAAQ1/B,EAAKyY,QACHob,EAAG7N,UAAUpN,aAO3B,GANAib,EAAW5uC,EAAI+a,EAAK/a,EAEf+a,EAAK/a,IACRy6C,GAAS,GAGG,IAAVA,EAAa,OAAO7L,EACxB,OAAiB,EACNlkB,EAAGmmB,iBAAiBxC,aAAatzB,EAAM,GAClD84B,aAAajF,EAAY7zB,EAAM,EAAGi4B,EAAWc,EAAWC,EAAWh8B,GAEnE,IAAK,IAAIlZ,EAAI,EAAGA,EAAI47C,EAAO57C,GAAK,EAC9BkZ,EAAYq8B,cAAcxF,EAAYlkB,EAASsoB,EAAWc,EAAWC,GAAYh8B,GAK/E2S,EAHE7rB,IAAM47C,EAAQ,GAAM1/B,EAAK/a,EAGjB6wC,iBAAiBxC,aAAatzB,GAAOlc,EAAI,GAAK47C,GAF9C,KAKZ5G,aAAajF,EAAY7zB,EAAMlc,EAAI,EAAGm0C,EAAWc,EAAWC,EAAWh8B,GAGzE,OAAiB62B,CACrB,EAEEiE,eAAex8C,UAAUk3C,cAAgB,SAAU9O,GACjD,IAAI+O,IAGA1xB,EACAK,IAOsBgmB,EATnB5vB,EAAGvb,KAAK4lB,OAAOplB,OAGlBw7C,EAAYh8C,KAAKg8C,UAAU56C,EAClB07C,EAAGlxC,KAAKmT,IAAI,EAAGnT,KAAKkU,MAAM9f,KAAK88C,UAAU17C,IACzC27C,EAAG/8C,KAAKwjD,WAAWpiD,EAEhC,GAAkB,IAAd46C,EAIF,IAAKn0C,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAI3B,GAFAsjC,GADA3L,EAAYx/B,KAAK4lB,OAAO/d,IACSsjC,qBAE1B3L,EAAU0K,MAAM9C,MAASpnC,KAAKonC,MAASK,EAM5C,IALA0D,EAAqBb,gBACrB9K,EAAU0K,MAAM9C,MAAO,EACvBoP,EAAahX,EAAU0K,MAAMgB,MAAMtlB,OACnCT,EAAOqa,EAAU0K,MAAMgB,MAAM1O,QAExB1X,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBqmB,EAAqBd,SAASrqC,KAAKy3C,YAAYjB,EAAW1xB,GAAIk3B,EAAWc,EAAWC,IAIxFvd,EAAU0K,MAAMgB,MAAQ1L,EAAU2L,oBACnC,CAGEnrC,KAAKwoC,kBAAkBhoC,SAC1BR,KAAKonC,MAAO,EAElB,EAiJEjsB,gBAAgB,CAACk6B,eAAgB+J,oBAEjCA,mBAAmB//C,UAAUm2C,uBAAyB,SAAUxd,EAAMznB,GACpEvQ,KAAKioC,SAAWjoC,KAAK21C,YACrB31C,KAAKw3C,OAASvV,gBAAgBqG,QAAQtQ,EAAMznB,EAAK+W,EAAG,EAAG,KAAMtnB,MAC7DA,KAAKk+C,WAAajc,gBAAgBqG,QAAQtQ,EAAMznB,EAAKmzC,GAAI,EAAG,KAAM1jD,MAClEA,KAAKi+C,SAAW1tC,EAAKozC,GACrB3jD,KAAKyoC,YAAqD,IAAvCzoC,KAAKw3C,OAAOjQ,gBAAgB/mC,MACnD,EAEE4+C,mBAAmB//C,UAAUo4C,YAAc,SAAUmM,EAAapM,EAAQyG,EAAUC,GAClF,MAAmBnU,UAAUpN,aAC7Bof,EAAa/yC,EAAI46C,EAAY56C,EAC7B,MAOK8b,EACD4O,EARA+vB,EAAQG,EAAYpjD,SAEnBojD,EAAY56C,IACfy6C,GAAS,GAMX,IAAII,EAAgB,GAEpB,IAAKh8C,EAAI,EAAGA,EAAI47C,EAAO57C,GAAK,EAC1B6rB,EAAUmmB,iBAAiBxC,aAAauM,EAAa/7C,GACrDg8C,EAAc7+C,KAAK+5C,mBAAmBrrB,EAAS8jB,IAGjD,IAAKoM,EAAY56C,EACf,IAAKnB,EAAI47C,EAAQ,EAAG57C,GAAK,EAAGA,GAAK,EAC/B6rB,EAAUmmB,iBAAiB0J,qBAAqBK,EAAa/7C,GAC7Dg8C,EAAc7+C,KAAK+5C,mBAAmBrrB,EAAS8jB,IAInDqM,EAAgB/E,mBAAmB+E,GAEnC,MAAgB,KACZC,EAAU,KAEd,IAAKj8C,EAAI,EAAGA,EAAIg8C,EAAcrjD,OAAQqH,GAAK,EAAG,CAC5C,IAAgBk8C,EAAGF,EAAch8C,GAIjC,IAHIi8C,IAASxlB,EAAYwf,UAAU/B,EAAc+H,EAASC,EAAa,GAAI9F,EAAUC,IACrF4F,EAAUC,EAAaA,EAAavjD,OAAS,GAExCskB,EAAI,EAAGA,EAAIi/B,EAAavjD,OAAQskB,GAAK,EACxC4O,EAAUqwB,EAAaj/B,GAEnBwZ,GAAayb,WAAWrmB,EAAQ6G,OAAO,GAAI+D,GAC7Cyd,EAAa9S,QAAQvV,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI,IAAKwhB,EAAav7C,SAAW,GAE9Fu7C,EAAa5S,YAAYzV,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAIwhB,EAAav7C,UAG5Ku7C,EAAa5S,YAAYzV,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAI7G,EAAQ6G,OAAO,GAAG,GAAIwhB,EAAav7C,UAC1K89B,EAAY5K,EAAQ6G,OAAO,EAE9B,CAGD,OADIspB,EAAcrjD,QAAQs9C,UAAU/B,EAAc+H,EAASD,EAAc,GAAG,GAAI5F,EAAUC,GACvEnC,CACvB,EAEEqD,mBAAmB//C,UAAUk3C,cAAgB,SAAU9O,GACrD,IAAc+O,EACT3uC,EAEDid,EACAK,MAFA5J,EAAMvb,KAAK4lB,OAAOplB,OAGlBg3C,EAASx3C,KAAKw3C,OAAOp2C,IACRpB,KAAKk+C,WAAW98C,EACrB68C,EAAGj+C,KAAKi+C,SAEpB,GAAe,IAAXzG,EAIF,IAAK3vC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAI3B,GAFAsjC,GADA3L,EAAYx/B,KAAK4lB,OAAO/d,IACSsjC,qBAE1B3L,EAAU0K,MAAM9C,MAASpnC,KAAKonC,MAASK,EAM5C,IALA0D,EAAqBb,gBACrB9K,EAAU0K,MAAM9C,MAAO,EACvBoP,EAAahX,EAAU0K,MAAMgB,MAAMtlB,OACnCT,EAAOqa,EAAU0K,MAAMgB,MAAM1O,QAExB1X,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBqmB,EAAqBd,SAASrqC,KAAKy3C,YAAYjB,EAAW1xB,GAAI0yB,EAAQyG,EAAUC,IAIpF1e,EAAU0K,MAAMgB,MAAQ1L,EAAU2L,oBACnC,CAGEnrC,KAAKwoC,kBAAkBhoC,SAC1BR,KAAKonC,MAAO,EAElB,EAkDE,IAAe4c,YAAG,WAChB,IACIC,EAAY,CACdC,EAAG,EACHC,KAAM,EACNv+B,OAAQ,GACRrV,KAAM,CACJqV,OAAQ,KAGUw+B,EAAG,GAEzBA,EAAqBA,EAAmBvrB,OAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAChP,MAAyB,CAAC,WAAY,WAAY,WAAY,WAAY,cACpD,CAAC,MAAO,MAiB9B,WAAmBwrB,EAAMC,GACvB,IAAIryC,EAAa4Y,UAAU,QAE3B5Y,EAAW/P,aAAa,eAAe,GACvC+P,EAAWpQ,MAAM0iD,WAAaD,EAC9B,IAAI71C,EAAOoc,UAAU,QAErBpc,EAAKyqB,UAAY,iBAEjBjnB,EAAWpQ,MAAMme,SAAW,WAC5B/N,EAAWpQ,MAAMqe,KAAO,WACxBjO,EAAWpQ,MAAMoe,IAAM,WAEvBhO,EAAWpQ,MAAM2iD,SAAW,QAE5BvyC,EAAWpQ,MAAM4iD,YAAc,SAC/BxyC,EAAWpQ,MAAM6iD,UAAY,SAC7BzyC,EAAWpQ,MAAM8iD,WAAa,SAC9B1yC,EAAWpQ,MAAM+iD,cAAgB,IACjC3yC,EAAW7P,YAAYqM,GACvB3M,SAASk3B,KAAK52B,YAAY6P,GAE1B,IAAI6Y,EAAQrc,EAAKo2C,YAEjB,OADAp2C,EAAK5M,MAAM0iD,WAtCb,SAAyBF,GACvB,MAAIS,EAAcT,EAAKt0C,MAAM,KAEtBwL,EAAGupC,EAAYtkD,SACA,GAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACD,eAAnBi9C,EAAYj9C,IAA0C,cAAnBi9C,EAAYj9C,IACjDk9C,EAAgB//C,KAAK8/C,EAAYj9C,IAIrC,SAAuB0hB,KAAK,IAC7B,CAyByBy7B,CAAgBX,GAAQ,KAAOC,EAChD,CACL71C,KAAMA,EACNy1C,EAAGp5B,EACHja,OAAQoB,EAEX,CA6CD,SAASgzC,EAAa3F,EAAU4F,GAC9B,MAAIC,EAASrjD,SAASk3B,MAAQksB,EAAM,MAAQ,SAE/BE,EAAG/F,kBAAkBC,GAElC,GAAe,QAAX6F,EAAkB,CACpB,IAAIE,EAAU9hC,SAAS,QACvB8hC,EAAQxjD,MAAM2iD,SAAW,QAEzBa,EAAQnjD,aAAa,cAAeo9C,EAASgG,SAC7CD,EAAQnjD,aAAa,aAAckjD,EAAUvjD,OAC7CwjD,EAAQnjD,aAAa,cAAekjD,EAAU3F,QAC9C4F,EAAQljD,YAAc,IAElBm9C,EAASiG,QACXF,EAAQxjD,MAAM0iD,WAAa,UAC3Bc,EAAQnjD,aAAa,QAASo9C,EAASiG,SAEvCF,EAAQxjD,MAAM0iD,WAAajF,EAASgG,QAGtCJ,EAAI9iD,YAAYijD,GAChBG,EAASH,CACjB,KAAa,CACL,IAAII,EAAgB,IAAmBC,gBAAC,IAAK,KAAKz6B,WAAW,MAC7Dw6B,EAAcpB,KAAOe,EAAUvjD,MAAQ,IAAMujD,EAAU3F,OAAS,UAAYH,EAASgG,QACrFE,EAASC,CACV,CAWD,MAAO,CACLE,YAVF,SAAiBC,GACf,MAAe,QAAXT,GACFK,EAAOrjD,YAAcyjD,EACRJ,EAACK,yBAGHL,EAACG,YAAYC,GAAM96B,KACjC,EAKF,CA4ND,IAAQg7B,EAAG,WACT9lD,KAAKozB,MAAQ,GACbpzB,KAAKgnB,MAAQ,KACbhnB,KAAK+lD,cAAgB,EACrB/lD,KAAKmwB,UAAW,EAChBnwB,KAAKgmD,SAAU,EACfhmD,KAAKq4B,SAAW4tB,KAAKC,MACrBlmD,KAAKmmD,kBAAoBnmD,KAAKomD,YAAY75B,KAAKvsB,MAC/CA,KAAKqmD,uBAAyBrmD,KAAKsmD,iBAAiB/5B,KAAKvsB,KAC/D,EAEI8lD,EAAKS,WAhCL,SAAoBC,EAAeC,GACjC,IAAIC,EAAMF,EAAc5lD,SAAS,IAAM6lD,EAAe7lD,SAAS,IAC/D,OAA4C,IAArC+lD,EAAmBn+C,QAAQk+C,EACnC,EA8BDZ,EAAKc,kBA5BL,SAA2BJ,EAAeC,GACxC,OAAKA,EAIeD,IAAKK,EAAgB,IAAMJ,IAAmBI,EAAgB,GAH5DL,IAAKK,EAAgB,EAI5C,EAuBDf,EAAKgB,oBArBL,SAA6BC,GAC3B,OAA+C,IAAtB3C,EAAC57C,QAAQu+C,EACnC,EAoBD,IAAIC,EAAgB,CAClB1zB,SA9HF,SAAkBtM,GAChB,GAAKA,EAAL,CAQA,IAAInf,EAJC7H,KAAKgnB,QACRhnB,KAAKgnB,MAAQ,IAIf,IACKlC,EAEDmiC,EAHG1rC,EAAGyL,EAAMxmB,OAEZ2kB,EAAOnlB,KAAKgnB,MAAMxmB,OAGtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAI3B,IAHAid,EAAI,EACJmiC,GAAQ,EAEDniC,EAAIK,GACLnlB,KAAKgnB,MAAMlC,GAAGjjB,QAAUmlB,EAAMnf,GAAGhG,OAAS7B,KAAKgnB,MAAMlC,GAAGwgC,UAAYt+B,EAAMnf,GAAGy9C,SAAWtlD,KAAKgnB,MAAMlC,GAAGoiC,KAAOlgC,EAAMnf,GAAGq/C,KACxHD,GAAQ,GAGVniC,GAAK,EAGFmiC,IACHjnD,KAAKgnB,MAAMhiB,KAAKgiB,EAAMnf,IACtBsd,GAAQ,EAEX,CA5BA,CA6BF,EA+FCoO,SA1OF,SAAkB+rB,EAAUltB,GAC1B,GAAKktB,EAAL,CAKA,GAAIt/C,KAAKgnB,MAGP,OAFAhnB,KAAKmwB,UAAW,OAChBnwB,KAAKozB,MAAQksB,EAAS6H,MAIxB,IAAKrlD,SAASk3B,KAOZ,OANAh5B,KAAKmwB,UAAW,EAChBmvB,EAAS6H,KAAKvlD,SAAQ,SAAU2O,GAC9BA,EAAKi1C,OAASP,EAAa10C,GAC3BA,EAAK2I,MAAQ,CAAE,CACzB,SACQlZ,KAAKozB,MAAQksB,EAAS6H,MAIxB,IACIt/C,IADUy3C,EAAS6H,OAEbC,EAAQ5mD,OACd6mD,EAAgB9rC,EAEpB,IAAK1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAC3B,IACIy/C,IADAC,GAAiB,EAOrB,GAJAH,EAAQv/C,GAAG2/C,QAAS,EACpBJ,EAAQv/C,GAAG4/C,SAAWC,EAAUN,EAAQv/C,GAAGy9C,QAAS,aACpD8B,EAAQv/C,GAAG8/C,SAAWD,EAAUN,EAAQv/C,GAAGy9C,QAAS,cAE/C8B,EAAQv/C,GAAG+/C,OAGLR,GAAuB,MAAvBA,EAAQv/C,GAAGggD,SAAyC,IAAtBT,EAAQv/C,GAAGwiB,QAOlD,IANAi9B,EAAiBxlD,SAASwX,iBAAiB,kCAAoC8tC,EAAQv/C,GAAGy9C,QAAU,qCAAuC8B,EAAQv/C,GAAGy9C,QAAU,OAE7I9kD,OAAS,IAC1B+mD,GAAiB,GAGfA,EAAgB,CAClB,MAAQ18B,UAAU,SAClBlpB,EAAEO,aAAa,YAAaklD,EAAQv/C,GAAGggD,SACvClmD,EAAEO,aAAa,WAAYklD,EAAQv/C,GAAGwiB,QACtC1oB,EAAEO,aAAa,WAAYklD,EAAQv/C,GAAGy9C,SACtC3jD,EAAEqB,KAAO,WACTrB,EAAEu3B,UAAY,4BAA8BkuB,EAAQv/C,GAAGy9C,QAAU,mCAAqC8B,EAAQv/C,GAAG+/C,MAAQ,OACzHx1B,EAAKhwB,YAAYT,EAClB,OACQylD,GAAuB,MAAvBA,EAAQv/C,GAAGggD,SAAyC,IAAtBT,EAAQv/C,GAAGwiB,OAAc,CAGhE,IAFAi9B,EAAiBxlD,SAASwX,iBAAiB,2CAEtCwL,EAAI,EAAGA,EAAIwiC,EAAe9mD,OAAQskB,GAAK,GACgB,IAAtDwiC,EAAexiC,GAAGwuB,KAAK9qC,QAAQ4+C,EAAQv/C,GAAG+/C,SAE5CL,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAI35C,EAAIid,UAAU,QAClBjd,EAAE1L,aAAa,YAAaklD,EAAQv/C,GAAGggD,SACvCj6C,EAAE1L,aAAa,WAAYklD,EAAQv/C,GAAGwiB,QACtCzc,EAAE5K,KAAO,WACT4K,EAAEk6C,IAAM,aACRl6C,EAAE0lC,KAAO8T,EAAQv/C,GAAG+/C,MACpB9lD,SAASk3B,KAAK52B,YAAYwL,EAC3B,CACX,MAAe,GAA2B,MAAvBw5C,EAAQv/C,GAAGggD,SAAyC,IAAtBT,EAAQv/C,GAAGwiB,OAAc,CAGhE,IAFAi9B,EAAiBxlD,SAASwX,iBAAiB,+CAEtCwL,EAAI,EAAGA,EAAIwiC,EAAe9mD,OAAQskB,GAAK,EACtCsiC,EAAQv/C,GAAG+/C,QAAUN,EAAexiC,GAAGjI,MAEzC0qC,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAMQ,EAAGl9B,UAAU,QACnBk9B,EAAG7lD,aAAa,YAAaklD,EAAQv/C,GAAGggD,SACxCE,EAAG7lD,aAAa,WAAYklD,EAAQv/C,GAAGwiB,QACvC09B,EAAG7lD,aAAa,MAAO,cACvB6lD,EAAG7lD,aAAa,OAAQklD,EAAQv/C,GAAG+/C,OACnCx1B,EAAKhwB,YAAY2lD,EAClB,CACF,OAvDCX,EAAQv/C,GAAG2/C,QAAS,EACpBH,GAAiB,EAwDnBD,EAAQv/C,GAAG29C,OAASP,EAAamC,EAAQv/C,GAAIuqB,GAC7Cg1B,EAAQv/C,GAAGqR,MAAQ,CAAE,EACrBlZ,KAAKozB,MAAMpuB,KAAKoiD,EAAQv/C,GACzB,CAEqB,IAAlBw/C,EACFrnD,KAAKmwB,UAAW,EAIhBqE,WAAWx0B,KAAKsmD,iBAAiB/5B,KAAKvsB,MAAO,IAnG9C,MAFCA,KAAKmwB,UAAW,CAuGnB,EAkIC63B,YA9FF,SAAqBC,EAAOpmD,EAAOwiD,GAIjC,IAHA,MAAQ,EACD9oC,EAAGvb,KAAKgnB,MAAMxmB,OAEdqH,EAAI0T,GAAK,CACd,GAAIvb,KAAKgnB,MAAMnf,GAAGq/C,KAAOe,GAASjoD,KAAKgnB,MAAMnf,GAAGhG,QAAUA,GAAS7B,KAAKgnB,MAAMnf,GAAGy9C,UAAYjB,EAC3F,OAAWrkD,KAACgnB,MAAMnf,GAGpBA,GAAK,CACN,CAQD,OANsB,iBAAVogD,GAA8C,KAAxBA,EAAMC,WAAW,KAAcD,IAAUE,SAAWA,QAAQC,OAC1FpoD,KAAKgmD,UACPhmD,KAAKgmD,SAAU,EACfmC,QAAQC,KAAK,oDAAqDH,EAAOpmD,EAAOwiD,IAGlEJ,CACjB,EA4ECoE,cAtDF,SAAuB7iD,GAIrB,IAHA,IAAIqC,EAAI,IACE7H,KAAKozB,MAAM5yB,OAEdqH,EAAI0T,GAAK,CACd,GAAIvb,KAAKozB,MAAMvrB,GAAGygD,QAAU9iD,EAC1B,OAAOxF,KAAKozB,MAAMvrB,GAGpBA,GAAK,CACN,CAED,OAAO7H,KAAKozB,MAAM,EACnB,EA0CCuyB,YA3EF,SAAqB4C,EAAQC,EAAUrE,GACrC,IAAY7E,EAAGt/C,KAAKqoD,cAAcG,GAE9Bv4C,EAAQs4C,EAAOL,WAAW,GAE9B,IAAK5I,EAASpmC,MAAMjJ,EAAQ,GAAI,CAC9B,IAAWo1C,EAAG/F,EAASkG,OAEvB,GAAe,MAAX+C,EAAgB,CAClB,IAAcE,EAAGpD,EAAQM,YAAY,IAAM4C,EAAS,KACtCG,EAAGrD,EAAQM,YAAY,MACrCrG,EAASpmC,MAAMjJ,EAAQ,IAAMw4C,EAAaC,GAAc,GAClE,MACUpJ,EAASpmC,MAAMjJ,EAAQ,GAAKo1C,EAAQM,YAAY4C,GAAU,GAE7D,CAED,OAAOjJ,EAASpmC,MAAMjJ,EAAQ,GAAKk0C,CACpC,EA0DCmC,iBApUF,WACE,IAAKz+C,MACD0T,EAAMvb,KAAKozB,MAAM5yB,SAGH+a,EAElB,IAAK1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB7H,KAAKozB,MAAMvrB,GAAG2/C,OAChBmB,GAAe,EACoB,MAA1B3oD,KAAKozB,MAAMvrB,GAAGggD,SAA4C,IAAzB7nD,KAAKozB,MAAMvrB,GAAGwiB,OACxDrqB,KAAKozB,MAAMvrB,GAAG2/C,QAAS,GAEvB/4C,EAAOzO,KAAKozB,MAAMvrB,GAAG4/C,SAASh5C,KAC9By1C,EAAIlkD,KAAKozB,MAAMvrB,GAAG4/C,SAASvD,EAEvBz1C,EAAKo2C,cAAgBX,GACvByE,GAAe,EACf3oD,KAAKozB,MAAMvrB,GAAG2/C,QAAS,IAEvB/4C,EAAOzO,KAAKozB,MAAMvrB,GAAG8/C,SAASl5C,KAC9By1C,EAAIlkD,KAAKozB,MAAMvrB,GAAG8/C,SAASzD,EAEvBz1C,EAAKo2C,cAAgBX,IACvByE,GAAe,EACf3oD,KAAKozB,MAAMvrB,GAAG2/C,QAAS,IAIvBxnD,KAAKozB,MAAMvrB,GAAG2/C,SAChBxnD,KAAKozB,MAAMvrB,GAAG8/C,SAAS92C,OAAOoB,WAAW22C,YAAY5oD,KAAKozB,MAAMvrB,GAAG8/C,SAAS92C,QAC5E7Q,KAAKozB,MAAMvrB,GAAG4/C,SAAS52C,OAAOoB,WAAW22C,YAAY5oD,KAAKozB,MAAMvrB,GAAG4/C,SAAS52C,UAK9D,IAAhB83C,GAAqB1C,KAAKC,MAAQlmD,KAAKq4B,SAjGxB,IAkGjB7D,WAAWx0B,KAAKqmD,uBAAwB,IAExC7xB,WAAWx0B,KAAKmmD,kBAAmB,GAEtC,EA4RCC,YAzBF,WACEpmD,KAAKmwB,UAAW,CACjB,GA0BD,OADA21B,EAAKzmD,UAAY2nD,GAErB,CAvYoB,GAyYlB,SAAS6B,oBAETA,CAAAA,kBAAkBxpD,UAAY,CAC5BypD,eAAgB,WAEd9oD,KAAK+oD,WAAY,EAEjB/oD,KAAKgpD,QAAS,EAEdhpD,KAAKipD,eAAgB,EAErBjpD,KAAKkpD,qBAAuB,EAC7B,EACDC,uBAAwB,SAAgCC,IACA,IAAlDppD,KAAKkpD,qBAAqB1gD,QAAQ4gD,IACpCppD,KAAKkpD,qBAAqBlkD,KAAKokD,EAElC,EACDC,0BAA2B,SAAmCD,IACN,IAAlDppD,KAAKkpD,qBAAqB1gD,QAAQ4gD,IACpCppD,KAAKkpD,qBAAqB3gD,OAAOvI,KAAKkpD,qBAAqB1gD,QAAQ4gD,GAAY,EAElF,EACDE,uBAAwB,SAAgCC,GACtDvpD,KAAKwpD,iBAAiBD,EACvB,EACDE,kBAAmB,WACbzpD,KAAK0pD,eAAeC,MAAMt+C,EAAEjK,GAAK,GAC9BpB,KAAKipD,eAAiBjpD,KAAKmyB,WAAWy3B,aAAaC,oBACtD7pD,KAAKipD,eAAgB,EACrBjpD,KAAKi3B,QAEEj3B,KAAKipD,gBACdjpD,KAAKipD,eAAgB,EACrBjpD,KAAKk3B,OAER,EAUDsyB,iBAAkB,SAA0BD,GACtCvpD,KAAKuQ,KAAK2W,GAAKlnB,KAAKuQ,KAAK6W,IAAMmiC,GAAOvpD,KAAKuQ,KAAK4W,GAAKnnB,KAAKuQ,KAAK6W,GAAKmiC,GAC/C,IAAnBvpD,KAAK+oD,YACP/oD,KAAKmyB,WAAWiV,MAAO,EACvBpnC,KAAKonC,MAAO,EACZpnC,KAAK+oD,WAAY,EACjB/oD,KAAKk3B,SAEqB,IAAnBl3B,KAAK+oD,YACd/oD,KAAKmyB,WAAWiV,MAAO,EACvBpnC,KAAK+oD,WAAY,EACjB/oD,KAAKi3B,OAER,EACD6yB,iBAAkB,WAChB,IAAKjiD,EACD0T,EAAMvb,KAAKkpD,qBAAqB1oD,OAEpC,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKkpD,qBAAqBrhD,GAAGotB,YAAYj1B,KAAKynC,cAKjD,EACDsiB,iBAAkB,WAChB,MAAO,CACL9pC,IAAK,EACLC,KAAM,EACN4K,MAAO,IACPC,OAAQ,IAEX,EACDi/B,aAAc,WACZ,OAAqB,IAAjBhqD,KAAKuQ,KAAKiV,GACL,CACL0+B,EAAGlkD,KAAKuQ,KAAK05C,SAASn/B,MACtBtZ,EAAGxR,KAAKuQ,KAAK05C,SAASl/B,QAInB,CACLm5B,EAAGlkD,KAAKuQ,KAAKua,MACbtZ,EAAGxR,KAAKuQ,KAAKwa,OAEhB,GAGH,IAAgBm/B,6BACO,CACnB,EAAG,cACH,EAAG,WACH,EAAG,SACH,EAAG,UACH,EAAG,SACH,EAAG,UACH,EAAG,cACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,GAAI,aACJ,GAAI,YACJ,GAAI,MACJ,GAAI,aACJ,GAAI,QACJ,GAAI,uBAEW9+C,GACf,OAAO++C,eAAe/+C,IAAS,EACrC,kBAGE,sBAAsBmF,EAAMynB,EAAMlhB,GAChC9W,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnP,EAAG,EAAG,EAAG0V,EACtD,CAED,SAAoBszC,YAAC75C,EAAMynB,EAAMlhB,GAC/B9W,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnP,EAAG,EAAG,EAAG0V,EACtD,CAED,qBAAqBvG,EAAMynB,EAAMlhB,GAC/B9W,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnP,EAAG,EAAG,EAAG0V,EACtD,CAED,SAASuzC,YAAY95C,EAAMynB,EAAMlhB,GAC/B9W,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnP,EAAG,EAAG,EAAG0V,EACtD,CAED,SAAyBwzC,iBAAC/5C,EAAMynB,EAAMlhB,GACpC9W,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnP,EAAG,EAAG,EAAG0V,EACtD,CAED,yBAAyBvG,EAAMynB,EAAMlhB,GACnC9W,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnP,EAAG,EAAG,EAAG0V,EACtD,CAED,SAASyzC,eAAeh6C,EAAMynB,EAAMlhB,GAClC9W,KAAKoF,EAAI68B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKnP,EAAG,EAAG,EAAG0V,EACtD,CAED,yBACE9W,KAAKoF,EAAI,CAAE,CACZ,CAED,wBAAwBmL,EAAMiE,GAC5B,IAEI3M,EAFA2iD,EAAUj6C,EAAKk6C,IAAM,GACzBzqD,KAAK0qD,eAAiB,GAEtB,MAAInvC,EAAMivC,EAAQhqD,OAGlB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB8iD,EAAa,IAAeC,YAACJ,EAAQ3iD,GAAI2M,GACzCxU,KAAK0qD,eAAe1lD,KAAK2lD,EAE5B,CAED,SAASC,YAAYr6C,EAAMiE,GACzBxU,KAAKu2B,KAAKhmB,EAAMiE,EACjB,CA+DD,SAAoBq2C,eAkFpB,yBAiDA,SAASC,eAAev6C,EAAM4hB,EAAYpM,GACxC/lB,KAAKkiC,YACLliC,KAAK8oD,iBACL9oD,KAAK2rB,UAAYwG,EAAW6E,aAAazmB,EAAKmV,OAC9C1lB,KAAKysB,YAAc0F,EAAW44B,YAAYx9B,SAASvtB,KAAK2rB,WACxD3rB,KAAKgrD,aAAaz6C,EAAM4hB,EAAYpM,EACrC,CA6BD,sBAAsBxV,EAAM4hB,EAAYpM,GACtC/lB,KAAKkiC,YACLliC,KAAK8oD,iBACL9oD,KAAK2rB,UAAYwG,EAAW6E,aAAazmB,EAAKmV,OAC9C1lB,KAAKgrD,aAAaz6C,EAAM4hB,EAAYpM,GACpC/lB,KAAKirD,YAAa,EAClBjrD,KAAKkrD,UAAW,EAChB,MAAgBlrD,KAAKmyB,WAAW3F,cAAcxsB,KAAK2rB,WACnD3rB,KAAKqc,MAAQrc,KAAKmyB,WAAWX,gBAAgB9U,YAAYC,GACzD3c,KAAKmrD,aAAe,EACpBnrD,KAAKmyB,WAAWX,gBAAgBpV,SAASpc,MACzCA,KAAKorD,kBAAoB,EACzBprD,KAAKkc,QAAU,EACflc,KAAKqrD,gBAAkB,KACvBrrD,KAAK+uB,GAAKxe,EAAKwe,GAAKkT,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKwe,GAAI,EAAGoD,EAAW9B,UAAWrwB,MAAQ,CAC1FsrD,cAAc,GAEhBtrD,KAAKurD,GAAKtpB,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKi7C,IAAMj7C,EAAKi7C,GAAGD,GAAKh7C,EAAKi7C,GAAGD,GAAK,CAC3EpgD,EAAG,CAAC,MACH,EAAG,IAAMnL,KACb,CA0ED,SAASyrD,eAAe,CAsMxB,SAAyBC,mBAEzBA,CAoFA,SAAoBC,YAACp7C,EAAMiE,EAAS2d,GAClCnyB,KAAKuQ,KAAOA,EACZvQ,KAAKwU,QAAUA,EACfxU,KAAKmyB,WAAaA,EAClBnyB,KAAK8+B,WAAa,GAClB9+B,KAAKklB,gBAAkBllB,KAAKuQ,KAAK2U,iBAAmB,GACpDllB,KAAK4rD,YAAc,KACnB,IACI/jD,IADAuqB,EAAOpyB,KAAKmyB,WAAWC,KAEvB7W,EAAMvb,KAAKklB,gBAAkBllB,KAAKklB,gBAAgB1kB,OAAS,EAC/DR,KAAK6rD,SAAW7tC,iBAAiBzC,GACjCvb,KAAK8rD,UAAY,GAEjB,gBAAcrlD,EAAGzG,KAAKklB,gBAClBu+B,EAAQ,EACIsI,EAAG,KAGLpqC,oBAKC,WACXqqC,EAAU,YAEd,IAAKnkD,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAkBxB,IAjB2B,MAAvBpB,EAAWoB,GAAGuD,MAAuC,MAAvB3E,EAAWoB,GAAGuD,MAAgB3E,EAAWoB,GAAGu4C,KAA6B,MAAtB35C,EAAWoB,GAAGwD,EAAEF,GAAa1E,EAAWoB,GAAGwD,EAAEsvB,KAChIsxB,EAAW,OACXD,EAAU,QAGgB,MAAvBvlD,EAAWoB,GAAGuD,MAAuC,MAAvB3E,EAAWoB,GAAGuD,MAA2B,IAAVq4C,EAOhEyI,EAAO,OANPA,EAAO3oC,SAAS,SACXrhB,aAAa,OAAQ,WAC1BgqD,EAAKhqD,aAAa,QAASlC,KAAKwU,QAAQuR,KAAKxV,KAAK2zC,GAAK,GACvDgI,EAAKhqD,aAAa,SAAUlC,KAAKwU,QAAQuR,KAAKxV,KAAKiB,GAAK,GACxDu6C,EAAa/mD,KAAKknD,IAKpBnoC,EAAOR,SAAS,QAEW,MAAvB9c,EAAWoB,GAAGuD,KAEhBpL,KAAK6rD,SAAShkD,GAAK,CACjBsf,GAAI8a,gBAAgBqG,QAAQtoC,KAAKwU,QAAS/N,EAAWoB,GAAGwD,EAAG,EAAG,IAAMrL,KAAKwU,SACzEkH,KAAMgvB,qBAAqByhB,aAAansD,KAAKwU,QAAS/N,EAAWoB,GAAI,GACrEmwB,KAAMjU,EACNqoC,SAAU,IAEZh6B,EAAKhwB,YAAY2hB,OACZ,CAIL,IAAYsoC,EAgCZ,GAnCA5I,GAAS,EACT1/B,EAAK7hB,aAAa,OAA+B,MAAvBuE,EAAWoB,GAAGuD,KAAe,UAAY,WACnE2Y,EAAK7hB,aAAa,YAAa,WAGL,IAAtBuE,EAAWoB,GAAG8yB,EAAExvB,GAClB8gD,EAAW,OACXD,EAAU,OACVrxB,EAAIsH,gBAAgBqG,QAAQtoC,KAAKwU,QAAS/N,EAAWoB,GAAG8yB,EAAG,EAAG,KAAM36B,KAAKwU,SACzE63C,EAAW1qC,mBACX2qC,EAAW/oC,SAAS,WACXrhB,aAAa,KAAMmqD,IAC5BE,EAAUhpC,SAAS,iBACXrhB,aAAa,WAAY,SACjCqqD,EAAQrqD,aAAa,KAAM,iBAC3BqqD,EAAQrqD,aAAa,SAAU,KAC/BoqD,EAASlqD,YAAYmqD,GACrBn6B,EAAKhwB,YAAYkqD,GACjBvoC,EAAK7hB,aAAa,SAAiC,MAAvBuE,EAAWoB,GAAGuD,KAAe,UAAY,aAErEmhD,EAAU,KACV5xB,EAAI,MAIN36B,KAAK8+B,WAAWj3B,GAAK,CACnBmwB,KAAMjU,EACN4W,EAAGA,EACH6xB,MAAOD,EACPH,SAAU,GACVK,aAAc,GACdC,SAAUL,EACVM,WAAY,GAGa,MAAvBlmD,EAAWoB,GAAGuD,KAAc,CAC9B+Z,EAAO4mC,EAAavrD,OACpB,MAAQ+iB,SAAS,KAEjB,IAAKuB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzB/C,EAAE3f,YAAY2pD,EAAajnC,IAG7B,IAAQ8nC,EAAGrpC,SAAS,QACpBqpC,EAAK1qD,aAAa,YAAa,SAC/B0qD,EAAK1qD,aAAa,KAAM2qD,EAAU,IAAMpJ,GACxCmJ,EAAKxqD,YAAY2hB,GACjBqO,EAAKhwB,YAAYwqD,GACjB7qC,EAAE7f,aAAa,OAAQ,OAAS4qD,kBAAoB,IAAMD,EAAU,IAAMpJ,EAAQ,KAClFsI,EAAavrD,OAAS,EACtBurD,EAAa/mD,KAAK+c,EAC5B,MACUgqC,EAAa/mD,KAAK+e,GAGhBtd,EAAWoB,GAAGu4C,MAAQpgD,KAAK8rD,YAC7B9rD,KAAK8rD,UAAY9rD,KAAK+sD,wBAIxB/sD,KAAK6rD,SAAShkD,GAAK,CACjBmwB,KAAMjU,EACNqoC,SAAU,GACVjlC,GAAI8a,gBAAgBqG,QAAQtoC,KAAKwU,QAAS/N,EAAWoB,GAAGwD,EAAG,EAAG,IAAMrL,KAAKwU,SACzEkH,KAAMgvB,qBAAqByhB,aAAansD,KAAKwU,QAAS/N,EAAWoB,GAAI,GACrEmlD,QAASd,GAGNlsD,KAAK6rD,SAAShkD,GAAG6T,KAAKvQ,GACzBnL,KAAKitD,SAASxmD,EAAWoB,GAAI7H,KAAK6rD,SAAShkD,GAAG6T,KAAKta,EAAGpB,KAAK6rD,SAAShkD,GAEvE,CAMH,IAHA7H,KAAK4rD,YAAcroC,SAAS0oC,GAC5B1wC,EAAMwwC,EAAavrD,OAEdqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK4rD,YAAYxpD,YAAY2pD,EAAalkD,IAGxC47C,EAAQ,IACVzjD,KAAK4rD,YAAY1pD,aAAa,KAAM2qD,GACpC7sD,KAAKwU,QAAQ04C,cAAchrD,aAAa8pD,EAAS,OAASc,kBAAoB,IAAMD,EAAU,KAC9Fz6B,EAAKhwB,YAAYpC,KAAK4rD,cAGpB5rD,KAAK6rD,SAASrrD,QAChBR,KAAKwU,QAAQ20C,uBAAuBnpD,KAEvC,CA7uBDmb,gBAAgB,CAACotB,0BAA2BqiB,aAC5CA,YAAYvrD,UAAU4oC,SAAW2iB,YAAYvrD,UAAUqpC,yBAEvDkiB,YAAYvrD,UAAUk3B,KAAO,SAAUhmB,EAAMiE,GAI3C,MAHAxU,KAAKuQ,KAAOA,EACZvQ,KAAK0qD,eAAiB,GACtB1qD,KAAK2oC,6BAA6Bn0B,GAElC,IACO24C,IADGntD,KAAKuQ,KAAKk6C,GAAGjqD,OAEZgqD,EAAGxqD,KAAKuQ,KAAKk6C,GAExB,IAAK5iD,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAG3B,OAFAslD,EAAM,KAEE3C,EAAQ3iD,GAAG2d,IACjB,OACE2nC,EAAM,IAAIC,aAAa5C,EAAQ3iD,GAAI2M,EAASxU,MAC5C,MAEF,KAAM,EACJmtD,EAAM,gBAAgB3C,EAAQ3iD,GAAI2M,EAASxU,MAC3C,MAEF,KAAK,EACHmtD,EAAM,IAAeE,YAAC7C,EAAQ3iD,GAAI2M,EAASxU,MAC3C,MAEF,KAAK,EACHmtD,EAAM,IAAe9C,YAACG,EAAQ3iD,GAAI2M,EAASxU,MAC3C,MAEF,OACA,OACEmtD,EAAM,IAAI5C,eAAeC,EAAQ3iD,GAAI2M,EAASxU,MAC9C,MAEF,KAAO,GACLmtD,EAAM,qBAAqB3C,EAAQ3iD,GAAI2M,EAASxU,MAChD,MAEF,KAAK,GACHmtD,EAAM,IAAmBG,gBAAC9C,EAAQ3iD,GAAI2M,EAASxU,MAC/C,MAEF,OACEmtD,EAAM,IAAII,eAAe/C,EAAQ3iD,GAAI2M,EAASxU,MAC9C,MAGF,QACEmtD,EAAM,IAAIK,cAAchD,EAAQ3iD,GAAI2M,EAASxU,MAI7CmtD,GACFntD,KAAK0qD,eAAe1lD,KAAKmoD,EAE5B,CACL,EAIEtC,YAAYxrD,UAAY,CACtBouD,WAAY,WACV,IAAKztD,KAAKuQ,KAAK0U,QACb,OAAY,EAMd,IAHA,MAAQ,EACD1J,EAAGvb,KAAKuQ,KAAK2U,gBAAgB1kB,OAE7BqH,EAAI0T,GAAK,CACd,GAA0C,MAAtCvb,KAAKuQ,KAAK2U,gBAAgBrd,GAAGuD,OAAoD,IAApCpL,KAAKuQ,KAAK2U,gBAAgBrd,GAAGmgB,GAC5E,OAAW,EAGbngB,GAAK,CACN,CAED,OAAY,CACb,EACD2rB,gBAAiB,WACf,IAAItQ,EAAwBC,0BAE5B,GAAKD,EAAL,CAIA,IAAIwqC,EAA2BxqC,EAAsB,SACvByqC,EAAGzqC,EAAsB,WAC3B0qC,EAAG1qC,EAAsB,SACjD2qC,EAA0B3qC,EAAsB,UACtBA,EAAsB,QACpDljB,KAAK8tD,eAAiBJ,EAAyB1tD,MAE3CA,KAAKuQ,KAAK0U,SAAWjlB,KAAK+tD,aAC5B/tD,KAAK8tD,eAAeE,sBAAsBhuD,KAAK+tD,aAGjD,IAAoBE,EAAGN,EAA2BO,uBAAuBluD,KAAMA,KAAK8tD,gBACpF9tD,KAAK8tD,eAAeK,yBAAyBF,GAExB,IAAjBjuD,KAAKuQ,KAAKiV,IAAYxlB,KAAKuQ,KAAKmf,GAClC1vB,KAAK4vB,cAAgBw+B,EAAwBpuD,MACnB,IAAjBA,KAAKuQ,KAAKiV,IACnBxlB,KAAK8tD,eAAeO,eAAiBT,EAAyB5tD,KAAKsuD,WAAYtuD,KAAKuuD,UAAWvuD,KAAK8tD,gBACpG9tD,KAAK8tD,eAAe9+C,QAAUhP,KAAK8tD,eAAeO,gBACxB,IAAjBruD,KAAKuQ,KAAKiV,KACnBxlB,KAAK8tD,eAAeU,cAAgBX,EAAwB7tD,MAC5DA,KAAK8tD,eAAelI,KAAO5lD,KAAK8tD,eAAeU,cAvBhD,CAyBF,EACDC,aAAc,WACZ,IAAIC,EAAiBxE,aAAalqD,KAAKuQ,KAAKo+C,KACjC3uD,KAAK4uD,aAAe5uD,KAAK6uD,cAC/BhtD,MAAM,kBAAoB6sD,CAChC,EACD1D,aAAc,SAAsBz6C,EAAM4hB,EAAYpM,GACpD/lB,KAAKmyB,WAAaA,EAClBnyB,KAAK+lB,KAAOA,EACZ/lB,KAAKuQ,KAAOA,EACZvQ,KAAK6sD,QAAUlrC,kBAEV3hB,KAAKuQ,KAAK8W,KACbrnB,KAAKuQ,KAAK8W,GAAK,GAIjBrnB,KAAK8uD,eAAiB,IAAkBvB,eAACvtD,KAAKuQ,KAAMvQ,KAAMA,KAAKwoC,kBAChE,EACDumB,QAAS,WACP,OAAW/uD,KAACgD,IACb,EACD+mD,iBAAkB,WAA4B,GAWhDiF,aAAa3vD,UAAY,CAMvB6iC,UAAW,WAETliC,KAAKynC,eAAgB,EAErBznC,KAAKwoC,kBAAoB,GAEzBxoC,KAAKonC,MAAO,CACb,EAYD6nB,kBAAmB,SAA2B1F,EAAK2F,GACjD,IAAIrnD,EACA0T,EAAMvb,KAAKwoC,kBAAkBhoC,OAEjC,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACpBqnD,GAAalvD,KAAKmvD,WAAoD,cAAvCnvD,KAAKwoC,kBAAkB3gC,GAAG46B,YAC3DziC,KAAKwoC,kBAAkB3gC,GAAGogC,WAEtBjoC,KAAKwoC,kBAAkB3gC,GAAGu/B,OAC5BpnC,KAAKmyB,WAAWiV,MAAO,EACvBpnC,KAAKonC,MAAO,GAInB,EACDU,mBAAoB,SAA4BpsB,IACA,IAA1C1b,KAAKwoC,kBAAkBhgC,QAAQkT,IACjC1b,KAAKwoC,kBAAkBxjC,KAAK0W,EAE/B,GAWHovC,eAAezrD,UAAUowB,aAAe,WAAY,EAEpDtU,gBAAgB,CAAC0tC,kBAAmBgC,YAAamE,cAAelE,gBAEhEA,eAAezrD,UAAU+vD,eAAiB,WACxC,OAAO,IACX,EAEEtE,eAAezrD,UAAU41B,YAAc,aAEvC61B,eAAezrD,UAAUiuB,QAAU,aAEnCw9B,eAAezrD,UAAUm0B,gBAAkB,WACzC,MAA4BrQ,0BAE5B,GAAKD,EAAL,CAIA,IAAoBmsC,EAAGnsC,EAAsB,WAC7CljB,KAAK8tD,eAAiBuB,EAAiBrvD,KAHtC,CAIL,EAEE8qD,eAAezrD,UAAUiwD,eAAiB,WACxC,OAAOtvD,KAAKysB,WAChB,EAwBE8iC,aAAalwD,UAAUowB,aAAe,SAAU85B,GAI9C,GAHAvpD,KAAKspD,uBAAuBC,GAAK,GACjCvpD,KAAKivD,kBAAkB1F,GAAK,GAEvBvpD,KAAK+uB,GAAGu8B,aAIXtrD,KAAKmrD,aAAe5B,EAAMvpD,KAAKuQ,KAAK8W,OAJX,CACzB,IAAgBmoC,EAAGxvD,KAAK+uB,GAAG3tB,EAC3BpB,KAAKmrD,aAAeqE,CAC1B,CAIIxvD,KAAKkc,QAAUlc,KAAKurD,GAAGnqD,EAAE,GACzB,IAAequD,EAAGzvD,KAAKkc,QAAUlc,KAAKorD,kBAElCprD,KAAKqrD,kBAAoBoE,IAC3BzvD,KAAKqrD,gBAAkBoE,EACvBzvD,KAAKqc,MAAMoB,OAAOgyC,GAExB,EAEEt0C,gBAAgB,CAAC0tC,kBAAmBgC,YAAamE,cAAeO,cAEhEA,aAAalwD,UAAU41B,YAAc,WAC/Bj1B,KAAK+oD,WAAa/oD,KAAKkrD,WACpBlrD,KAAKirD,aAIEjrD,KAAKqc,MAAMY,WAAarR,KAAKyT,IAAIrf,KAAKmrD,aAAenrD,KAAKmyB,WAAW9B,UAAYrwB,KAAKqc,MAAMW,QAAU,KAChHhd,KAAKqc,MAAMW,KAAKhd,KAAKmrD,aAAenrD,KAAKmyB,WAAW9B,YAJpDrwB,KAAKqc,MAAMU,OACX/c,KAAKqc,MAAMW,KAAKhd,KAAKmrD,aAAenrD,KAAKmyB,WAAW9B,WACpDrwB,KAAKirD,YAAa,GAK1B,EAEEsE,aAAalwD,UAAU63B,KAAO,WAAY,EAG1Cq4B,aAAalwD,UAAU43B,KAAO,WAC5Bj3B,KAAKqc,MAAMC,QACXtc,KAAKirD,YAAa,CACtB,EAEEsE,aAAalwD,UAAUid,MAAQ,WAC7Btc,KAAKqc,MAAMC,QACXtc,KAAKirD,YAAa,EAClBjrD,KAAKkrD,UAAW,CACpB,EAEEqE,aAAalwD,UAAUkd,OAAS,WAC9Bvc,KAAKkrD,UAAW,CACpB,EAEEqE,aAAalwD,UAAUmd,QAAU,SAAUC,GACzCzc,KAAKqc,MAAMa,KAAKT,EACpB,EAEE8yC,aAAalwD,UAAUoe,OAAS,SAAUiyC,GACxC1vD,KAAKorD,kBAAoBsE,EACzB1vD,KAAKqrD,gBAAkBqE,EAAc1vD,KAAKkc,QAC1Clc,KAAKqc,MAAMoB,OAAOzd,KAAKqrD,gBAC3B,EAEEkE,aAAalwD,UAAU+vD,eAAiB,WACtC,WACJ,EAEEG,aAAalwD,UAAUiuB,QAAU,aAEjCiiC,aAAalwD,UAAU0qD,iBAAmB,aAE1CwF,aAAalwD,UAAUm0B,gBAAkB,aAIzCi4B,aAAapsD,UAAUswD,YAAc,SAAUpG,GAC7C,IAAI1hD,EAEA0I,EADAgL,EAAMvb,KAAK4kB,OAAOpkB,OAItB,IAFAR,KAAK2kB,gBAAiB,EAEjB9c,EAAI0T,EAAM,EAAG1T,GAAK,EAAGA,GAAK,EACxB7H,KAAKmY,SAAStQ,KACjB0I,EAAOvQ,KAAK4kB,OAAO/c,IAEVqf,GAAK3W,EAAK6W,IAAMmiC,EAAMvpD,KAAK4kB,OAAO/c,GAAGuf,IAAM7W,EAAK4W,GAAK5W,EAAK6W,GAAKmiC,EAAMvpD,KAAK4kB,OAAO/c,GAAGuf,IAC3FpnB,KAAK4vD,UAAU/nD,GAInB7H,KAAK2kB,iBAAiB3kB,KAAKmY,SAAStQ,IAAK7H,KAAK2kB,eAGhD3kB,KAAK6vD,sBACT,EAEEpE,aAAapsD,UAAUywD,WAAa,SAAUC,GAC5C,OAAQA,EAAMvqC,IACZ,OACE,YAAYwqC,YAAYD,GAE1B,KAAK,EACH,OAAO/vD,KAAKiwD,WAAWF,GAEzB,KAAM,EACJ,OAAW/vD,KAACkwD,YAAYH,GAE1B,OAkBA,QACE,OAAO/vD,KAAKmwD,WAAWJ,GAhBzB,KAAK,EACH,OAAO/vD,KAAKowD,YAAYL,GAE1B,KAAK,EACH,OAAO/vD,KAAKqwD,WAAWN,GAEzB,KAAM,EACJ,OAAW/vD,KAAC0c,YAAYqzC,GAE1B,QACE,YAAYO,aAAaP,GAE3B,KAAK,GACH,OAAO/vD,KAAKuwD,cAAcR,GAKlC,EAEEtE,aAAapsD,UAAUixD,aAAe,WACpC,UAAepwD,MAAC,mDACpB,EAEEurD,aAAapsD,UAAUqd,YAAc,SAAUnM,GAC7C,OAAWg/C,IAAAA,aAAah/C,EAAMvQ,KAAKmyB,WAAYnyB,KACnD,EAEEyrD,aAAapsD,UAAUkxD,cAAgB,SAAUhgD,GAC/C,OAAO,mBAAmBA,EAAMvQ,KAAKmyB,WAAYnyB,KACrD,EAEEyrD,aAAapsD,UAAUmxD,cAAgB,WACrC,IAAK3oD,EACE0T,EAAGvb,KAAK4kB,OAAOpkB,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK4vD,UAAU/nD,GAGjB7H,KAAK6vD,sBACT,EAEEpE,aAAapsD,UAAU6zB,cAAgB,SAAUC,GAE/C,IAAKtrB,EADL7H,KAAK2kB,gBAAiB,EAEtB,IACIG,EADGvJ,EAAG4X,EAAU3yB,OAEhB2kB,EAAOnlB,KAAK4kB,OAAOpkB,OAEvB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAGxB,IAFAid,EAAI,EAEGA,EAAIK,GAAM,CACf,GAAInlB,KAAK4kB,OAAOE,GAAGgB,KAAOqN,EAAUtrB,GAAGie,GAAI,CACzC9lB,KAAK4kB,OAAOE,GAAKqO,EAAUtrB,GAC3B,KACD,CAEDid,GAAK,CACN,CAEP,EAEE2mC,aAAapsD,UAAUgzB,oBAAsB,SAAUo+B,GACrDzwD,KAAKmyB,WAAWd,iBAAmBo/B,CACvC,EAEEhF,aAAapsD,UAAUq1B,UAAY,WAC5B10B,KAAKmyB,WAAWu+B,iBACnB1wD,KAAKwwD,eAEX,EAEE/E,aAAapsD,UAAUsxD,sBAAwB,SAAUn8C,EAASo8C,EAAYC,GAM5E,IALA,IAAI14C,EAAWnY,KAAKmY,WACPnY,KAAK4kB,OACb/c,EAAG,IACE+c,EAAOpkB,OAEVqH,EAAI0T,GACLqJ,EAAO/c,GAAGk8B,KAAO6sB,IAEdz4C,EAAStQ,KAAsB,IAAhBsQ,EAAStQ,IAI3BgpD,EAAU7rD,KAAKmT,EAAStQ,IACxBsQ,EAAStQ,GAAGipD,mBAEavwD,IAArBqkB,EAAO/c,GAAGgJ,OACZ7Q,KAAK2wD,sBAAsBn8C,EAASoQ,EAAO/c,GAAGgJ,OAAQggD,GAEtDr8C,EAAQu8C,aAAaF,KATvB7wD,KAAK4vD,UAAU/nD,GACf7H,KAAKgxD,kBAAkBx8C,KAa3B3M,GAAK,CAEX,EAEE4jD,aAAapsD,UAAU2xD,kBAAoB,SAAUx8C,GACnDxU,KAAKixD,gBAAgBjsD,KAAKwP,EAC9B,EAEEi3C,aAAapsD,UAAU80B,wBAA0B,SAAUrN,GACzD,IAAKjf,EACD0T,EAAMuL,EAAOtmB,OAEjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,GAAIif,EAAOjf,GAAG6nB,GAAI,CAChB,IAAQ3J,EAAG/lB,KAAKiwD,WAAWnpC,EAAOjf,IAClCke,EAAKyN,kBACLxzB,KAAKmyB,WAAWd,iBAAiB/B,oBAAoBvJ,EACtD,CAEP,EAEE0lC,aAAapsD,UAAUg4B,iBAAmB,SAAUtT,GAClD,IACIvP,IADYuP,EAAK4P,QAGrB,GAAyB,iBAAdu9B,EACT18C,EAAUxU,KAAKmY,SAAS+4C,OACnB,CACL,IAAIrpD,EACG0T,EAAGvb,KAAKmY,SAAS3X,OAExB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,GAAI7H,KAAKmY,SAAStQ,GAAG0I,KAAKif,KAAO0hC,EAAW,CAC1C18C,EAAUxU,KAAKmY,SAAStQ,GACxB,KACD,CAEJ,CAED,OAAoB,IAAhBkc,EAAKvjB,OACOgU,EAGFA,EAAC6iB,iBAAiBtT,EACpC,EAEE0nC,aAAapsD,UAAU8xD,gBAAkB,SAAUl9B,EAAUm9B,GAC3DpxD,KAAKmyB,WAAWkB,YAAc,IAAe2wB,YAC7ChkD,KAAKmyB,WAAWkB,YAAYC,SAASW,EAASjN,OAC9ChnB,KAAKmyB,WAAWkB,YAAYE,SAASU,EAASb,MAAOg+B,GACrDpxD,KAAKmyB,WAAW6E,aAAeh3B,KAAKqxD,cAAcr6B,aAAazK,KAAKvsB,KAAKqxD,eACzErxD,KAAKmyB,WAAW3F,cAAgBxsB,KAAKqxD,cAAc7kC,cAAcD,KAAKvsB,KAAKqxD,eAC3ErxD,KAAKmyB,WAAW44B,YAAc/qD,KAAKqxD,cAAc//B,eACjDtxB,KAAKmyB,WAAWX,gBAAkBxxB,KAAKqxD,cAAc7/B,gBACrDxxB,KAAKmyB,WAAWmV,QAAU,EAC1BtnC,KAAKmyB,WAAW9B,UAAY4D,EAASC,GACrCl0B,KAAKmyB,WAAW3C,GAAKyE,EAASzE,GAC9BxvB,KAAKmyB,WAAWm/B,SAAW,CACzBpN,EAAGjwB,EAASiwB,EACZ1yC,EAAGyiB,EAASziB,EAElB,EAIEk6C,iBAAiBrsD,UAAY,CAC3BkyD,cAAe,WACbvxD,KAAK0pD,eAAiB,CACpBC,MAAO3pD,KAAKuQ,KAAK2V,GAAK2xB,yBAAyBqB,qBAAqBl5C,KAAMA,KAAKuQ,KAAK2V,GAAIlmB,MAAQ,CAC9FqL,EAAG,GAELmmD,SAAS,EACTC,QAAQ,EACR/Y,IAAK,IAAIzK,QAGPjuC,KAAKuQ,KAAKmhD,KACZ1xD,KAAK0pD,eAAeC,MAAM9Q,cAAe,GAIvC74C,KAAKuQ,KAAKiV,EAEf,EACDmsC,gBAAiB,WAIf,GAHA3xD,KAAK0pD,eAAe+H,OAASzxD,KAAK0pD,eAAeC,MAAMt+C,EAAE+7B,MAAQpnC,KAAKynC,cACtEznC,KAAK0pD,eAAe8H,QAAUxxD,KAAK0pD,eAAeC,MAAMviB,MAAQpnC,KAAKynC,cAEjEznC,KAAK6wD,UAAW,CAClB,IAAOnY,EACKkZ,EAAG5xD,KAAK0pD,eAAehR,MAC3B,IACE14C,KAAK6wD,UAAUrwD,OAEzB,IAAKR,KAAK0pD,eAAe8H,QACvB,KAAO3pD,EAAI0T,GAAK,CACd,GAAIvb,KAAK6wD,UAAUhpD,GAAG6hD,eAAeC,MAAMviB,KAAM,CAC/CpnC,KAAK0pD,eAAe8H,SAAU,EAC9B,KACD,CAED3pD,GAAK,CACN,CAGH,GAAI7H,KAAK0pD,eAAe8H,QAItB,IAHA9Y,EAAM14C,KAAK0pD,eAAeC,MAAMvoD,EAAEoF,MAClCorD,EAASpgB,eAAekH,GAEnB7wC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB6wC,EAAM14C,KAAK6wD,UAAUhpD,GAAG6hD,eAAeC,MAAMvoD,EAAEoF,MAC/CorD,EAASviB,UAAUqJ,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAGzJ,CACF,EACDmZ,cAAe,SAAuBxsC,GACpC,IAAcysC,EAAG,GACjBA,EAAW9sD,KAAKhF,KAAK0pD,gBAIrB,IAHA,IAeI7hD,KAfO,IACA7H,KAAK+lB,KAET/K,GACD+K,EAAK2jC,gBACH3jC,EAAKxV,KAAK0U,SACZ6sC,EAAWvpD,OAAO,EAAG,EAAGwd,EAAK2jC,gBAG/B3jC,EAAOA,EAAKA,MAEZ/K,GAAO,EAKX,IACI+2C,EADAx2C,EAAMu2C,EAAWtxD,OAGrB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBkqD,EAAQD,EAAWjqD,GAAG6wC,IAAIzG,kBAAkB,EAAG,EAAG,GAElD5sB,EAAK,CAACA,EAAG,GAAK0sC,EAAM,GAAI1sC,EAAG,GAAK0sC,EAAM,GAAI,GAG5C,OAAS1sC,CACV,EACD2sC,QAAS,IAAI/jB,QAqJf0d,YAAYtsD,UAAU4yD,gBAAkB,SAAU/oB,GAChD,OAAWlpC,KAAC6rD,SAAS3iB,GAAKxtB,IAC9B,EAEEiwC,YAAYtsD,UAAU41B,YAAc,SAAUi9B,GAC5C,MAAYN,EAAG5xD,KAAKwU,QAAQk1C,eAAehR,IAEpCn9B,EAAGvb,KAAKklB,gBAAgB1kB,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EASxB,IARI7H,KAAK6rD,SAAShkD,GAAG6T,KAAK0rB,MAAQ8qB,IAChClyD,KAAKitD,SAASjtD,KAAKklB,gBAAgBrd,GAAI7H,KAAK6rD,SAAShkD,GAAG6T,KAAKta,EAAGpB,KAAK6rD,SAAShkD,KAG5E7H,KAAK6rD,SAAShkD,GAAGsf,GAAGigB,MAAQ8qB,IAC9BlyD,KAAK6rD,SAAShkD,GAAGmwB,KAAK91B,aAAa,eAAgBlC,KAAK6rD,SAAShkD,GAAGsf,GAAG/lB,GAGpC,MAAjCpB,KAAKklB,gBAAgBrd,GAAGuD,OACtBpL,KAAK6rD,SAAShkD,GAAGmlD,UAAYhtD,KAAKwU,QAAQk1C,eAAeC,MAAMviB,MAAQ8qB,IACzElyD,KAAK6rD,SAAShkD,GAAGmlD,QAAQ9qD,aAAa,YAAa0vD,EAAS/f,mBAAmBiB,WAG7E9yC,KAAK8+B,WAAWj3B,GAAG8yB,IAAM36B,KAAK8+B,WAAWj3B,GAAG8yB,EAAEyM,MAAQ8qB,IAAe,CACvE,MAAclyD,KAAK8+B,WAAWj3B,GAAG2kD,MAE7BxsD,KAAK8+B,WAAWj3B,GAAG8yB,EAAEv5B,EAAI,GACa,UAApCpB,KAAK8+B,WAAWj3B,GAAG4kD,eACrBzsD,KAAK8+B,WAAWj3B,GAAG4kD,aAAe,QAClCzsD,KAAK8+B,WAAWj3B,GAAGmwB,KAAK91B,aAAa,SAAU,OAAS4qD,kBAAoB,IAAM9sD,KAAK8+B,WAAWj3B,GAAG6kD,SAAW,MAGlHH,EAAQrqD,aAAa,UAAWlC,KAAK8+B,WAAWj3B,GAAG8yB,EAAEv5B,KAEb,WAApCpB,KAAK8+B,WAAWj3B,GAAG4kD,eACrBzsD,KAAK8+B,WAAWj3B,GAAG4kD,aAAe,SAClCzsD,KAAK8+B,WAAWj3B,GAAGmwB,KAAK91B,aAAa,SAAU,OAGjDlC,KAAK8+B,WAAWj3B,GAAGmwB,KAAK91B,aAAa,eAAyC,EAAzBlC,KAAK8+B,WAAWj3B,GAAG8yB,EAAEv5B,GAE7E,CAGT,EAEEuqD,YAAYtsD,UAAU8yD,eAAiB,WACrC,OAAOnyD,KAAK4rD,WAChB,EAEED,YAAYtsD,UAAU0tD,qBAAuB,WAC3C,IAAQhpC,EAAG,QAKX,OAJAA,GAAQ,KAAO/jB,KAAKmyB,WAAWm/B,SAASpN,EACxCngC,GAAQ,KAAO/jB,KAAKmyB,WAAWm/B,SAAS9/C,EACxCuS,GAAQ,MAAQ/jB,KAAKmyB,WAAWm/B,SAASpN,EACzCngC,GAAQ,MAAQ/jB,KAAKmyB,WAAWm/B,SAAS9/C,EAAI,GAEjD,EAEEm6C,YAAYtsD,UAAU4tD,SAAW,SAAUvlC,EAAU0qC,EAAWvG,GAC9D,IACIhkD,EACA0T,EAFA82C,EAAa,KAAOD,EAAUhxD,EAAE,GAAG,GAAK,IAAMgxD,EAAUhxD,EAAE,GAAG,GAKjE,IAFAma,EAAM62C,EAAU51B,QAEX30B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAExBwqD,GAAc,KAAOD,EAAU/mD,EAAExD,EAAI,GAAG,GAAK,IAAMuqD,EAAU/mD,EAAExD,EAAI,GAAG,GAAK,IAAMuqD,EAAUvqD,EAAEA,GAAG,GAAK,IAAMuqD,EAAUvqD,EAAEA,GAAG,GAAK,IAAMuqD,EAAUhxD,EAAEyG,GAAG,GAAK,IAAMuqD,EAAUhxD,EAAEyG,GAAG,GAShL,GALIuqD,EAAUppD,GAAKuS,EAAM,IACvB82C,GAAc,KAAOD,EAAU/mD,EAAExD,EAAI,GAAG,GAAK,IAAMuqD,EAAU/mD,EAAExD,EAAI,GAAG,GAAK,IAAMuqD,EAAUvqD,EAAE,GAAG,GAAK,IAAMuqD,EAAUvqD,EAAE,GAAG,GAAK,IAAMuqD,EAAUhxD,EAAE,GAAG,GAAK,IAAMgxD,EAAUhxD,EAAE,GAAG,IAI5KyqD,EAASO,WAAaiG,EAAY,CACpC,IAAIC,EAAiB,GAEjBzG,EAAS7zB,OACPo6B,EAAUppD,IACZspD,EAAiB5qC,EAAS04B,IAAMpgD,KAAK8rD,UAAYuG,EAAaA,GAGhExG,EAAS7zB,KAAK91B,aAAa,IAAKowD,IAGlCzG,EAASO,SAAWiG,CACrB,CACL,EAEE1G,YAAYtsD,UAAUiuB,QAAU,WAC9BttB,KAAKwU,QAAU,KACfxU,KAAKmyB,WAAa,KAClBnyB,KAAK4rD,YAAc,KACnB5rD,KAAKuQ,KAAO,KACZvQ,KAAKklB,gBAAkB,IAC3B,EAEE,IAAIqtC,eAAiB,WACnB,IAAM7lC,EAAG,CACTA,aAGA,SAAsB8lC,EAAOC,GAC3B,MAAUlvC,SAAS,UAWnB,OAVAmvC,EAAIxwD,aAAa,KAAMswD,IAEC,IAApBC,IACFC,EAAIxwD,aAAa,cAAe,qBAChCwwD,EAAIxwD,aAAa,IAAK,MACtBwwD,EAAIxwD,aAAa,IAAK,MACtBwwD,EAAIxwD,aAAa,QAAS,QAC1BwwD,EAAIxwD,aAAa,SAAU,UAI9B,EAfDwqB,6BAiBA,WACE,MAAoBnJ,SAAS,iBAI7B,OAHAovC,EAAczwD,aAAa,OAAQ,UACnCywD,EAAczwD,aAAa,8BAA+B,QAC1DywD,EAAczwD,aAAa,SAAU,8CAC9BywD,CACR,GAED,QACJ,CA7BuB,GA+BHC,eAAG,WACnB,MAAS,CACP3G,UAAU,GAOZ,OAJI,WAAW79C,KAAKsM,UAAU4D,YAAc,UAAUlQ,KAAKsM,UAAU4D,YAAc,WAAWlQ,KAAKsM,UAAU4D,YAAc,aAAalQ,KAAKsM,UAAU4D,cACrJoO,EAAGu/B,UAAW,GAGTv/B,CACX,CAVuB,qBAYG,CAAA,WACT,iBAEf,oBAAoBsL,GAClB,UACa,gBACTzc,EAAMyc,EAAKznB,KAAKk6C,GAAKzyB,EAAKznB,KAAKk6C,GAAGjqD,OAAS,EAC3CgyD,EAAQ7wC,kBACR+wC,EAAMH,eAAeM,aAAaL,GAAO,KACjC,EAIZ,IAHAxyD,KAAK8yD,QAAU,GAGVjrD,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAC3BkrD,EAAgB,KAChB,IAAI/vD,EAAOg1B,EAAKznB,KAAKk6C,GAAG5iD,GAAG2d,GAEvBwtC,kBAAkBhwD,KAEpB+vD,EAAgB,IAAIE,EADPD,kBAAkBhwD,GAAMkwD,QACVR,EAAK16B,EAAK82B,eAAepE,eAAe7iD,GAAImwB,EAAMm7B,SAAW1P,EAAO2P,GAC/FA,EAASD,SAAW1P,EAEhBuP,kBAAkBhwD,GAAMqwD,iBAC1B5P,GAAS,IAITsP,GACF/yD,KAAK8yD,QAAQ9tD,KAAK+tD,EAErB,CAEGtP,IACFzrB,EAAK7F,WAAWC,KAAKhwB,YAAYswD,GACjC16B,EAAK62B,aAAa3sD,aAAa,SAAU,OAAS4qD,kBAAoB,IAAM0F,EAAQ,MAGlFxyD,KAAK8yD,QAAQtyD,QACfw3B,EAAKmxB,uBAAuBnpD,KAE/B,CAWD,wBAAwB8lB,EAAIotC,EAAQG,GAClCL,kBAAkBltC,GAAM,CACtBotC,OAAQA,EACRG,eAAgBA,EAEnB,CAED,SAAuBC,iBAEvBA,CAqLA,6BAgDA,SAASC,uBAAuB,CAmEhC,SAAsBC,cAACjjD,EAAM4hB,EAAYpM,GACvC/lB,KAAK2rB,UAAYwG,EAAW6E,aAAazmB,EAAKmV,OAC9C1lB,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,GACnC/lB,KAAK0zD,WAAa,CAChBzzC,IAAK,EACLC,KAAM,EACN4K,MAAO9qB,KAAK2rB,UAAUu4B,EACtBn5B,OAAQ/qB,KAAK2rB,UAAUna,EAE1B,CAkBD,SAASmiD,iBAAiBn/C,EAASwL,GACjChgB,KAAKg4B,KAAOxjB,EACZxU,KAAKkpC,IAAMlpB,CACZ,CAED,SAAS4zC,gBAAgB,CA1VzBC,WAAWx0D,UAAU41B,YAAc,SAAUwS,GAC3C,MACOlsB,EAAGvb,KAAK8yD,QAAQtyD,OAEvB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK8yD,QAAQjrD,GAAGotB,YAAYwS,EAElC,EAWE6rB,eAAej0D,UAAY,CACzBy0D,oBAAqB,WACnB9zD,KAAK6uD,aAAetrC,SAAS,IAC9B,EACDwwC,wBAAyB,WACvB/zD,KAAKg0D,aAAezwC,SAAS,KAC7BvjB,KAAKi0D,mBAAqBj0D,KAAK6uD,aAC/B7uD,KAAKktD,cAAgBltD,KAAK6uD,aAC1B7uD,KAAKk0D,cAAe,EACpB,IAAsBC,EAAG,KAEzB,GAAIn0D,KAAKuQ,KAAK6jD,GAAI,CAChBp0D,KAAKq0D,WAAa,CAAE,EACpB,IAAIC,EAAgB/wC,SAAS,UAC7B+wC,EAAcpyD,aAAa,KAAMlC,KAAK6sD,SACtC,MAAStpC,SAAS,KAClBgxC,EAAGnyD,YAAYpC,KAAK6uD,cACpByF,EAAclyD,YAAYmyD,GAC1BJ,EAAqBI,EACrBv0D,KAAKmyB,WAAWC,KAAKhwB,YAAYkyD,EACzC,MAAiBt0D,KAAKuQ,KAAKikD,IACnBx0D,KAAKg0D,aAAa5xD,YAAYpC,KAAK6uD,cACnCsF,EAAqBn0D,KAAKg0D,aAC1Bh0D,KAAK4uD,YAAc5uD,KAAKg0D,cAExBh0D,KAAK4uD,YAAc5uD,KAAK6uD,aAY1B,GATI7uD,KAAKuQ,KAAKkkD,IACZz0D,KAAK6uD,aAAa3sD,aAAa,KAAMlC,KAAKuQ,KAAKkkD,IAG7Cz0D,KAAKuQ,KAAKyX,IACZhoB,KAAK6uD,aAAa3sD,aAAa,QAASlC,KAAKuQ,KAAKyX,IAI/B,IAAjBhoB,KAAKuQ,KAAKiV,KAAaxlB,KAAKuQ,KAAKmkD,GAAI,CACvC,IAAIC,EAAKpxC,SAAS,cACTA,SAAS,QAClB8B,EAAGnjB,aAAa,IAAK,SAAWlC,KAAKuQ,KAAK2zC,EAAI,OAASlkD,KAAKuQ,KAAK2zC,EAAI,IAAMlkD,KAAKuQ,KAAKiB,EAAI,OAASxR,KAAKuQ,KAAKiB,EAAI,KAChH,MAAamQ,kBAKb,GAJAgzC,EAAGzyD,aAAa,KAAM0yD,GACtBD,EAAGvyD,YAAYijB,GACfrlB,KAAKmyB,WAAWC,KAAKhwB,YAAYuyD,GAE7B30D,KAAKytD,aAAc,CACrB,IAAIoH,EAAUtxC,SAAS,KACvBsxC,EAAQ3yD,aAAa,YAAa,OAAS4qD,kBAAoB,IAAM8H,EAAS,KAC9EC,EAAQzyD,YAAYpC,KAAK6uD,cACzB7uD,KAAKi0D,mBAAqBY,EAEtBV,EACFA,EAAmB/xD,YAAYpC,KAAKi0D,oBAEpCj0D,KAAK4uD,YAAc5uD,KAAKi0D,kBAEpC,MACUj0D,KAAK6uD,aAAa3sD,aAAa,YAAa,OAAS4qD,kBAAoB,IAAM8H,EAAS,IAE3F,CAEoB,IAAjB50D,KAAKuQ,KAAKo+C,IACZ3uD,KAAKyuD,cAER,EACDqG,cAAe,WACT90D,KAAK0pD,eAAe8H,SACtBxxD,KAAKi0D,mBAAmB/xD,aAAa,YAAalC,KAAK0pD,eAAehR,IAAI5F,WAGxE9yC,KAAK0pD,eAAe+H,QACtBzxD,KAAKi0D,mBAAmB/xD,aAAa,UAAWlC,KAAK0pD,eAAeC,MAAMt+C,EAAEjK,EAE/E,EACD2zD,mBAAoB,WAClB/0D,KAAK6uD,aAAe,KACpB7uD,KAAKg0D,aAAe,KACpBh0D,KAAK+tD,YAAYzgC,SAClB,EACD8hC,eAAgB,WACd,OAAIpvD,KAAKuQ,KAAKmkD,GACL,KAGE10D,KAAC4uD,WACb,EACDoG,2BAA4B,WAC1Bh1D,KAAK+tD,YAAc,gBAAgB/tD,KAAKuQ,KAAMvQ,KAAMA,KAAKmyB,YACzDnyB,KAAKi1D,yBAA2B,IAAIpB,WAAW7zD,KAChD,EACDk1D,SAAU,SAAkBC,GAC1B,IAAKn1D,KAAKq0D,WAAWc,GAAY,CAC/B,IACS3C,EACFE,EACH0C,EACAb,EAJEzuC,EAAG9lB,KAAK6sD,QAAU,IAAMsI,EAM9B,GAAkB,IAAdA,GAAiC,IAAdA,EAAiB,CACtC,MAAa5xC,SAAS,QACtB8xC,EAAOnzD,aAAa,KAAM4jB,GAC1BuvC,EAAOnzD,aAAa,YAA2B,IAAdizD,EAAkB,YAAc,UACjEC,EAAa7xC,SAAS,QACXoK,eAAe,+BAAgC,OAAQ,IAAM3tB,KAAK6sD,SAC7EwI,EAAOjzD,YAAYgzD,GACnBp1D,KAAKmyB,WAAWC,KAAKhwB,YAAYizD,GAE5BzC,eAAe3G,UAA0B,IAAdkJ,IAC9BE,EAAOnzD,aAAa,YAAa,aACjCswD,EAAQ7wC,kBACR+wC,EAAMH,eAAeM,aAAaL,GAClCxyD,KAAKmyB,WAAWC,KAAKhwB,YAAYswD,GACjCA,EAAItwD,YAAYmwD,eAAe+C,iCAC/Bf,EAAKhxC,SAAS,MACXnhB,YAAYgzD,GACfC,EAAOjzD,YAAYmyD,GACnBA,EAAGryD,aAAa,SAAU,OAAS4qD,kBAAoB,IAAM0F,EAAQ,KAEjF,MAAe,GAAkB,IAAd2C,EAAiB,CAC1B,IAAaI,EAAGhyC,SAAS,QACzBgyC,EAAUrzD,aAAa,KAAM4jB,GAC7ByvC,EAAUrzD,aAAa,YAAa,SACpC,IAAeszD,EAAGjyC,SAAS,KAC3BgyC,EAAUnzD,YAAYozD,GACtBhD,EAAQ7wC,kBACR+wC,EAAMH,eAAeM,aAAaL,GAElC,IAAIiD,EAAQlyC,SAAS,uBACrBkyC,EAAMvzD,aAAa,KAAM,iBACzBwwD,EAAItwD,YAAYqzD,GAChB,IAAIC,EAASnyC,SAAS,WACtBmyC,EAAOxzD,aAAa,OAAQ,SAC5BwzD,EAAOxzD,aAAa,cAAe,WACnCuzD,EAAMrzD,YAAYszD,GAElB11D,KAAKmyB,WAAWC,KAAKhwB,YAAYswD,GACjC,IAAIiD,EAAYpyC,SAAS,QACzBoyC,EAAUzzD,aAAa,QAASlC,KAAK+lB,KAAKxV,KAAK2zC,GAC/CyR,EAAUzzD,aAAa,SAAUlC,KAAK+lB,KAAKxV,KAAKiB,GAChDmkD,EAAUzzD,aAAa,IAAK,KAC5ByzD,EAAUzzD,aAAa,IAAK,KAC5ByzD,EAAUzzD,aAAa,OAAQ,WAC/ByzD,EAAUzzD,aAAa,UAAW,KAClCszD,EAAYtzD,aAAa,SAAU,OAAS4qD,kBAAoB,IAAM0F,EAAQ,KAC9EgD,EAAYpzD,YAAYuzD,IACxBP,EAAa7xC,SAAS,QACXoK,eAAe,+BAAgC,OAAQ,IAAM3tB,KAAK6sD,SAC7E2I,EAAYpzD,YAAYgzD,GAEnBxC,eAAe3G,WAClBsJ,EAAUrzD,aAAa,YAAa,aACpCwwD,EAAItwD,YAAYmwD,eAAe+C,gCAC/Bf,EAAKhxC,SAAS,KACdiyC,EAAYpzD,YAAYuzD,GACxBpB,EAAGnyD,YAAYpC,KAAK6uD,cACpB2G,EAAYpzD,YAAYmyD,IAG1Bv0D,KAAKmyB,WAAWC,KAAKhwB,YAAYmzD,EAClC,CAEDv1D,KAAKq0D,WAAWc,GAAarvC,CAC9B,CAED,OAAO9lB,KAAKq0D,WAAWc,EACxB,EACDS,SAAU,SAAkB9vC,GACrB9lB,KAAKg0D,cAIVh0D,KAAKg0D,aAAa9xD,aAAa,OAAQ,OAAS4qD,kBAAoB,IAAMhnC,EAAK,IAChF,GAUH+vC,iBAAiBx2D,UAAY,CAM3By2D,cAAe,WAEb91D,KAAK6wD,UAAY,GAEjB7wD,KAAKmvD,WAAY,EACjBnvD,KAAK+1D,gBACN,EASDhF,aAAc,SAAsBF,GAClC7wD,KAAK6wD,UAAYA,CAClB,EAODC,YAAa,WACX9wD,KAAKmvD,WAAY,CAClB,EAOD4G,eAAgB,gBACWx1D,IAArBP,KAAKuQ,KAAKM,QACZ7Q,KAAK+lB,KAAK4qC,sBAAsB3wD,KAAMA,KAAKuQ,KAAKM,OAAQ,GAE3D,GAmEDsK,gBAAgB,CAAC0tC,kBAAmBjtC,oBA7DnB,CACf63C,YAAa,SAAqBljD,EAAM4hB,EAAYpM,GAClD/lB,KAAKkiC,YACLliC,KAAKgrD,aAAaz6C,EAAM4hB,EAAYpM,GACpC/lB,KAAKuxD,cAAchhD,EAAM4hB,EAAYpM,GACrC/lB,KAAK81D,gBACL91D,KAAK8oD,iBACL9oD,KAAK8zD,sBACL9zD,KAAK+zD,0BACL/zD,KAAKg1D,6BACLh1D,KAAKg2D,gBACLh2D,KAAKi3B,MACN,EACDA,KAAM,WAECj3B,KAAKgpD,QAAYhpD,KAAK+oD,YAAa/oD,KAAKipD,iBAChCjpD,KAAK4uD,aAAe5uD,KAAK6uD,cAC/BhtD,MAAMse,QAAU,OACrBngB,KAAKgpD,QAAS,EAEjB,EACD9xB,KAAM,WAEAl3B,KAAK+oD,YAAc/oD,KAAKipD,gBACrBjpD,KAAKuQ,KAAKmkD,MACF10D,KAAK4uD,aAAe5uD,KAAK6uD,cAC/BhtD,MAAMse,QAAU,SAGvBngB,KAAKgpD,QAAS,EACdhpD,KAAKynC,eAAgB,EAExB,EACDxS,YAAa,WAGPj1B,KAAKuQ,KAAKmkD,IAAM10D,KAAKgpD,SAIzBhpD,KAAK2xD,kBACL3xD,KAAK8pD,mBACL9pD,KAAK80D,gBACL90D,KAAKi2D,qBAEDj2D,KAAKynC,gBACPznC,KAAKynC,eAAgB,GAExB,EACDwuB,mBAAoB,WAA8B,EAClDxmC,aAAc,SAAsB85B,GAClCvpD,KAAKonC,MAAO,EACZpnC,KAAKspD,uBAAuBC,GAC5BvpD,KAAKivD,kBAAkB1F,EAAKvpD,KAAK+oD,WACjC/oD,KAAKypD,mBACN,EACDn8B,QAAS,WACPttB,KAAKk2D,UAAY,KACjBl2D,KAAK+0D,oBACN,KAEmExB,sBAcxEp4C,gBAAgB,CAAC0vC,YAAaa,iBAAkB4H,eAAgBuC,iBAAkB7G,aAAcuE,sBAAuBC,eAEvHA,cAAcn0D,UAAU22D,cAAgB,WACtC,IAAar5C,EAAG3c,KAAKmyB,WAAW3F,cAAcxsB,KAAK2rB,WACnD3rB,KAAKk2D,UAAY3yC,SAAS,SAC1BvjB,KAAKk2D,UAAUh0D,aAAa,QAASlC,KAAK2rB,UAAUu4B,EAAI,MACxDlkD,KAAKk2D,UAAUh0D,aAAa,SAAUlC,KAAK2rB,UAAUna,EAAI,MACzDxR,KAAKk2D,UAAUh0D,aAAa,sBAAuBlC,KAAK2rB,UAAUwqC,IAAMn2D,KAAKmyB,WAAWy3B,aAAawM,0BACrGp2D,KAAKk2D,UAAUvoC,eAAe,+BAAgC,OAAQhR,GACtE3c,KAAK6uD,aAAazsD,YAAYpC,KAAKk2D,UACvC,EAEE1C,cAAcn0D,UAAU0qD,iBAAmB,WACzC,OAAW/pD,KAAC0zD,UAChB,EASEE,cAAcv0D,UAAY,CACxBg3D,oBAAqB,SAA6B9lD,GAChD,IAAI1I,EACG0T,EAAGvb,KAAKs2D,eAAe91D,OAE9B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKs2D,eAAezuD,GAAGwiC,SAAS95B,EAEnC,EACDgmD,2BAA4B,SAAoChmD,GAI9D,IAHA,IACOgL,EAAGvb,KAAKs2D,eAAe91D,OADtB,EAGG+a,GACT,GAAIvb,KAAKs2D,eAJH,GAIqBE,oBAAoBjmD,GAC7C,OAAW,EAIf,OAAO,CACR,EACDkmD,gBAAiB,WACf,GAAKz2D,KAAKs2D,eAAe91D,OAAzB,CAIA,IAAKqH,EACD0T,EAAMvb,KAAK4lB,OAAOplB,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK4lB,OAAO/d,GAAGk9B,GAAGyG,QAMpB,IAAK3jC,GAHL0T,EAAMvb,KAAKs2D,eAAe91D,QAGX,EAAGqH,GAAK,IACA7H,KAAKs2D,eAAezuD,GAAG0uC,cAAcv2C,KAAKynC,eADvC5/B,GAAK,GAZ9B,CAoBF,EACD6uD,uBAAwB,SAAgC1+B,GAKtD,IAJA,IAAY7f,EAAGnY,KAAK22D,kBAChB9uD,EAAI,EACD0T,EAAGpD,EAAS3X,OAEZqH,EAAI0T,GAAK,CACd,GAAIpD,EAAStQ,GAAGmwB,OAASA,EACvB,OAAe7f,EAACtQ,GAAGqhC,IAGrBrhC,GAAK,CACN,CAED,OAAO,CACR,EACD+uD,oBAAqB,SAA6B5+B,EAAMkR,GAItD,IAHA,IAAY/wB,EAAGnY,KAAK22D,kBAChB9uD,EAAIsQ,EAAS3X,OAEVqH,GAGL,GAAIsQ,EAFJtQ,GAAK,GAEWmwB,OAASA,EAEvB,YADA7f,EAAStQ,GAAGqhC,IAAMA,GAKtB/wB,EAASnT,KAAK,IAAoB2uD,iBAAC37B,EAAMkR,GAC1C,EACDzZ,aAAc,SAAsB85B,GAClCvpD,KAAKspD,uBAAuBC,GAC5BvpD,KAAKivD,kBAAkB1F,EAAKvpD,KAAK+oD,UAClC,GAGH,IAAe8N,YAAG,CAChB,EAAG,OACH,EAAG,QACH,EAAG,UAEDC,aAAe,CACjB,EAAG,QACH,EAAG,QACH,EAAG,SAGL,SAAqBC,aAACC,EAAcC,EAAO/sB,GACzClqC,KAAKk3D,OAAS,GACdl3D,KAAKwB,OAAS,GACdxB,KAAKg3D,aAAeA,EACpBh3D,KAAKm3D,KAAO,GACZn3D,KAAK+kC,GAAKmF,EACVlqC,KAAKo3D,IAAMH,EAIXj3D,KAAKyoC,cAAgByB,EAAM/+B,EAK3B,IAHA,IAAKtD,EAAG,EACJ0T,EAAMy7C,EAAax2D,OAEhBqH,EAAI0T,GAAK,CACd,GAAIy7C,EAAanvD,GAAGs6C,OAAO3Z,kBAAkBhoC,OAAQ,CACnDR,KAAKyoC,aAAc,EACnB,KACD,CAED5gC,GAAK,CACN,CACF,CAMD,sBAAsB0I,EAAM0mD,GAC1Bj3D,KAAKuQ,KAAOA,EACZvQ,KAAKgD,KAAOuN,EAAKiV,GACjBxlB,KAAKiM,EAAI,GACTjM,KAAKo3D,IAAMH,EACXj3D,KAAKonC,MAAO,EACZpnC,KAAK+nB,QAAqB,IAAZxX,EAAKmkD,GACnB10D,KAAKq3D,MAAQ9zC,SAAS,QACtBvjB,KAAKs3D,OAAS,IACf,CAOD,SAAqBC,aAACv/B,EAAMznB,EAAMsgB,EAAU/Z,GAU1C,IAAKjP,EATL7H,KAAKg4B,KAAOA,EACZh4B,KAAKsnC,SAAW,EAChBtnC,KAAKw3D,UAAYx5C,iBAAiBzN,EAAK/P,QACvCR,KAAK6wB,SAAWA,EAChB7wB,KAAKmL,GAAI,EACTnL,KAAKy3D,QAAU,GACfz3D,KAAK03D,UAAYh6C,iBAAiB,UAAWnN,EAAK/P,OAAS+P,EAAK/P,OAAS,EAAI,GAC7ER,KAAK23D,WAAaj6C,iBAAiB,UAAW,GAC9C1d,KAAK2oC,6BAA6B7xB,GAElC,IACI4E,EADGH,EAAGhL,EAAK/P,QAAU,EAGzB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB6T,EAAOumB,gBAAgBqG,QAAQtQ,EAAMznB,EAAK1I,GAAGzG,EAAG,EAAG,EAAGpB,MACtDA,KAAKmL,EAAIuQ,EAAKvQ,GAAKnL,KAAKmL,EACxBnL,KAAKw3D,UAAU3vD,GAAK,CAClBuJ,EAAGb,EAAK1I,GAAGuJ,EACXhM,EAAGsW,GAIF1b,KAAKmL,GACRnL,KAAKioC,UAAS,GAGhBjoC,KAAKyoC,YAAczoC,KAAKmL,CACzB,CAmCD,SAA2BysD,mBAAC5/B,EAAMznB,EAAMsnD,GACtC73D,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKioC,SAAWjoC,KAAK0oC,yBACrB1oC,KAAKqL,EAAI42B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKlF,EAAG,EAAG,IAAMrL,MACxDA,KAAKkkD,EAAIjiB,gBAAgBqG,QAAQtQ,EAAMznB,EAAK2zC,EAAG,EAAG,KAAMlkD,MACxDA,KAAKiM,EAAI,IAAIsrD,aAAav/B,EAAMznB,EAAKtE,GAAK,CAAE,EAAE,MAAOjM,MACrDA,KAAKgJ,EAAIi5B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKvH,EAAG,EAAG,IAAKhJ,MACvDA,KAAK6B,MAAQg2D,EACb73D,KAAKyoC,cAAgBzoC,KAAKyoC,WAC3B,CAID,SAAyBqvB,iBAAC9/B,EAAMznB,EAAMsnD,GACpC73D,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKioC,SAAWjoC,KAAK0oC,yBACrB1oC,KAAKqL,EAAI42B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKlF,EAAG,EAAG,IAAMrL,MACxDA,KAAKgJ,EAAIi5B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKvH,EAAG,EAAG,IAAKhJ,MACvDA,KAAK6B,MAAQg2D,CACd,CAID,SAAuBE,eAAC//B,EAAMznB,EAAMsnD,GAClC73D,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKioC,SAAWjoC,KAAK0oC,yBACrB1oC,KAAK6B,MAAQg2D,CACd,CAID,SAASG,iBAAiBhgC,EAAMznB,EAAMuG,GACpC9W,KAAKuQ,KAAOA,EACZvQ,KAAKgJ,EAAI0U,iBAAiB,SAAmB,EAATnN,EAAKnL,GACzC,IAAI6yD,EAAU1nD,EAAKpF,EAAEA,EAAE,GAAGxJ,EAAI4O,EAAKpF,EAAEA,EAAE,GAAGxJ,EAAEnB,OAAkB,EAAT+P,EAAKnL,EAAQmL,EAAKpF,EAAEA,EAAE3K,OAAkB,EAAT+P,EAAKnL,EACzFpF,KAAKqL,EAAIqS,iBAAiB,UAAWu6C,GACrCj4D,KAAKk4D,OAAQ,EACbl4D,KAAKm4D,OAAQ,EACbn4D,KAAKo4D,aAAep4D,KAAKq4D,mBACzBr4D,KAAKs4D,YAAcL,EACnBj4D,KAAK2oC,6BAA6B7xB,GAClC9W,KAAK0b,KAAOumB,gBAAgBqG,QAAQtQ,EAAMznB,EAAKpF,EAAG,EAAG,KAAMnL,MAC3DA,KAAKmL,EAAInL,KAAK0b,KAAKvQ,EACnBnL,KAAKioC,UAAS,EACf,CAqFD,SAASswB,yBAAyBvgC,EAAMznB,EAAMsnD,GAC5C73D,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKioC,SAAWjoC,KAAK0oC,yBACrB1oC,KAAKw4D,iBAAiBxgC,EAAMznB,EAAMsnD,EACnC,CAyFD,SAASY,2BAA2BzgC,EAAMznB,EAAMsnD,GAC9C73D,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAKioC,SAAWjoC,KAAK0oC,yBACrB1oC,KAAKkkD,EAAIjiB,gBAAgBqG,QAAQtQ,EAAMznB,EAAK2zC,EAAG,EAAG,KAAMlkD,MACxDA,KAAKiM,EAAI,IAAgBsrD,aAACv/B,EAAMznB,EAAKtE,GAAK,CAAE,EAAE,MAAOjM,MACrDA,KAAKw4D,iBAAiBxgC,EAAMznB,EAAMsnD,GAClC73D,KAAKyoC,cAAgBzoC,KAAKyoC,WAC3B,CAID,SAASiwB,iBACP14D,KAAKmmB,GAAK,GACVnmB,KAAK24D,aAAe,GACpB34D,KAAK44D,GAAKr1C,SAAS,IACpB,CAED,SAAyBs1C,iBAAC1W,EAAQh7B,EAAIrQ,GACpC9W,KAAKqvC,UAAY,CACf8S,OAAQA,EACRh7B,GAAIA,EACJrQ,UAAWA,GAEb9W,KAAKmY,SAAW,GAChBnY,KAAKyoC,YAAczoC,KAAKqvC,UAAU8S,OAAO3Z,kBAAkBhoC,QAAUR,KAAKqvC,UAAUloB,GAAGogB,gBAAgB/mC,MACxG,CA1UDu2D,aAAa13D,UAAUq2C,cAAgB,WACrC11C,KAAKyoC,aAAc,CACvB,EAaEqwB,aAAaz5D,UAAUmsC,MAAQ,WAC7BxrC,KAAKiM,EAAI,GACTjM,KAAKonC,MAAO,CAChB,EAgCEmwB,aAAal4D,UAAU4oC,SAAW,SAAU0Q,GAC1C,IAAI34C,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,SAAYqR,KAItD34C,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,QACpCtnC,KAAK0oC,2BACL1oC,KAAKonC,KAAOpnC,KAAKonC,MAAQuR,EAErB34C,KAAKonC,MAAM,CACb,IAAIv/B,EAAI,EACD0T,EAAGvb,KAAKw3D,UAAUh3D,OAMzB,IAJsB,QAAlBR,KAAK6wB,WACP7wB,KAAKy3D,QAAU,IAGZ5vD,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACI,MAAxB7H,KAAKw3D,UAAU3vD,GAAGuJ,EACE,QAAlBpR,KAAK6wB,SACP7wB,KAAKy3D,SAAW,IAAMz3D,KAAKw3D,UAAU3vD,GAAGzC,EAAEhE,EAE1CpB,KAAK03D,UAAU7vD,GAAK7H,KAAKw3D,UAAU3vD,GAAGzC,EAAEhE,EAG1CpB,KAAK23D,WAAW,GAAK33D,KAAKw3D,UAAU3vD,GAAGzC,EAAEhE,CAG9C,CACL,EAEE+Z,gBAAgB,CAACotB,0BAA2BgvB,cAa5Cp8C,gBAAgB,CAACotB,0BAA2BqvB,oBAU5Cz8C,gBAAgB,CAACotB,0BAA2BuvB,kBAQ5C38C,gBAAgB,CAACotB,0BAA2BwvB,gBAiB5CC,iBAAiB34D,UAAU05D,cAAgB,SAAU93D,EAAQs5B,GAK3D,IAJA,IAAK1yB,EAAG,EACJ0T,EAAMvb,KAAKqL,EAAE7K,OAAS,EAGnBqH,EAAI0T,GAAK,CAGd,GAFO3P,KAAKyT,IAAIpe,EAAW,EAAJ4G,GAAS5G,EAAgB,EAATs5B,EAAiB,EAAJ1yB,IAEzC,IACT,OAAY,EAGdA,GAAK,CACN,CAED,OAAW,CACf,EAEEmwD,iBAAiB34D,UAAUg5D,iBAAmB,WAC5C,GAAIr4D,KAAKqL,EAAE7K,OAAS,GAAMR,KAAKgJ,EAAExI,OAAS,EACxC,OAAY,EAGd,GAAIR,KAAKuQ,KAAKpF,EAAEA,EAAE,GAAGxJ,EAInB,IAHA,IAAKkG,EAAG,EACJ0T,EAAMvb,KAAKuQ,KAAKpF,EAAEA,EAAE3K,OAEjBqH,EAAI0T,GAAK,CACd,IAAKvb,KAAK+4D,cAAc/4D,KAAKuQ,KAAKpF,EAAEA,EAAEtD,GAAGlG,EAAG3B,KAAKuQ,KAAKnL,GACpD,OAAY,EAGdyC,GAAK,CACN,MACI,IAAK7H,KAAK+4D,cAAc/4D,KAAKuQ,KAAKpF,EAAEA,EAAGnL,KAAKuQ,KAAKnL,GACtD,OAAO,EAGT,OAAO,CACX,EAEE4yD,iBAAiB34D,UAAU4oC,SAAW,SAAU0Q,GAM9C,GALA34C,KAAK0b,KAAKusB,WACVjoC,KAAKonC,MAAO,EACZpnC,KAAKk4D,OAAQ,EACbl4D,KAAKm4D,OAAQ,EAETn4D,KAAK0b,KAAK0rB,MAAQuR,EAAa,CACjC,IAAI9wC,EAEAs/B,EACG7nB,EAFA/D,EAAiB,EAAdvb,KAAKuQ,KAAKnL,EAIpB,IAAKyC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBs/B,EAAOt/B,EAAI,GAAM,EAAI,IAAM,IAC3ByX,EAAM1T,KAAKkU,MAAM9f,KAAK0b,KAAKta,EAAEyG,GAAKs/B,GAE9BnnC,KAAKgJ,EAAEnB,KAAOyX,IAChBtf,KAAKgJ,EAAEnB,GAAKyX,EACZtf,KAAKk4D,OAASvf,GAIlB,GAAI34C,KAAKqL,EAAE7K,OAGT,IAFA+a,EAAMvb,KAAK0b,KAAKta,EAAEZ,OAEbqH,EAAkB,EAAd7H,KAAKuQ,KAAKnL,EAAOyC,EAAI0T,EAAK1T,GAAK,EACtCs/B,EAAOt/B,EAAI,GAAM,EAAI,IAAM,EAC3ByX,EAAMzX,EAAI,GAAM,EAAI+D,KAAKkU,MAAuB,IAAjB9f,KAAK0b,KAAKta,EAAEyG,IAAY7H,KAAK0b,KAAKta,EAAEyG,GAE/D7H,KAAKqL,EAAExD,EAAkB,EAAd7H,KAAKuQ,KAAKnL,KAAWka,IAClCtf,KAAKqL,EAAExD,EAAkB,EAAd7H,KAAKuQ,KAAKnL,GAASka,EAC9Btf,KAAKm4D,OAASxf,GAKpB34C,KAAKonC,MAAQuR,CACd,CACL,EAEEx9B,gBAAgB,CAACotB,0BAA2ByvB,kBAQ5CO,yBAAyBl5D,UAAUm5D,iBAAmB,SAAUxgC,EAAMznB,EAAMsnD,GAC1E73D,KAAKqL,EAAI42B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKlF,EAAG,EAAG,IAAMrL,MACxDA,KAAK2B,EAAIsgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAK5O,EAAG,EAAG,KAAM3B,MACxDA,KAAK0D,EAAIu+B,gBAAgBqG,QAAQtQ,EAAMznB,EAAK7M,EAAG,EAAG,KAAM1D,MACxDA,KAAKwR,EAAIywB,gBAAgBqG,QAAQtQ,EAAMznB,EAAKiB,GAAK,CAC/CrG,EAAG,GACF,EAAG,IAAMnL,MACZA,KAAKsnB,EAAI2a,gBAAgBqG,QAAQtQ,EAAMznB,EAAK+W,GAAK,CAC/Cnc,EAAG,GACF,EAAGsU,UAAWzf,MACjBA,KAAK+hB,EAAI,IAAoBi2C,iBAAChgC,EAAMznB,EAAKwR,EAAG/hB,MAC5CA,KAAK6B,MAAQg2D,EACb73D,KAAKg5D,MAAQ,GACbh5D,KAAKi5D,gBAAgBpB,EAAQR,MAAO9mD,GACpCvQ,KAAKk5D,mBAAmB3oD,EAAMsnD,GAC9B73D,KAAKyoC,cAAgBzoC,KAAKyoC,WAC9B,EAEE8vB,yBAAyBl5D,UAAU45D,gBAAkB,SAAUE,EAAa5oD,GAC1E,IAAI6oD,EAAaz3C,kBACb03C,EAAQ91C,SAAoB,IAAXhT,EAAKlI,EAAU,iBAAmB,kBACvDgxD,EAAMn3D,aAAa,KAAMk3D,GACzBC,EAAMn3D,aAAa,eAAgB,OACnCm3D,EAAMn3D,aAAa,gBAAiB,kBACpC,IACIkzB,EACCtQ,EACDK,EAHK6zC,EAAG,GAMZ,IAFA7zC,EAAkB,EAAX5U,EAAKwR,EAAE3c,EAET0f,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBsQ,EAAO7R,SAAS,QAChB81C,EAAMj3D,YAAYgzB,GAClB4jC,EAAMh0D,KAAKowB,GAGb+jC,EAAYj3D,aAAyB,OAAZqO,EAAKiV,GAAc,OAAS,SAAU,OAASsnC,kBAAoB,IAAMsM,EAAa,KAC/Gp5D,KAAKs5D,GAAKD,EACVr5D,KAAKu5D,IAAMP,CACf,EAEET,yBAAyBl5D,UAAU65D,mBAAqB,SAAU3oD,EAAMsnD,GACtE,GAAI73D,KAAK+hB,EAAEu2C,cAAgBt4D,KAAK+hB,EAAEq2C,aAAc,CAC9C,IAAQhjC,EACJtQ,EACIK,EACJynC,EAAOrpC,SAAS,QAChBqoC,EAAcroC,SAAS,QAC3BqpC,EAAKxqD,YAAYwpD,GACjB,IAAI4N,EAAY73C,kBACZ83C,EAAS93C,kBACbirC,EAAK1qD,aAAa,KAAMu3D,GACxB,IAAUC,EAAGn2C,SAAoB,IAAXhT,EAAKlI,EAAU,iBAAmB,kBACxDqxD,EAAOx3D,aAAa,KAAMs3D,GAC1BE,EAAOx3D,aAAa,eAAgB,OACpCw3D,EAAOx3D,aAAa,gBAAiB,kBACrCijB,EAAO5U,EAAKwR,EAAE5W,EAAEA,EAAE,GAAGxJ,EAAI4O,EAAKwR,EAAE5W,EAAEA,EAAE,GAAGxJ,EAAEnB,OAAS+P,EAAKwR,EAAE5W,EAAEA,EAAE3K,OAC7D,IAAIw4D,EAAQh5D,KAAKg5D,MAEjB,IAAKl0C,EAAe,EAAXvU,EAAKwR,EAAE3c,EAAO0f,EAAIK,EAAML,GAAK,GACpCsQ,EAAO7R,SAAS,SACXrhB,aAAa,aAAc,oBAChCw3D,EAAOt3D,YAAYgzB,GACnB4jC,EAAMh0D,KAAKowB,GAGbw2B,EAAY1pD,aAAyB,OAAZqO,EAAKiV,GAAc,OAAS,SAAU,OAASsnC,kBAAoB,IAAM0M,EAAY,KAE9F,OAAZjpD,EAAKiV,KACPomC,EAAY1pD,aAAa,iBAAkB20D,YAAYtmD,EAAKopD,IAAM,IAClE/N,EAAY1pD,aAAa,kBAAmB40D,aAAavmD,EAAKozC,IAAM,IAEpD,IAAZpzC,EAAKozC,IACPiI,EAAY1pD,aAAa,oBAAqBqO,EAAKmzC,KAIvD1jD,KAAK45D,GAAKF,EACV15D,KAAK65D,GAAKjN,EACV5sD,KAAK85D,IAAMd,EACXh5D,KAAKy5D,OAASA,EACd5B,EAAQP,OAAS1L,CAClB,CACL,EAEEzwC,gBAAgB,CAACotB,0BAA2BgwB,0BAW5Cp9C,gBAAgB,CAACo9C,yBAA0BhwB,0BAA2BkwB,4BAkBtE,IAAoBsB,iBAAG,SAA0B3H,EAAW5xD,EAAQunB,EAAQ2wB,GAC1E,GAAe,IAAXl4C,EACF,MAAO,GAGT,IAGIqH,EAHEmyD,EAAG5H,EAAU/mD,EACf4uD,EAAK7H,EAAUvqD,EACbY,EAAG2pD,EAAUhxD,EAEJ84D,EAAG,KAAOxhB,EAAIhG,wBAAwBjqC,EAAG,GAAG,GAAIA,EAAG,GAAG,IAErE,IAAKZ,EAAI,EAAGA,EAAIrH,EAAQqH,GAAK,EAC3BqyD,GAAe,KAAOxhB,EAAIhG,wBAAwBsnB,EAAGnyD,EAAI,GAAG,GAAImyD,EAAGnyD,EAAI,GAAG,IAAM,IAAM6wC,EAAIhG,wBAAwBunB,EAAGpyD,GAAG,GAAIoyD,EAAGpyD,GAAG,IAAM,IAAM6wC,EAAIhG,wBAAwBjqC,EAAGZ,GAAG,GAAIY,EAAGZ,GAAG,IAQ5L,OALIkgB,GAAUvnB,IACZ05D,GAAe,KAAOxhB,EAAIhG,wBAAwBsnB,EAAGnyD,EAAI,GAAG,GAAImyD,EAAGnyD,EAAI,GAAG,IAAM,IAAM6wC,EAAIhG,wBAAwBunB,EAAG,GAAG,GAAIA,EAAG,GAAG,IAAM,IAAMvhB,EAAIhG,wBAAwBjqC,EAAG,GAAG,GAAIA,EAAG,GAAG,IAC1LyxD,GAAe,KAGVA,CACX,sBAE4B,WACxB,IAAmBC,EAAG,IAAIlsB,OAEtBmsB,EAAgB,IAAUnsB,OAqC9B,SAASosB,EAAuBC,EAAWC,EAAUrI,IAC/CA,GAAgBqI,EAASlrB,UAAUloB,GAAGigB,OACxCmzB,EAASlrB,UAAUv4B,UAAU5U,aAAa,UAAWq4D,EAASlrB,UAAUloB,GAAG/lB,IAGzE8wD,GAAgBqI,EAASlrB,UAAU8S,OAAO/a,OAC5CmzB,EAASlrB,UAAUv4B,UAAU5U,aAAa,YAAaq4D,EAASlrB,UAAU8S,OAAO/gD,EAAE0xC,UAEtF,CAED,SAAS0nB,IAAa,CAEtB,SAAmBC,EAACH,EAAWC,EAAUrI,GACvC,IAAKptC,EACDK,EACqBu1C,EACrBC,EACAvI,EACCxkD,EAGDs9B,EACGwN,EACHlyC,IAEC2E,EANDyvD,EAAOL,EAAS/4D,OAAOhB,OACpB42D,EAAGmD,EAASnD,IAOnB,IAAKxpD,EAAI,EAAGA,EAAIgtD,EAAMhtD,GAAK,EAAG,CAG5B,GAFA+sD,EAASJ,EAASx1B,GAAGqC,MAAQ8qB,EAEzBqI,EAAS/4D,OAAOoM,GAAGwpD,IAAMA,EAAK,CAKhC,IAJA1e,EAAM0hB,EAAc5uB,QACpBqvB,EAAazD,EAAMmD,EAAS/4D,OAAOoM,GAAGwpD,IACtCjsD,EAAIovD,EAASvD,aAAax2D,OAAS,GAE3Bm6D,GAAUE,EAAa,GAC7BF,EAASJ,EAASvD,aAAa7rD,GAAGg3C,OAAO/a,MAAQuzB,EACjDE,GAAc,EACd1vD,GAAK,EAGP,GAAIwvD,EAIF,IAHAE,EAAazD,EAAMmD,EAAS/4D,OAAOoM,GAAGwpD,IACtCjsD,EAAIovD,EAASvD,aAAax2D,OAAS,EAE5Bq6D,EAAa,GAClBr0D,EAAQ+zD,EAASvD,aAAa7rD,GAAGg3C,OAAO/gD,EAAEoF,MAC1CkyC,EAAIrJ,UAAU7oC,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,KAC/Kq0D,GAAc,EACd1vD,GAAK,CAGnB,MACUutC,EAAMyhB,EAMR,GAFAh1C,GADA+lB,EAAQqvB,EAASx1B,GAAGmG,OACP1O,QAETm+B,EAAQ,CAGV,IAFAD,EAAwB,GAEnB51C,EAAI,EAAGA,EAAIK,EAAML,GAAK,GACzBstC,EAAYlnB,EAAMtlB,OAAOd,KAERstC,EAAU51B,UACzBk+B,GAAyBX,iBAAiB3H,EAAWA,EAAU51B,QAAS41B,EAAUppD,EAAG0vC,IAIzF6hB,EAASrD,OAAOtpD,GAAK8sD,CAC/B,MACUA,EAAwBH,EAASrD,OAAOtpD,GAG1C2sD,EAAS/4D,OAAOoM,GAAG3B,IAAsB,IAAjBquD,EAAU5F,GAAc,GAAKgG,EACrDH,EAAS/4D,OAAOoM,GAAGw5B,KAAOuzB,GAAUJ,EAAS/4D,OAAOoM,GAAGw5B,IACxD,CACF,CAED,SAAmB0zB,EAACR,EAAWC,EAAUrI,GACvC,IAAI6I,EAAYR,EAAS14D,OAErB04D,EAASvxD,EAAEo+B,MAAQ8qB,IACrB6I,EAAU1D,MAAMn1D,aAAa,OAAQ,OAAS0c,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,IAAMwd,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,IAAMwd,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,MAGzIm5D,EAASlvD,EAAE+7B,MAAQ8qB,IACrB6I,EAAU1D,MAAMn1D,aAAa,eAAgBq4D,EAASlvD,EAAEjK,EAE3D,CAED,WAA8Bk5D,EAAWC,EAAUrI,GACjD8I,EAAeV,EAAWC,EAAUrI,GACpC+I,EAAaX,EAAWC,EAAUrI,EACnC,CAED,SAAuB8I,EAACV,EAAWC,EAAUrI,GAC3C,IAsBS8G,EACLnxD,EACG0T,EACH6Z,EA+CKqY,EAxEL4rB,EAAQkB,EAASjB,GACP4B,EAAGX,EAASx4C,EAAEu2C,YACrBx6B,EAAGy8B,EAAS54D,EAAEP,EACjB28B,EAAMw8B,EAAS72D,EAAEtC,EAErB,GAAIm5D,EAASlvD,EAAE+7B,MAAQ8qB,EAAc,CACnC,IAAI7sD,EAAwB,OAAjBi1D,EAAU90C,GAAc,eAAiB,iBACpD+0C,EAAS14D,MAAMw1D,MAAMn1D,aAAamD,EAAMk1D,EAASlvD,EAAEjK,EACpD,CAED,GAAIm5D,EAAS54D,EAAEylC,MAAQ8qB,EAAc,CACnC,IAAIiJ,EAAwB,IAAhBb,EAAUjyD,EAAU,KAAO,KACnC+yD,EAAkB,OAAVD,EAAiB,KAAO,KACpC9B,EAAMn3D,aAAai5D,EAAOr9B,EAAI,IAC9Bu7B,EAAMn3D,aAAak5D,EAAOt9B,EAAI,IAE1Bo9B,IAAeX,EAASx4C,EAAEq2C,eAC5BmC,EAASX,GAAG13D,aAAai5D,EAAOr9B,EAAI,IACpCy8B,EAASX,GAAG13D,aAAak5D,EAAOt9B,EAAI,IAEvC,CAOD,GAAIy8B,EAASx4C,EAAEm2C,OAAShG,EAAc,CACpC8G,EAAQuB,EAAShB,IACjB,IAAI8B,EAAUd,EAASx4C,EAAE/Y,EAGzB,IAFAuS,EAAMy9C,EAAMx4D,OAEPqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACxButB,EAAO4jC,EAAMnxD,IACR3F,aAAa,SAAUm5D,EAAY,EAAJxzD,GAAS,KAC7CutB,EAAKlzB,aAAa,aAAc,OAASm5D,EAAY,EAAJxzD,EAAQ,GAAK,IAAMwzD,EAAY,EAAJxzD,EAAQ,GAAK,IAAMwzD,EAAY,EAAJxzD,EAAQ,GAAK,IAEvH,CAED,GAAIqzD,IAAeX,EAASx4C,EAAEo2C,OAASjG,GAAe,CACpD,IAAIoJ,EAAUf,EAASx4C,EAAE1W,EAUzB,IAFAkQ,GALEy9C,EADEuB,EAASx4C,EAAEq2C,aACLmC,EAAShB,IAETgB,EAAST,KAGPt5D,OAEPqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxButB,EAAO4jC,EAAMnxD,GAER0yD,EAASx4C,EAAEq2C,cACdhjC,EAAKlzB,aAAa,SAAUo5D,EAAY,EAAJzzD,GAAS,KAG/CutB,EAAKlzB,aAAa,eAAgBo5D,EAAY,EAAJzzD,EAAQ,GAErD,CAED,GAAoB,IAAhByyD,EAAUjyD,GACRkyD,EAAS72D,EAAE0jC,MAAQ8qB,KACrBmH,EAAMn3D,aAAa,KAAM67B,EAAI,IAC7Bs7B,EAAMn3D,aAAa,KAAM67B,EAAI,IAEzBm9B,IAAeX,EAASx4C,EAAEq2C,eAC5BmC,EAASX,GAAG13D,aAAa,KAAM67B,EAAI,IACnCw8B,EAASX,GAAG13D,aAAa,KAAM67B,EAAI,WAevC,IATIw8B,EAAS54D,EAAEylC,MAAQmzB,EAAS72D,EAAE0jC,MAAQ8qB,KACxCzkB,EAAM7hC,KAAK+S,KAAK/S,KAAK6S,IAAIqf,EAAI,GAAKC,EAAI,GAAI,GAAKnyB,KAAK6S,IAAIqf,EAAI,GAAKC,EAAI,GAAI,IACzEs7B,EAAMn3D,aAAa,IAAKurC,GAEpBytB,IAAeX,EAASx4C,EAAEq2C,cAC5BmC,EAASX,GAAG13D,aAAa,IAAKurC,IAI9B8sB,EAAS72D,EAAE0jC,MAAQmzB,EAAS/oD,EAAE41B,MAAQmzB,EAASjzC,EAAE8f,MAAQ8qB,EAAc,CACpEzkB,IACHA,EAAM7hC,KAAK+S,KAAK/S,KAAK6S,IAAIqf,EAAI,GAAKC,EAAI,GAAI,GAAKnyB,KAAK6S,IAAIqf,EAAI,GAAKC,EAAI,GAAI,KAG3E,IAAOw9B,EAAG3vD,KAAKu6B,MAAMpI,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/CyD,EAAUg5B,EAAS/oD,EAAEpQ,EAErBmgC,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAGb,IAAQ8b,EAAG5P,EAAMlM,EACZ5G,EAAG/uB,KAAK06B,IAAIi1B,EAAMhB,EAASjzC,EAAElmB,GAAKi8C,EAAOvf,EAAI,GAC7CoG,EAAGt4B,KAAKq6B,IAAIs1B,EAAMhB,EAASjzC,EAAElmB,GAAKi8C,EAAOvf,EAAI,GAClDu7B,EAAMn3D,aAAa,KAAMy4B,GACzB0+B,EAAMn3D,aAAa,KAAMgiC,GAErBg3B,IAAeX,EAASx4C,EAAEq2C,eAC5BmC,EAASX,GAAG13D,aAAa,KAAMy4B,GAC/B4/B,EAASX,GAAG13D,aAAa,KAAMgiC,GAElC,CAGJ,CAED,SAAS+2B,EAAaX,EAAWC,EAAUrI,GACzC,MAAgBqI,EAAS14D,MACpBoK,EAAGsuD,EAAStuD,EAEbA,IAAMA,EAAEm7B,MAAQ8qB,IAAiBjmD,EAAEwrD,UACrCsD,EAAU1D,MAAMn1D,aAAa,mBAAoB+J,EAAEwrD,SACnDsD,EAAU1D,MAAMn1D,aAAa,oBAAqB+J,EAAE0rD,WAAW,KAG7D4C,EAASvxD,IAAMuxD,EAASvxD,EAAEo+B,MAAQ8qB,IACpC6I,EAAU1D,MAAMn1D,aAAa,SAAU,OAAS0c,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,IAAMwd,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,IAAMwd,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,MAG3Im5D,EAASlvD,EAAE+7B,MAAQ8qB,IACrB6I,EAAU1D,MAAMn1D,aAAa,iBAAkBq4D,EAASlvD,EAAEjK,IAGxDm5D,EAASrW,EAAE9c,MAAQ8qB,KACrB6I,EAAU1D,MAAMn1D,aAAa,eAAgBq4D,EAASrW,EAAE9iD,GAEpD25D,EAAUzD,QACZyD,EAAUzD,OAAOp1D,aAAa,eAAgBq4D,EAASrW,EAAE9iD,GAG9D,CAED,MA/QS,CACPo6D,qBAGF,SAA8BjrD,GAC5B,OAAQA,EAAKiV,IACX,IAAK,KACH,OAAiBs1C,EAEnB,IAAK,KACH,OAAqBE,EAEvB,IAAK,KACH,OAA2BS,EAE7B,IAAK,KACH,OAAmBR,EAErB,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACH,OAAiBR,EAEnB,IAAK,KACH,OAA6BJ,EAE/B,IAAK,KACH,OAAiBG,EAEnB,QACE,OAAW,KAEhB,EA+OL,CArR4B,GAuR1B,SAAwBkB,gBAACnrD,EAAM4hB,EAAYpM,GAEzC/lB,KAAK4lB,OAAS,GAEd5lB,KAAKsuD,WAAa/9C,EAAKqV,OAEvB5lB,KAAK27D,WAAa,GAElB37D,KAAKs2D,eAAiB,GAEtBt2D,KAAKuuD,UAAY,GAEjBvuD,KAAK22D,kBAAoB,GAEzB32D,KAAK47D,iBAAmB,GACxB57D,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,GAGnC/lB,KAAK24D,aAAe,EACrB,CAyWD,SAAoBkD,YAACxwD,EAAGywD,EAAI/T,EAAIgU,EAAI/rD,EAAG5K,GACrCpF,KAAKqL,EAAIA,EACTrL,KAAK87D,GAAKA,EACV97D,KAAK+nD,GAAKA,EACV/nD,KAAK+7D,GAAKA,EACV/7D,KAAKgQ,EAAIA,EACThQ,KAAKoF,EAAIA,EACTpF,KAAKonC,KAAO,CACV/7B,GAAG,EACHywD,KAAMA,EACN/T,KAAMA,EACNgU,KAAMA,EACN/rD,GAAG,EACH5K,GAAG,EAEN,CAkDD,SAAS42D,aAAahkC,EAAMznB,GAC1BvQ,KAAKi8D,SAAWnhD,oBAChB9a,KAAK0iC,GAAK,GACV1iC,KAAKoB,EAAI,GACTpB,KAAK2nC,IAAK,EACV3nC,KAAKynC,eAAgB,EACrBznC,KAAKonC,MAAO,EACZpnC,KAAKuQ,KAAOA,EACZvQ,KAAKg4B,KAAOA,EACZh4B,KAAK+lB,KAAO/lB,KAAKg4B,KAAKjS,KACtB/lB,KAAKk8D,UAAY,EACjBl8D,KAAKm8D,WAAY,EACjBn8D,KAAKo8D,gBAAkB,EACvBp8D,KAAKunC,gBAAkB,GACvBvnC,KAAKq8D,YAAc,CACjBC,OAAQ,EACRC,SAAUv8D,KAAKw8D,gBACft6C,EAAG,GACHq9B,OAAQ,GACRC,QAAS,GACTuc,GAAI,GACJj3C,EAAG,GACH23C,cAAe,GACf7uD,EAAG,GACH8uD,GAAI,EACJC,WAAY,GACZC,GAAI,GACJhD,GAAI,GACJj4D,EAAG,GACHomD,GAAI,GACJ+T,GAAI,EACJzzD,EAAG,EACHs3C,GAAI,EACJ1Q,GAAI,EACJ4tB,GAAI,KACJC,eAAe,EACfC,iBAAiB,EACjBC,iBAAiB,EACjBC,QAAS,EACTC,UAAW,EACXC,UAAW,GACXC,gBAAiB,EACjBl1C,YAAY,GAEdloB,KAAKq9D,SAASr9D,KAAKq8D,YAAar8D,KAAKuQ,KAAKtE,EAAEd,EAAE,GAAGxJ,GAE5C3B,KAAKs9D,kBACRt9D,KAAKu9D,iBAAiBv9D,KAAKq8D,YAE9B,CAzdDlhD,gBAAgB,CAAC0vC,YAAaa,iBAAkB4H,eAAgBM,cAAeiC,iBAAkB7G,aAAcuE,sBAAuBmI,iBAEtIA,gBAAgBr8D,UAAUm+D,qBAAuB,WAAc,EAE/D9B,gBAAgBr8D,UAAUo+D,eAAiB,IAAUxvB,OAErDytB,gBAAgBr8D,UAAUq+D,yBAA2B,aAErDhC,gBAAgBr8D,UAAU22D,cAAgB,WACxCh2D,KAAK29D,aAAa39D,KAAKsuD,WAAYtuD,KAAKuuD,UAAWvuD,KAAK24D,aAAc34D,KAAK6uD,aAAc,EAAG,IAAI,GAChG7uD,KAAK49D,oBACT,EAMElC,gBAAgBr8D,UAAUu+D,mBAAqB,WAC7C,IAAK/1D,EAEIqiC,EACLplB,EAEKjjB,EAJF0Z,EAAGvb,KAAK4lB,OAAOplB,OAGlB2kB,EAAOnlB,KAAK27D,WAAWn7D,OAEbq9D,EAAG,GACbC,GAAc,EAElB,IAAKh5C,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAAG,CAK5B,IAJAjjB,EAAQ7B,KAAK27D,WAAW72C,GACxBg5C,GAAc,EACdD,EAAWr9D,OAAS,EAEfqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GAGa,KAFrCqiC,EAAQlqC,KAAK4lB,OAAO/d,IAEVrG,OAAOgH,QAAQ3G,KACvBg8D,EAAW74D,KAAKklC,GAChB4zB,EAAc5zB,EAAMzB,aAAeq1B,GAInCD,EAAWr9D,OAAS,GAAKs9D,GAC3B99D,KAAK+9D,oBAAoBF,EAE5B,CACL,EAEEnC,gBAAgBr8D,UAAU0+D,oBAAsB,SAAUn4C,GACxD,IAAK/d,EACD0T,EAAMqK,EAAOplB,OAEjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+d,EAAO/d,GAAG6tC,eAEhB,EAEEgmB,gBAAgBr8D,UAAU2+D,mBAAqB,SAAUztD,EAAM0mD,GAE7D,IAAIgH,EACOpG,EAAG,IAAgBiB,aAACvoD,EAAM0mD,GACjCkC,EAActB,EAAQR,MAgD1B,MA9CgB,OAAZ9mD,EAAKiV,GACPy4C,EAAc,IAAIrG,mBAAmB53D,KAAMuQ,EAAMsnD,GAC5B,OAAZtnD,EAAKiV,GACdy4C,EAAc,IAAInG,iBAAiB93D,KAAMuQ,EAAMsnD,GAC1B,OAAZtnD,EAAKiV,IAA2B,OAAZjV,EAAKiV,IAElCy4C,EAAc,IADwB,OAAZ1tD,EAAKiV,GAAc+yC,yBAA2BE,4BAClCz4D,KAAMuQ,EAAMsnD,GAClD73D,KAAKmyB,WAAWC,KAAKhwB,YAAY67D,EAAY3E,IAEzC2E,EAAYxE,SACdz5D,KAAKmyB,WAAWC,KAAKhwB,YAAY67D,EAAYpE,IAC7C75D,KAAKmyB,WAAWC,KAAKhwB,YAAY67D,EAAYrE,IAC7CT,EAAYj3D,aAAa,OAAQ,OAAS4qD,kBAAoB,IAAMmR,EAAYxE,OAAS,OAEtE,OAAZlpD,EAAKiV,KACdy4C,EAAc,IAAkBlG,eAAC/3D,KAAMuQ,EAAMsnD,IAG/B,OAAZtnD,EAAKiV,IAA2B,OAAZjV,EAAKiV,KAC3B2zC,EAAYj3D,aAAa,iBAAkB20D,YAAYtmD,EAAKopD,IAAM,IAClER,EAAYj3D,aAAa,kBAAmB40D,aAAavmD,EAAKozC,IAAM,IACpEwV,EAAYj3D,aAAa,eAAgB,KAEzB,IAAZqO,EAAKozC,IACPwV,EAAYj3D,aAAa,oBAAqBqO,EAAKmzC,KAIxC,IAAXnzC,EAAKc,GACP8nD,EAAYj3D,aAAa,YAAa,WAGpCqO,EAAKkkD,IACP0E,EAAYj3D,aAAa,KAAMqO,EAAKkkD,IAGlClkD,EAAKyX,IACPmxC,EAAYj3D,aAAa,QAASqO,EAAKyX,IAGrCzX,EAAKo+C,KACPwK,EAAYt3D,MAAM,kBAAoBqoD,aAAa35C,EAAKo+C,KAG1D3uD,KAAK27D,WAAW32D,KAAK6yD,GACrB73D,KAAKk+D,sBAAsB3tD,EAAM0tD,IAErC,EAEEvC,gBAAgBr8D,UAAU8+D,mBAAqB,SAAU5tD,GACvD,MAAkB,IAAkBmoD,eAcpC,OAZInoD,EAAKkkD,IACPwJ,EAAYrF,GAAG12D,aAAa,KAAMqO,EAAKkkD,IAGrClkD,EAAKyX,IACPi2C,EAAYrF,GAAG12D,aAAa,QAASqO,EAAKyX,IAGxCzX,EAAKo+C,KACPsP,EAAYrF,GAAG/2D,MAAM,kBAAoBqoD,aAAa35C,EAAKo+C,KAGtDsP,CACX,EAEEvC,gBAAgBr8D,UAAU++D,uBAAyB,SAAU7tD,EAAMuG,GACjE,IAAIunD,EAAoBxmB,yBAAyBqB,qBAAqBl5C,KAAMuQ,EAAMvQ,MAC9Ei+D,EAAc,IAAIpF,iBAAiBwF,EAAmBA,EAAkBhzD,EAAGyL,GAE/E,OADA9W,KAAKk+D,sBAAsB3tD,EAAM0tD,GACfA,CACtB,EAEEvC,gBAAgBr8D,UAAUi/D,mBAAqB,SAAU/tD,EAAMguD,EAAiBtH,GAC9E,IAAMzxC,EAAG,EAEO,OAAZjV,EAAKiV,GACPA,EAAK,EACgB,OAAZjV,EAAKiV,GACdA,EAAK,EACgB,OAAZjV,EAAKiV,KACdA,EAAK,GAGP,IACIy4C,EAAc,IAAgBlH,aAACwH,EAAiBtH,EADhCvsB,qBAAqByhB,aAAansD,KAAMuQ,EAAMiV,EAAIxlB,OAKtE,OAHAA,KAAK4lB,OAAO5gB,KAAKi5D,GACjBj+D,KAAKq2D,oBAAoB4H,GACzBj+D,KAAKk+D,sBAAsB3tD,EAAM0tD,GAC1BA,CACX,EAEEvC,gBAAgBr8D,UAAU6+D,sBAAwB,SAAU3tD,EAAMiE,GAIhE,IAHA,IAAI3M,EAAI,EACJ0T,EAAMvb,KAAK47D,iBAAiBp7D,OAEzBqH,EAAI0T,GAAK,CACd,GAAIvb,KAAK47D,iBAAiB/zD,GAAG2M,UAAYA,EACvC,OAGF3M,GAAK,CACN,CAED7H,KAAK47D,iBAAiB52D,KAAK,CACzBmf,GAAIq6C,oBAAoBhD,qBAAqBjrD,GAC7CiE,QAASA,EACTjE,KAAMA,GAEZ,EAEEmrD,gBAAgBr8D,UAAUo/D,iBAAmB,SAAUR,GACrD,IACKn5C,EADDlH,EAAMqgD,EAAYz8D,OAElB2jB,EAAOnlB,KAAK27D,WAAWn7D,OAE3B,IAAKskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACpB9kB,KAAK27D,WAAW72C,GAAGiD,QACtBnK,EAAI5Y,KAAKhF,KAAK27D,WAAW72C,GAGjC,EAEE42C,gBAAgBr8D,UAAUqiD,aAAe,WAEvC,IAAI75C,EADJ7H,KAAKynC,eAAgB,EAErB,IAAOlsB,EAAGvb,KAAKuuD,UAAU/tD,OAEzB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK24D,aAAa9wD,GAAK7H,KAAKuuD,UAAU1mD,GAOxC,IAJA7H,KAAK29D,aAAa39D,KAAKsuD,WAAYtuD,KAAKuuD,UAAWvuD,KAAK24D,aAAc34D,KAAK6uD,aAAc,EAAG,IAAI,GAChG7uD,KAAK49D,qBACLriD,EAAMvb,KAAKwoC,kBAAkBhoC,OAExBqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKwoC,kBAAkB3gC,GAAGogC,WAG5BjoC,KAAKy2D,iBACT,EAEEiF,gBAAgBr8D,UAAUs+D,aAAe,SAAU//C,EAAK2wC,EAAWoK,EAAc7hD,EAAWmgD,EAAOD,EAAc1/C,GAC/G,IACIzP,EAEAid,EACIK,EAGYu5C,EAChBC,EACAC,EATeL,EAAG,GAAG1lC,OAAOm+B,KAEtBp5C,EAAIpd,OAAS,EAGnBq+D,EAAY,GACAC,EAAG,GAKnB,IAAKj3D,EAAI0T,EAAK1T,GAAK,EAAGA,GAAK,EAAG,CAS5B,IARA+2D,EAAe5+D,KAAK02D,uBAAuB94C,EAAI/V,KAK7C0mD,EAAU1mD,GAAK8wD,EAAaiG,EAAe,GAF3ChhD,EAAI/V,GAAGo5C,QAAU3pC,EAKD,OAAdsG,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,GAC5Fo5C,EAGHrQ,EAAU1mD,GAAGhG,MAAMkmB,QAAS,EAF5BwmC,EAAU1mD,GAAK7H,KAAKg+D,mBAAmBpgD,EAAI/V,GAAIovD,GAK7Cr5C,EAAI/V,GAAGo5C,SACLsN,EAAU1mD,GAAGhG,MAAMw1D,MAAMplD,aAAe6E,GAC1CA,EAAU1U,YAAYmsD,EAAU1mD,GAAGhG,MAAMw1D,OAI7CwH,EAAU75D,KAAKupD,EAAU1mD,GAAGhG,YACnB+b,GAAc,OAAdA,EAAI/V,GAAG2d,GAAa,CAC7B,GAAKo5C,EAKH,IAFAz5C,EAAOopC,EAAU1mD,GAAGse,GAAG3lB,OAElBskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBypC,EAAU1mD,GAAG8wD,aAAa7zC,GAAKypC,EAAU1mD,GAAGse,GAAGrB,QALjDypC,EAAU1mD,GAAK7H,KAAKm+D,mBAAmBvgD,EAAI/V,IAS7C7H,KAAK29D,aAAa//C,EAAI/V,GAAGse,GAAIooC,EAAU1mD,GAAGse,GAAIooC,EAAU1mD,GAAG8wD,aAAcpK,EAAU1mD,GAAG+wD,GAAI3B,EAAQ,EAAGsH,EAAiBjnD,GAElHsG,EAAI/V,GAAGo5C,SACLsN,EAAU1mD,GAAG+wD,GAAG3mD,aAAe6E,GACjCA,EAAU1U,YAAYmsD,EAAU1mD,GAAG+wD,GAGxC,KAAwB,OAAdh7C,EAAI/V,GAAG2d,IACXo5C,IACHrQ,EAAU1mD,GAAK7H,KAAKo+D,uBAAuBxgD,EAAI/V,GAAIiP,IAGrD4nD,EAAmBnQ,EAAU1mD,GAAGwnC,UAChCkvB,EAAgBv5D,KAAK05D,IACE,OAAd9gD,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAC7Eo5C,IACHrQ,EAAU1mD,GAAK7H,KAAKs+D,mBAAmB1gD,EAAI/V,GAAI02D,EAAiBtH,IAGlEj3D,KAAKy+D,iBAAiBlQ,EAAU1mD,KACT,OAAd+V,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IACzHo5C,GAMHD,EAAWpQ,EAAU1mD,IACZkgB,QAAS,IANlB42C,EAAW1pB,eAAeG,YAAYx3B,EAAI/V,GAAG2d,KACpC+Q,KAAKv2B,KAAM4d,EAAI/V,IACxB0mD,EAAU1mD,GAAK82D,EACf3+D,KAAKs2D,eAAetxD,KAAK25D,IAM3BG,EAAa95D,KAAK25D,IACK,OAAd/gD,EAAI/V,GAAG2d,KACXo5C,GAOHD,EAAWpQ,EAAU1mD,IACZkgB,QAAS,GAPlB42C,EAAW1pB,eAAeG,YAAYx3B,EAAI/V,GAAG2d,IAC7C+oC,EAAU1mD,GAAK82D,EACfA,EAASpoC,KAAKv2B,KAAM4d,EAAK/V,EAAG0mD,GAC5BvuD,KAAKs2D,eAAetxD,KAAK25D,GACzBrnD,GAAS,GAMXwnD,EAAa95D,KAAK25D,IAGpB3+D,KAAK42D,oBAAoBh5C,EAAI/V,GAAIA,EAAI,EACtC,CAID,IAFA0T,EAAMsjD,EAAUr+D,OAEXqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBg3D,EAAUh3D,GAAGkgB,QAAS,EAKxB,IAFAxM,EAAMujD,EAAat+D,OAEdqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBi3D,EAAaj3D,GAAGkgB,QAAS,CAE/B,EAEE2zC,gBAAgBr8D,UAAU42D,mBAAqB,WAE7C,IAAKpuD,EADL7H,KAAKy2D,kBAEL,IAAOl7C,EAAGvb,KAAK27D,WAAWn7D,OAE1B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK27D,WAAW9zD,GAAG2jC,QAKrB,IAFAxrC,KAAK++D,cAEAl3D,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACpB7H,KAAK27D,WAAW9zD,GAAGu/B,MAAQpnC,KAAKynC,iBAC9BznC,KAAK27D,WAAW9zD,GAAGyvD,SACrBt3D,KAAK27D,WAAW9zD,GAAGyvD,OAAOp1D,aAAa,IAAKlC,KAAK27D,WAAW9zD,GAAGoE,GAE/DjM,KAAK27D,WAAW9zD,GAAGoE,EAAI,OAASjM,KAAK27D,WAAW9zD,GAAGoE,GAGrDjM,KAAK27D,WAAW9zD,GAAGwvD,MAAMn1D,aAAa,IAAKlC,KAAK27D,WAAW9zD,GAAGoE,GAAK,QAG3E,EAEEyvD,gBAAgBr8D,UAAU0/D,YAAc,WACtC,MAEIC,EADGzjD,EAAGvb,KAAK47D,iBAAiBp7D,OAGhC,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBm3D,EAAkBh/D,KAAK47D,iBAAiB/zD,IAEnC7H,KAAKynC,eAAiBu3B,EAAgBxqD,QAAQi0B,eAAyC,IAAzBu2B,EAAgBzuD,MACjFyuD,EAAgB76C,GAAG66C,EAAgBzuD,KAAMyuD,EAAgBxqD,QAASxU,KAAKynC,cAG/E,EAEEi0B,gBAAgBr8D,UAAUiuB,QAAU,WAClCttB,KAAK+0D,qBACL/0D,KAAKsuD,WAAa,KAClBtuD,KAAKuuD,UAAY,IACrB,EAmBEsN,YAAYx8D,UAAUqL,OAAS,SAAUW,EAAGywD,EAAI/T,EAAIgU,EAAI/rD,EAAG5K,GACzDpF,KAAKonC,KAAK/7B,GAAI,EACdrL,KAAKonC,KAAK00B,IAAK,EACf97D,KAAKonC,KAAK2gB,IAAK,EACf/nD,KAAKonC,KAAK20B,IAAK,EACf/7D,KAAKonC,KAAKp3B,GAAI,EACdhQ,KAAKonC,KAAKhiC,GAAI,EACd,IAAW4F,GAAG,EAsCd,OApCIhL,KAAKqL,IAAMA,IACbrL,KAAKqL,EAAIA,EACTrL,KAAKonC,KAAK/7B,GAAI,EACdL,GAAU,GAGRhL,KAAK87D,KAAOA,IACd97D,KAAK87D,GAAKA,EACV97D,KAAKonC,KAAK00B,IAAK,EACf9wD,GAAU,GAGRhL,KAAK+nD,KAAOA,IACd/nD,KAAK+nD,GAAKA,EACV/nD,KAAKonC,KAAK2gB,IAAK,EACf/8C,GAAU,GAGRhL,KAAK+7D,KAAOA,IACd/7D,KAAK+7D,GAAKA,EACV/7D,KAAKonC,KAAK20B,IAAK,EACf/wD,GAAU,GAGRhL,KAAKgQ,IAAMA,IACbhQ,KAAKgQ,EAAIA,EACThQ,KAAKonC,KAAKp3B,GAAI,EACdhF,GAAU,IAGR5F,EAAE5E,QAAWR,KAAKoF,EAAE,KAAOA,EAAE,IAAMpF,KAAKoF,EAAE,KAAOA,EAAE,IAAMpF,KAAKoF,EAAE,KAAOA,EAAE,IAAMpF,KAAKoF,EAAE,KAAOA,EAAE,IAAMpF,KAAKoF,EAAE,MAAQA,EAAE,KAAOpF,KAAKoF,EAAE,MAAQA,EAAE,MAChJpF,KAAKoF,EAAIA,EACTpF,KAAKonC,KAAKhiC,GAAI,EACd4F,GAAU,GAGEA,CAClB,EAqDEgxD,aAAa38D,UAAUm9D,gBAAkB,CAAC,EAAG,GAE7CR,aAAa38D,UAAUg+D,SAAW,SAAUl/C,EAAK5N,GAC/C,IAAK,IAAK5O,KAAQ4O,EACZrN,OAAO7D,UAAUuG,eAAewC,KAAKmI,EAAM5O,KAC7Cwc,EAAIxc,GAAK4O,EAAK5O,IAIlB,OAAOwc,CACX,EAEE69C,aAAa38D,UAAU4/D,eAAiB,SAAU1uD,GAC3CA,EAAK2X,YACRloB,KAAKu9D,iBAAiBhtD,GAGxBvQ,KAAKq8D,YAAc9rD,EACnBvQ,KAAKq8D,YAAYE,SAAWv8D,KAAKq8D,YAAYE,UAAYv8D,KAAKw8D,gBAC9Dx8D,KAAKonC,MAAO,CAChB,EAEE40B,aAAa38D,UAAUi+D,eAAiB,WACtC,OAAWt9D,KAACk/D,iBAChB,EAEElD,aAAa38D,UAAU6/D,gBAAkB,WAOvC,OANAl/D,KAAK2nC,GAAK3nC,KAAKuQ,KAAKtE,EAAEd,EAAE3K,OAAS,EAE7BR,KAAK2nC,IACP3nC,KAAK4nC,UAAU5nC,KAAKm/D,iBAAiB5yC,KAAKvsB,OAGrCA,KAAK2nC,EAChB,EAEEq0B,aAAa38D,UAAUuoC,UAAY,SAAUC,GAC3C7nC,KAAKunC,gBAAgBviC,KAAK6iC,GAC1B7nC,KAAKg4B,KAAK8P,mBAAmB9nC,KACjC,EAEEg8D,aAAa38D,UAAU4oC,SAAW,SAAUm3B,GAC1C,GAAKp/D,KAAKg4B,KAAK7F,WAAWmV,UAAYtnC,KAAKsnC,SAAYtnC,KAAKunC,gBAAgB/mC,QAAY4+D,EAAxF,CAIAp/D,KAAKq8D,YAAYh0D,EAAIrI,KAAKuQ,KAAKtE,EAAEd,EAAEnL,KAAKk8D,WAAWv6D,EAAE0G,EACrD,IAAgBg3D,EAAGr/D,KAAKq8D,cACLr8D,KAAKk8D,UAExB,GAAIl8D,KAAKwnC,KACPxnC,KAAKi/D,eAAej/D,KAAKq8D,iBAD3B,CAOA,IAAIx0D,EAFJ7H,KAAKwnC,MAAO,EACZxnC,KAAKonC,MAAO,EAEZ,IAAI7rB,EAAMvb,KAAKunC,gBAAgB/mC,OAC3BknC,EAAa03B,GAAep/D,KAAKuQ,KAAKtE,EAAEd,EAAEnL,KAAKk8D,WAAWv6D,EAE9D,IAAKkG,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAGtB6/B,EADE43B,IAAiBt/D,KAAKk8D,UACXl8D,KAAKunC,gBAAgB1/B,GAAG6/B,EAAYA,EAAWr/B,GAE/CrI,KAAKunC,gBAAgB1/B,GAAG7H,KAAKq8D,YAAa30B,EAAWr/B,GAIlEg3D,IAAiB33B,GACnB1nC,KAAKi/D,eAAev3B,GAGtB1nC,KAAKoB,EAAIpB,KAAKq8D,YACdr8D,KAAK0iC,GAAK1iC,KAAKoB,EACfpB,KAAKwnC,MAAO,EACZxnC,KAAKsnC,QAAUtnC,KAAKg4B,KAAK7F,WAAWmV,OAxBnC,CATA,CAkCL,EAEE00B,aAAa38D,UAAU8/D,iBAAmB,WAMxC,IALA,IAAYI,EAAGv/D,KAAKuQ,KAAKtE,EAAEd,EACfk3B,EAAGriC,KAAKg4B,KAAKjS,KAAK8gB,gBACtB,EACDtrB,EAAGgkD,EAAS/+D,OAEZqH,GAAK0T,EAAM,KACZ1T,IAAM0T,EAAM,GAAKgkD,EAAS13D,EAAI,GAAGQ,EAAIg6B,IAIzCx6B,GAAK,EAOP,OAJI7H,KAAKk8D,YAAcr0D,IACrB7H,KAAKk8D,UAAYr0D,GAGR7H,KAACuQ,KAAKtE,EAAEd,EAAEnL,KAAKk8D,WAAWv6D,CACzC,EAEEq6D,aAAa38D,UAAUmgE,eAAiB,SAAU5Z,GAQhD,IAPA,IAGI6Z,IAHAC,EAAkB,GACjB73D,EAAG,EACJ0T,EAAMqqC,EAAKplD,OAGEm/D,GAAG,EAEb93D,EAAI0T,GACTkkD,EAAW7Z,EAAKsC,WAAWrgD,GAEvBm8C,YAAY8C,oBAAoB2Y,GAClCC,EAAgBA,EAAgBl/D,OAAS,IAAMolD,EAAKga,OAAO/3D,GAClD43D,GAAY,OAAUA,GAAY,OAC3ChZ,EAAiBb,EAAKsC,WAAWrgD,EAAI,KAEf,OAAU4+C,GAAkB,OAC5CkZ,GAAiB3b,YAAYuC,WAAWkZ,EAAUhZ,IACpDiZ,EAAgBA,EAAgBl/D,OAAS,IAAMolD,EAAKjzB,OAAO9qB,EAAG,GAC9D83D,GAAgB,GAEhBD,EAAgB16D,KAAK4gD,EAAKjzB,OAAO9qB,EAAG,IAGtCA,GAAK,GAEL63D,EAAgB16D,KAAK4gD,EAAKga,OAAO/3D,IAE1B43D,EAAW,OACpBhZ,EAAiBb,EAAKsC,WAAWrgD,EAAI,GAEjCm8C,YAAY4C,kBAAkB6Y,EAAUhZ,IAC1CkZ,GAAgB,EAChBD,EAAgBA,EAAgBl/D,OAAS,IAAMolD,EAAKjzB,OAAO9qB,EAAG,GAC9DA,GAAK,GAEL63D,EAAgB16D,KAAK4gD,EAAKga,OAAO/3D,KAE1Bm8C,YAAY4C,kBAAkB6Y,IACvCC,EAAgBA,EAAgBl/D,OAAS,IAAMolD,EAAKga,OAAO/3D,GAC3D83D,GAAgB,GAEhBD,EAAgB16D,KAAK4gD,EAAKga,OAAO/3D,IAGnCA,GAAK,EAGP,OAAO63D,CACX,EAEE1D,aAAa38D,UAAUk+D,iBAAmB,SAAU52C,GAClDA,EAAauB,YAAa,EAC1B,IAGKrgB,EACE0T,EACHskD,EAEAvgD,EAQCwF,EACDK,EAEA8B,EAlBAoM,EAAcrzB,KAAKg4B,KAAK7F,WAAWkB,cAC5BrzB,KAAKuQ,OACF,GAILN,EAAG,IAESM,EAAKP,EAAE+R,EACxB+9C,EAAc,IACD,EACFC,EAAG,EACdpD,EAAa,KACD,EACAqD,EAAG,EAGf1gB,EAAWjsB,EAAYg1B,cAAc1hC,EAAazE,GAElD+1C,EAAU,IACE5Y,kBAAkBC,GAClC34B,EAAa64B,QAAU4F,EAAU3F,OACjC94B,EAAa44B,OAAS6F,EAAUvjD,MAChC8kB,EAAau2C,UAAYv2C,EAAahlB,EACtCglB,EAAaw2C,UAAYn9D,KAAKw/D,eAAe74C,EAAate,GAC1DkT,EAAMoL,EAAaw2C,UAAU38D,OAC7BmmB,EAAay2C,gBAAkBz2C,EAAa+1C,GAC5C,IACI+C,EADcQ,EAAGt5C,EAAag5B,GAAK,IAAOh5B,EAAau2C,UAG3D,GAAIv2C,EAAasoB,GAOf,IANA,MAIakuB,EAJTniD,GAAO,EACPuhD,EAAW51C,EAAasoB,GAAG,GAClBixB,EAAGv5C,EAAasoB,GAAG,GAIzBj0B,GAAM,CAEXmlD,EAAgB,EAChBC,EAAY,EACZ7kD,GAHA4hD,EAAYn9D,KAAKw/D,eAAe74C,EAAate,IAG7B7H,OAChBy/D,EAAiBt5C,EAAag5B,GAAK,IAAOh5B,EAAau2C,UACvD,IAAImD,GAAkB,EAEtB,IAAKx4D,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB43D,EAAWtC,EAAUt1D,GAAGqgD,WAAW,GACnC2X,GAAc,EAEO,MAAjB1C,EAAUt1D,GACZw4D,EAAiBx4D,EACK,KAAb43D,GAAgC,IAAbA,IAC5BW,EAAY,EACZP,GAAc,EACdM,GAAiBx5C,EAAay2C,iBAA4C,IAAzBz2C,EAAau2C,WAG5D7pC,EAAYrM,OACdC,EAAWoM,EAAY20B,YAAYmV,EAAUt1D,GAAIy3C,EAASC,OAAQD,EAASgG,SAC3E2S,EAAU4H,EAAc,EAAI54C,EAASi9B,EAAIv9B,EAAau2C,UAAY,KAGlEjF,EAAU5kC,EAAYsyB,YAAYwX,EAAUt1D,GAAI8e,EAAazE,EAAGyE,EAAau2C,WAG3EkD,EAAYnI,EAAUsE,GAA6B,MAAjBY,EAAUt1D,KACtB,IAApBw4D,EACF9kD,GAAO,EAEP1T,EAAIw4D,EAGNF,GAAiBx5C,EAAay2C,iBAA4C,IAAzBz2C,EAAau2C,UAC9DC,EAAU50D,OAAOV,EAAGw4D,IAAmBx4D,EAAI,EAAI,EAAG,MAElDw4D,GAAkB,EAClBD,EAAY,IAEZA,GAAanI,EACbmI,GAAaH,GAIjBE,GAAiB7gB,EAASgd,OAAS31C,EAAau2C,UAAY,IAExDl9D,KAAKm8D,WAAax1C,EAAau2C,UAAYl9D,KAAKo8D,iBAAmB8D,EAAYC,GACjFx5C,EAAau2C,WAAa,EAC1Bv2C,EAAay2C,gBAAkBz2C,EAAau2C,UAAYv2C,EAAa+1C,GAAK/1C,EAAahlB,IAEvFglB,EAAaw2C,UAAYA,EACzB5hD,EAAMoL,EAAaw2C,UAAU38D,OAC7Bwa,GAAO,EAEV,CAGHolD,GAAaH,EACbhI,EAAU,EACV,IACIqI,EADiBC,EAAG,EAGxB,IAAK14D,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EA6CxB,GA5CAg4D,GAAc,EAIG,MAFjBJ,GADAa,EAAc35C,EAAaw2C,UAAUt1D,IACdqgD,WAAW,KAEE,IAAbuX,GACrBc,EAAoB,EACpB5D,EAAW33D,KAAKo7D,GAChBJ,EAAeI,EAAYJ,EAAeI,EAAYJ,EACtDI,GAAa,EAAIH,EACjB3gD,EAAM,GACNugD,GAAc,EACdE,GAAe,GAEfzgD,EAAMghD,EAGJjtC,EAAYrM,OACdC,EAAWoM,EAAY20B,YAAYsY,EAAahhB,EAASC,OAAQlsB,EAAYg1B,cAAc1hC,EAAazE,GAAGojC,SAC3G2S,EAAU4H,EAAc,EAAI54C,EAASi9B,EAAIv9B,EAAau2C,UAAY,KAIlEjF,EAAU5kC,EAAYsyB,YAAYrmC,EAAKqH,EAAazE,EAAGyE,EAAau2C,WAIlD,MAAhBoD,EACFC,GAAqBtI,EAAUgI,GAE/BG,GAAanI,EAAUgI,EAAiBM,EACxCA,EAAoB,GAGtBC,EAAQx7D,KAAK,CACX4I,EAAGqqD,EACHwI,GAAIxI,EACJyI,IAAKZ,EACL1uD,EAAGyuD,EACHc,UAAW,GACXrhD,IAAKA,EACLgP,KAAMyxC,EACNa,sBAAuB,IAGH,GAAlBC,GAIF,GAFAf,GAAe7H,EAEH,KAAR34C,GAAsB,MAARA,GAAezX,IAAM0T,EAAM,EAAG,CAK9C,IAJY,KAAR+D,GAAsB,MAARA,IAChBwgD,GAAe7H,GAGV6I,GAAcj5D,GACnB24D,EAAQM,GAAYL,GAAKX,EACzBU,EAAQM,GAAY/8B,IAAM9zB,EAC1BuwD,EAAQM,GAAYC,MAAQ9I,EAC5B6I,GAAc,EAGhB7wD,GAAS,EACT6vD,EAAc,CACf,OACI,GAAsB,GAAlBe,GAIT,GAFAf,GAAe7H,EAEH,KAAR34C,GAAczX,IAAM0T,EAAM,EAAG,CAK/B,IAJY,KAAR+D,IACFwgD,GAAe7H,GAGV6I,GAAcj5D,GACnB24D,EAAQM,GAAYL,GAAKX,EACzBU,EAAQM,GAAY/8B,IAAM9zB,EAC1BuwD,EAAQM,GAAYC,MAAQ9I,EAC5B6I,GAAc,EAGhBhB,EAAc,EACd7vD,GAAS,CACV,OAEDuwD,EAAQvwD,GAAO8zB,IAAM9zB,EACrBuwD,EAAQvwD,GAAO8wD,MAAQ,EACvB9wD,GAAS,EAQb,GAJA0W,EAAa/Y,EAAI4yD,EACjBR,EAAeI,EAAYJ,EAAeI,EAAYJ,EACtDrD,EAAW33D,KAAKo7D,GAEZz5C,EAAasoB,GACftoB,EAAa41C,SAAW51C,EAAasoB,GAAG,GACxCtoB,EAAa81C,cAAgB,OAI7B,OAFA91C,EAAa41C,SAAWyD,EAEhBr5C,EAAa7B,GACnB,KAAM,EACJ6B,EAAa81C,eAAiB91C,EAAa41C,SAC3C,MAEF,KAAK,EACH51C,EAAa81C,eAAiB91C,EAAa41C,SAAW,EACtD,MAEF,QACE51C,EAAa81C,cAAgB,EAInC91C,EAAag2C,WAAaA,EAC1B,QAIIqE,EACAj9B,IALYxzB,EAAK+W,EAGrBnC,EAAO87C,EAAUzgE,OAGjB,IAAI0gE,EAAU,GAEd,IAAKp8C,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAAG,CAkB5B,KAjBAq8C,EAAeF,EAAUn8C,IAERwC,EAAEygC,KACjBphC,EAAao2C,iBAAkB,GAG7BoE,EAAa75C,EAAEw0C,KACjBn1C,EAAaq2C,iBAAkB,IAG7BmE,EAAa75C,EAAEy0C,IAAMoF,EAAa75C,EAAE85C,IAAMD,EAAa75C,EAAE+5C,IAAMF,EAAa75C,EAAEg6C,MAChF36C,EAAam2C,eAAgB,GAG/B/4B,EAAM,EACNi9B,EAAQG,EAAax/D,EAAEqgB,EAElBna,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACxB05D,EAAaf,EAAQ34D,IACV84D,UAAU77C,GAAKif,GAEb,GAATi9B,GAAiC,KAAnBO,EAAWjiD,KAAuB,GAAT0hD,GAAiC,KAAnBO,EAAWjiD,KAAiC,MAAnBiiD,EAAWjiD,KAAwB,GAAT0hD,IAAeO,EAAWnwD,GAAuB,KAAlBmwD,EAAWjiD,KAAczX,GAAK0T,EAAM,IAAe,GAATylD,IAAeO,EAAWnwD,GAAKvJ,GAAK0T,EAAM,MAEnM,IAAtB4lD,EAAax/D,EAAE6/D,IACjBN,EAAQl8D,KAAK++B,GAGfA,GAAO,GAIXxzB,EAAK+W,EAAExC,GAAGnjB,EAAE8/D,WAAa19B,EACzB,IACU29B,KADQ,EAGlB,GAA0B,IAAtBP,EAAax/D,EAAE6/D,GACjB,IAAK35D,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAGpB85D,IAFJJ,EAAaf,EAAQ34D,IAEQ84D,UAAU77C,KAErC68C,EAAaJ,EAAWZ,UAAU77C,GAClC48C,EAASR,EAAQ34D,OAAOqD,KAAKiT,MAAMjT,KAAKC,SAAWq1D,EAAQ1gE,QAAS,GAAG,IAGzE+gE,EAAWZ,UAAU77C,GAAK48C,CAG/B,CAED/6C,EAAas2C,QAAUt2C,EAAay2C,iBAA4C,IAAzBz2C,EAAau2C,UACpEv2C,EAAai2C,GAAKj2C,EAAai2C,IAAM,EACrCj2C,EAAa21C,OAAShd,EAASgd,OAAS31C,EAAau2C,UAAY,GACrE,EAEElB,aAAa38D,UAAU+3B,mBAAqB,SAAUwqC,EAAS3xD,GAC7DA,OAAkB1P,IAAV0P,EAAsBjQ,KAAKk8D,UAAYjsD,EAC/C,IAAS4xD,EAAG7hE,KAAKq9D,SAAS,CAAE,EAAEr9D,KAAKuQ,KAAKtE,EAAEd,EAAE8E,GAAOtO,GACnDkgE,EAAQ7hE,KAAKq9D,SAASwE,EAAOD,GAC7B5hE,KAAKuQ,KAAKtE,EAAEd,EAAE8E,GAAOtO,EAAIkgE,EACzB7hE,KAAK8hE,YAAY7xD,GACjBjQ,KAAKg4B,KAAK8P,mBAAmB9nC,KACjC,EAEEg8D,aAAa38D,UAAUyiE,YAAc,SAAU7xD,GAC7C,IAAS4xD,EAAG7hE,KAAKuQ,KAAKtE,EAAEd,EAAE8E,GAAOtO,EACjCkgE,EAAM35C,YAAa,EACnBloB,KAAKk8D,UAAY,EACjBl8D,KAAKynC,eAAgB,EACrBznC,KAAKioC,SAAS45B,EAClB,EAEE7F,aAAa38D,UAAU0iE,cAAgB,SAAUC,GAC/ChiE,KAAKm8D,UAAY6F,EACjBhiE,KAAK8hE,YAAY9hE,KAAKk8D,WACtBl8D,KAAKg4B,KAAK8P,mBAAmB9nC,KACjC,EAEEg8D,aAAa38D,UAAU4iE,mBAAqB,SAAUC,GACpDliE,KAAKo8D,gBAAkBxwD,KAAKiT,MAAMqjD,IAAe,EACjDliE,KAAK8hE,YAAY9hE,KAAKk8D,WACtBl8D,KAAKg4B,KAAK8P,mBAAmB9nC,KACjC,EAEE,IAAImiE,iBAAmB,WACrB,IAAOpjD,EAAGnT,KAAKmT,IACXE,EAAMrT,KAAKqT,IACNJ,EAAGjT,KAAKiT,MAEjB,SAASujD,EAAwBpqC,EAAMznB,GACrCvQ,KAAKqiE,oBAAsB,EAC3BriE,KAAKmL,GAAI,EACTnL,KAAKuQ,KAAOA,EACZvQ,KAAKg4B,KAAOA,EACZh4B,KAAK+lB,KAAOiS,EAAKjS,KACjB/lB,KAAKsiE,OAAS,EACdtiE,KAAKuiE,OAAS,EACdviE,KAAK2oC,6BAA6B3Q,GAClCh4B,KAAK2B,EAAIsgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAK5O,GAAK,CAC/CwJ,EAAG,GACF,EAAG,EAAGnL,MAGPA,KAAK0D,EADH,MAAW6M,EACJ0xB,gBAAgBqG,QAAQtQ,EAAMznB,EAAK7M,EAAG,EAAG,EAAG1D,MAE5C,CACPoB,EAAG,KAIPpB,KAAKqL,EAAI42B,gBAAgBqG,QAAQtQ,EAAMznB,EAAKlF,GAAK,CAC/CF,EAAG,GACF,EAAG,EAAGnL,MACTA,KAAKwiE,GAAKvgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAKiyD,IAAM,CACjDr3D,EAAG,GACF,EAAG,EAAGnL,MACTA,KAAKyiE,GAAKxgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAKkyD,IAAM,CACjDt3D,EAAG,GACF,EAAG,EAAGnL,MACTA,KAAK0iE,GAAKzgC,gBAAgBqG,QAAQtQ,EAAMznB,EAAKmyD,IAAM,CACjDv3D,EAAG,KACF,EAAG,EAAGnL,MACTA,KAAKsnB,EAAI2a,gBAAgBqG,QAAQtQ,EAAMznB,EAAK+W,EAAG,EAAG,IAAMtnB,MAEnDA,KAAKwoC,kBAAkBhoC,QAC1BR,KAAKioC,UAER,CA+JD,OA7JAm6B,EAAwB/iE,UAAY,CAClCsjE,QAAS,SAAiB5+B,GACpB/jC,KAAKqiE,qBAAuBriE,KAAKg4B,KAAK4qC,aAAavG,YAAYzuD,EAAEpN,QACnER,KAAKioC,WAGP,IAAM3K,EAAG,EACLC,EAAK,EACHC,EAAG,EACLC,EAAK,EAELz9B,KAAKyiE,GAAGrhE,EAAI,EACdk8B,EAAKt9B,KAAKyiE,GAAGrhE,EAAI,IAEjBm8B,GAAMv9B,KAAKyiE,GAAGrhE,EAAI,IAGhBpB,KAAKwiE,GAAGphE,EAAI,EACdo8B,EAAK,EAAMx9B,KAAKwiE,GAAGphE,EAAI,IAEvBq8B,EAAK,EAAMz9B,KAAKwiE,GAAGphE,EAAI,IAGzB,IAAIyhE,EAAQrpC,cAAcyK,gBAAgB3G,EAAIC,EAAIC,EAAIC,GAAIh9B,IACtD0mC,EAAO,EACNxlC,EAAG3B,KAAKsiE,OACR5+D,EAAG1D,KAAKuiE,OACTv/D,EAAOhD,KAAKuQ,KAAKw0B,GAErB,GAAa,IAAT/hC,EAOFmkC,EAAO07B,EALL17B,EADEzjC,IAAM/B,EACDoiC,GAAOrgC,EAAI,EAAI,EAEfqb,EAAI,EAAGE,EAAI,IAAOvb,EAAI/B,IAAMoiC,EAAMpiC,IAAM+B,EAAI/B,GAAI,UAIpD,GAAa,IAATqB,EAOTmkC,EAAO07B,EALL17B,EADEzjC,IAAM/B,EACDoiC,GAAOrgC,EAAI,EAAI,EAEf,EAAIqb,EAAI,EAAGE,EAAI,IAAOvb,EAAI/B,IAAMoiC,EAAMpiC,IAAM+B,EAAI/B,GAAI,UAIxD,GAAa,IAATqB,EACLU,IAAM/B,EACRwlC,EAAO,GAEPA,EAAOpoB,EAAI,EAAGE,EAAI,IAAOvb,EAAI/B,IAAMoiC,EAAMpiC,IAAM+B,EAAI/B,GAAI,KAE5C,GACTwlC,GAAQ,EAERA,EAAO,EAAI,GAAKA,EAAO,IAI3BA,EAAO07B,EAAM17B,QACJnkC,GAAS,IAATA,EAAY,CACrB,GAAIU,IAAM/B,EACRwlC,EAAO,MACF,CACL,IAAO27B,EAAGp/D,EAAI/B,EAKTg5B,GAAImoC,EAAM,GADf/+B,EAAM9kB,EAAIF,EAAI,EAAGglB,EAAM,GAAMpiC,GAAI+B,EAAI/B,IAEjC2lB,EAAIw7C,EAAM,EACd37B,EAAOv7B,KAAK+S,KAAK,EAAIgc,EAAIA,GAAKrT,EAAIA,GACnC,CAED6f,EAAO07B,EAAM17B,EACvB,MAA4B,IAATnkC,GACLU,IAAM/B,EACRwlC,EAAO,GAEPpD,EAAM9kB,EAAIF,EAAI,EAAGglB,EAAM,GAAMpiC,GAAI+B,EAAI/B,GACrCwlC,GAAQ,EAAIv7B,KAAK06B,IAAI16B,KAAK8T,GAAe,EAAV9T,KAAK8T,GAASqkB,GAAOrgC,EAAI/B,KAAO,GAGjEwlC,EAAO07B,EAAM17B,KAETpD,GAAOllB,EAAMld,KAEbwlC,EAAOpoB,EAAI,EAAGE,EADZ8kB,EAAMpiC,EAAI,EACMsd,EAAIvb,EAAG,IAAM/B,EAAIoiC,GAEjBrgC,EAAIqgC,EAFmB,KAM7CoD,EAAO07B,EAAM17B,IAaf,GAAkB,MAAdnnC,KAAK0iE,GAAGthE,EAAW,CACrB,MAA6B,IAAZpB,KAAK0iE,GAAGthE,EAEN,IAAf2hE,IACFA,EAAa,MAGf,IAAIC,EAAY,GAAmB,GAAbD,EAElB57B,EAAO67B,EACT77B,EAAO,GAEPA,GAAQA,EAAO67B,GAAaD,GAEjB,IACT57B,EAAO,EAGZ,CAED,OAAOA,EAAOnnC,KAAKsnB,EAAElmB,CACtB,EACD6mC,SAAU,SAAkBg7B,GAC1BjjE,KAAK0oC,2BACL1oC,KAAKonC,KAAO67B,GAAgBjjE,KAAKonC,KACjCpnC,KAAKqiE,mBAAqBriE,KAAKg4B,KAAK4qC,aAAavG,YAAYzuD,EAAEpN,QAAU,EAErEyiE,GAAgC,IAAhBjjE,KAAKuQ,KAAKc,IAC5BrR,KAAK0D,EAAEtC,EAAIpB,KAAKqiE,oBAGlB,IAAIa,EAA0B,IAAhBljE,KAAKuQ,KAAKc,EAAU,EAAI,IAAMrR,KAAKuQ,KAAKkxD,WAClDp2D,EAAIrL,KAAKqL,EAAEjK,EAAI8hE,EACdvhE,EAAG3B,KAAK2B,EAAEP,EAAI8hE,EAAU73D,EACxB3H,EAAG1D,KAAK0D,EAAEtC,EAAI8hE,EAAU73D,EAE7B,GAAI1J,EAAI+B,EAAG,CACT,IAAI+yC,EAAK90C,EACTA,EAAI+B,EACJA,EAAI+yC,CACL,CAEDz2C,KAAKsiE,OAAS3gE,EACd3B,KAAKuiE,OAAS7+D,CACf,GAEHyX,gBAAgB,CAACotB,0BAA2B65B,GAMrC,CACLe,oBALF,SAA6BnrC,EAAMznB,EAAMqN,GACvC,WAAkCwkD,EAACpqC,EAAMznB,EAAMqN,EAChD,EAKL,CA7MyB,GA+MvB,SAAiCwlD,yBAACprC,EAAMqrC,EAAevsD,GACrD,IAAewsD,EAAG,CAChB7gC,UAAU,GAER6F,EAAUrG,gBAAgBqG,QACHi7B,EAAGF,EAAc/7C,EAC5CtnB,KAAKsnB,EAAI,CACPjW,EAAGkyD,EAAwBlyD,EAAIi3B,EAAQtQ,EAAMurC,EAAwBlyD,EAAG,EAAGoO,UAAW3I,GAAawsD,EACnGjrB,GAAIkrB,EAAwBlrB,GAAK/P,EAAQtQ,EAAMurC,EAAwBlrB,GAAI,EAAG54B,UAAW3I,GAAawsD,EACtGhrB,GAAIirB,EAAwBjrB,GAAKhQ,EAAQtQ,EAAMurC,EAAwBjrB,GAAI,EAAG74B,UAAW3I,GAAawsD,EACtG/7C,GAAIg8C,EAAwBh8C,GAAK+gB,EAAQtQ,EAAMurC,EAAwBh8C,GAAI,EAAG9H,UAAW3I,GAAawsD,EACtG97C,GAAI+7C,EAAwB/7C,GAAK8gB,EAAQtQ,EAAMurC,EAAwB/7C,GAAI,EAAG/H,UAAW3I,GAAawsD,EACtG3hE,EAAG4hE,EAAwB5hE,EAAI2mC,EAAQtQ,EAAMurC,EAAwB5hE,EAAG,EAAG,IAAMmV,GAAawsD,EAC9Fh8C,EAAGi8C,EAAwBj8C,EAAIghB,EAAQtQ,EAAMurC,EAAwBj8C,EAAG,EAAG,EAAGxQ,GAAawsD,EAC3Fj4D,EAAGk4D,EAAwBl4D,EAAIi9B,EAAQtQ,EAAMurC,EAAwBl4D,EAAG,EAAG,IAAMyL,GAAawsD,EAC9Fl+D,EAAGm+D,EAAwBn+D,EAAIkjC,EAAQtQ,EAAMurC,EAAwBn+D,EAAG,EAAG,EAAG0R,GAAawsD,EAC3FxH,GAAIyH,EAAwBzH,GAAKxzB,EAAQtQ,EAAMurC,EAAwBzH,GAAI,EAAG,EAAGhlD,GAAawsD,EAC9Fvb,GAAIwb,EAAwBxb,GAAKzf,EAAQtQ,EAAMurC,EAAwBxb,GAAI,EAAG,EAAGjxC,GAAawsD,EAC9FvH,GAAIwH,EAAwBxH,GAAKzzB,EAAQtQ,EAAMurC,EAAwBxH,GAAI,EAAG,EAAGjlD,GAAawsD,EAC9FlC,GAAImC,EAAwBnC,GAAK94B,EAAQtQ,EAAMurC,EAAwBnC,GAAI,EAAG,EAAGtqD,GAAawsD,EAC9FjC,GAAIkC,EAAwBlC,GAAK/4B,EAAQtQ,EAAMurC,EAAwBlC,GAAI,EAAG,IAAMvqD,GAAawsD,EACjGhC,GAAIiC,EAAwBjC,GAAKh5B,EAAQtQ,EAAMurC,EAAwBjC,GAAI,EAAG,IAAMxqD,GAAawsD,EACjGj7D,EAAGk7D,EAAwBl7D,EAAIigC,EAAQtQ,EAAMurC,EAAwBl7D,EAAG,EAAG,EAAGyO,GAAawsD,GAE7FtjE,KAAK2B,EAAIwgE,iBAAiBgB,oBAAoBnrC,EAAMqrC,EAAc1hE,EAAGmV,GACrE9W,KAAK2B,EAAE0G,EAAIg7D,EAAc1hE,EAAE0G,CAC5B,CAED,SAASm7D,qBAAqBvZ,EAAUwZ,EAAYzrC,GAClDh4B,KAAKynC,eAAgB,EACrBznC,KAAK0jE,gBAAiB,EACtB1jE,KAAKi8D,UAAY,EACjBj8D,KAAK2jE,UAAY1Z,EACjBjqD,KAAK4jE,YAAcH,EACnBzjE,KAAK6jE,MAAQ7rC,EACbh4B,KAAK8jE,eAAiB9lD,iBAAiBhe,KAAK2jE,UAAUr8C,EAAE9mB,QACxDR,KAAK+jE,UAAY,CAAE,EACnB/jE,KAAKgkE,aAAe,CAClBC,UAAW,CAAA,GAEbjkE,KAAKkkE,gBAAkB,GACvBlkE,KAAKmkE,oBAAqB,EAC1BnkE,KAAK2oC,6BAA6B3Q,EACnC,CAwoBD,wBAEAosC,CAxoBAZ,qBAAqBnkE,UAAUglE,iBAAmB,WAChD,IAAKx8D,EAEDw7D,EADG9nD,EAAGvb,KAAK2jE,UAAUr8C,EAAE9mB,SAEbyhC,gBAAgBqG,QAE9B,IAAKzgC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBw7D,EAAgBrjE,KAAK2jE,UAAUr8C,EAAEzf,GACjC7H,KAAK8jE,eAAej8D,GAAK,IAAIu7D,yBAAyBpjE,KAAK6jE,MAAOR,EAAerjE,MAG/EA,KAAK2jE,UAAUv+D,GAAK,MAAOpF,KAAK2jE,UAAUv+D,GAC5CpF,KAAK+jE,UAAY,CACfz8C,EAAGghB,EAAQtoC,KAAK6jE,MAAO7jE,KAAK2jE,UAAUv+D,EAAEkiB,EAAG,EAAG,EAAGtnB,MACjDkiB,EAAGomB,EAAQtoC,KAAK6jE,MAAO7jE,KAAK2jE,UAAUv+D,EAAE8c,EAAG,EAAG,EAAGliB,MACjD4N,EAAG06B,EAAQtoC,KAAK6jE,MAAO7jE,KAAK2jE,UAAUv+D,EAAEwI,EAAG,EAAG,EAAG5N,MACjDqR,EAAGi3B,EAAQtoC,KAAK6jE,MAAO7jE,KAAK2jE,UAAUv+D,EAAEiM,EAAG,EAAG,EAAGrR,MACjDoF,EAAGkjC,EAAQtoC,KAAK6jE,MAAO7jE,KAAK2jE,UAAUv+D,EAAEA,EAAG,EAAG,EAAGpF,MACjDgQ,EAAGhQ,KAAK6jE,MAAM9V,YAAYkE,gBAAgBjyD,KAAK2jE,UAAUv+D,EAAE4K,IAE7DhQ,KAAK0jE,gBAAiB,GAEtB1jE,KAAK0jE,gBAAiB,EAGxB1jE,KAAKgkE,aAAaC,UAAY37B,EAAQtoC,KAAK6jE,MAAO7jE,KAAK2jE,UAAU3zD,EAAEsX,EAAG,EAAG,EAAGtnB,KAChF,EAEEwjE,qBAAqBnkE,UAAUilE,YAAc,SAAU39C,EAAcw9C,GAGnE,GAFAnkE,KAAKmkE,mBAAqBA,EAErBnkE,KAAKonC,MAASpnC,KAAKynC,eAAkB08B,GAAwBnkE,KAAK0jE,gBAAmB1jE,KAAK+jE,UAAU/zD,EAAEo3B,KAA3G,CAIApnC,KAAKynC,eAAgB,EACrB,MAOQ88B,EACH18D,EACE0T,EAEKipD,EACKC,EACbC,EACAhmC,EACA1jB,EACA2pD,IAES3nB,EACHziB,EACNrJ,EACA2N,IAEIL,EACIomC,EACRhY,EAzBSqX,EAAGjkE,KAAKgkE,aAAaC,UAAU7iE,EACxC6/D,EAAYjhE,KAAK8jE,eACT7Z,EAAGjqD,KAAK2jE,UACJkB,EAAG7kE,KAAKgyD,UACPhyD,KAAK4jE,YACEkB,EAAG9kE,KAAKkkE,gBAAgB1jE,OAKrCggE,EAAG75C,EAAa/Y,EAiB3B,GAAI5N,KAAK0jE,eAAgB,CAGvB,GAFA9W,EAAO5sD,KAAK+jE,UAAU/zD,GAEjBhQ,KAAK+jE,UAAU3yD,GAAKpR,KAAK+jE,UAAU38B,KAAM,CAC5C,MAAI8D,EAAQ0hB,EAAKxrD,EAejB,IAbIpB,KAAK+jE,UAAU1yD,EAAEjQ,IACnB8pC,EAAQA,EAAM9jC,WAIhBo9D,EAAW,CACTO,QAAS,EACT7zC,SAAU,IAEZ3V,EAAM2vB,EAAM1O,QAAU,EAEtBW,EAAc,EAETt1B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBo3B,EAAa+C,IAAIjD,gBAAgBmM,EAAM9pC,EAAEyG,GAAIqjC,EAAM9pC,EAAEyG,EAAI,GAAI,CAACqjC,EAAM7/B,EAAExD,GAAG,GAAKqjC,EAAM9pC,EAAEyG,GAAG,GAAIqjC,EAAM7/B,EAAExD,GAAG,GAAKqjC,EAAM9pC,EAAEyG,GAAG,IAAK,CAACqjC,EAAMrjC,EAAEA,EAAI,GAAG,GAAKqjC,EAAM9pC,EAAEyG,EAAI,GAAG,GAAIqjC,EAAMrjC,EAAEA,EAAI,GAAG,GAAKqjC,EAAM9pC,EAAEyG,EAAI,GAAG,KACxM28D,EAASO,SAAW9lC,EAAWP,cAC/B8lC,EAAStzC,SAASlsB,KAAKi6B,GACvB9B,GAAe8B,EAAWP,cAG5B72B,EAAI0T,EAEAqxC,EAAKxrD,EAAE4H,IACTi2B,EAAa+C,IAAIjD,gBAAgBmM,EAAM9pC,EAAEyG,GAAIqjC,EAAM9pC,EAAE,GAAI,CAAC8pC,EAAM7/B,EAAExD,GAAG,GAAKqjC,EAAM9pC,EAAEyG,GAAG,GAAIqjC,EAAM7/B,EAAExD,GAAG,GAAKqjC,EAAM9pC,EAAEyG,GAAG,IAAK,CAACqjC,EAAMrjC,EAAE,GAAG,GAAKqjC,EAAM9pC,EAAE,GAAG,GAAI8pC,EAAMrjC,EAAE,GAAG,GAAKqjC,EAAM9pC,EAAE,GAAG,KACpLojE,EAASO,SAAW9lC,EAAWP,cAC/B8lC,EAAStzC,SAASlsB,KAAKi6B,GACvB9B,GAAe8B,EAAWP,eAG5B1+B,KAAK+jE,UAAUiB,GAAKR,CACrB,CAUD,GARAA,EAAWxkE,KAAK+jE,UAAUiB,GAC1BP,EAAgBzkE,KAAK+jE,UAAU7hD,EAAE9gB,EACjC6jE,EAAa,EACbN,EAAW,EACXjmC,EAAgB,EAChB1jB,GAAO,EACPkW,EAAWszC,EAAStzC,SAEhBuzC,EAAgB,GAAK7X,EAAKxrD,EAAE4H,EAS9B,IARIw7D,EAASO,QAAUn5D,KAAKyT,IAAIolD,KAC9BA,GAAiB74D,KAAKyT,IAAIolD,GAAiBD,EAASO,SAKtDJ,GADApqC,EAASrJ,EADT+zC,EAAa/zC,EAAS1wB,OAAS,GACD+5B,QACZ/5B,OAAS,EAEpBikE,EAAgB,GACrBA,GAAiBlqC,EAAOoqC,GAAU9lC,eAClC8lC,GAAY,GAEG,IAGbA,GADApqC,EAASrJ,EADT+zC,GAAc,GACgB1qC,QACZ/5B,OAAS,GAMjCw8C,GADAziB,EAASrJ,EAAS+zC,GAAY1qC,QACXoqC,EAAW,GAE9B9lC,GADA6lC,EAAenqC,EAAOoqC,IACO9lC,aAC9B,CAEDtjB,EAAMilD,EAAQhgE,OACd0kE,EAAO,EACPX,EAAO,EACP,IAEiBlB,EAEbv+C,MAIIqiB,IAR4B,IAAzBxgB,EAAau2C,UAAkB,KAC7BiI,GAAG,EAMhBhgD,EAAO87C,EAAUzgE,OAEjB,MAEY4kE,EACAC,IAMNtd,EACA+T,EACFC,EACA5wD,IAEQm6D,EACAC,IAfRxhC,GAAO,EAIPyhC,EAAcf,EACdgB,EAAiBR,EACjBS,EAAef,EACf5E,GAAe,EASf4F,GAAU,GACVC,GAAU5lE,KAAK6lE,kBAGnB,GAAuB,IAAnBl/C,EAAa7B,GAA8B,IAAnB6B,EAAa7B,EAAS,CAChD,IAAI87C,GAAwB,EACDkF,GAAG,EAC1BC,GAAuC,IAAnBp/C,EAAa7B,GAAW,IAAO,EACnD5W,GAAY,EACH83D,IAAG,EAEhB,IAAKn+D,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,GAAI24D,EAAQ34D,GAAGuJ,EAAG,CAKhB,IAJIwvD,KACFA,IAAyBkF,IAGpB53D,GAAYrG,GACjB24D,EAAQtyD,IAAW0yD,sBAAwBA,GAC3C1yD,IAAa,EAGf0yD,GAAwB,EACxBoF,IAAY,CACtB,KAAe,CACL,IAAKlhD,EAAI,EAAGA,EAAIK,EAAML,GAAK,GACzBu+C,EAAgBpC,EAAUn8C,GAAGwC,GAEXjf,EAAEo6B,WACdujC,IAAgC,IAAnBr/C,EAAa7B,IAC5BghD,IAA2BzC,EAAch7D,EAAEjH,EAAI2kE,KAIjD5+B,EADmB85B,EAAUn8C,GAAGnjB,EACRghE,QAAQnC,EAAQ34D,GAAG84D,UAAU77C,GAAImlC,EAAS3iC,EAAExC,GAAGnjB,EAAE8/D,aAEhEjhE,OACPogE,IAAyByC,EAAch7D,EAAEjH,EAAI+lC,EAAK,GAAK4+B,GAEvDnF,IAAyByC,EAAch7D,EAAEjH,EAAI+lC,EAAO4+B,IAK1DC,IAAY,CACb,CAOH,IAJIpF,KACFA,IAAyBkF,IAGpB53D,GAAYrG,GACjB24D,EAAQtyD,IAAW0yD,sBAAwBA,GAC3C1yD,IAAa,CAEhB,CAGD,IAAKrG,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAI3B,GAHAg9D,EAAar5B,QACby6B,EAAc,EAEVzF,EAAQ34D,GAAGuJ,EACb8zD,EAAO,EACPX,GAAQ59C,EAAas2C,QACrBsH,GAAQY,EAAY,EAAI,EACxBV,EAAgBe,EAChBL,GAAY,EAERnlE,KAAK0jE,iBAEPiB,EAAWe,EAEX1oB,GADAziB,EAASrJ,EAFT+zC,EAAaQ,GAEiBlrC,QACXoqC,EAAW,GAE9B9lC,GADA6lC,EAAenqC,EAAOoqC,IACO9lC,cAC7BH,EAAgB,GAGlBinC,GAAU,GACVJ,EAAW,GACXW,EAAW,GACXC,EAAU,GACVP,GAAU5lE,KAAK6lE,sBACV,CACL,GAAI7lE,KAAK0jE,eAAgB,CACvB,GAAI3D,IAAgBS,EAAQ34D,GAAGymB,KAAM,CACnC,OAAQ3H,EAAa7B,GACnB,KAAM,EACJ2/C,GAAiBtnC,EAAcxW,EAAag2C,WAAW6D,EAAQ34D,GAAGymB,MAClE,MAEF,KAAK,EACHm2C,IAAkBtnC,EAAcxW,EAAag2C,WAAW6D,EAAQ34D,GAAGymB,OAAS,EAOhFyxC,EAAcS,EAAQ34D,GAAGymB,IAC1B,CAEGyV,IAAQy8B,EAAQ34D,GAAGk8B,MACjBy8B,EAAQz8B,KACV0gC,GAAiBjE,EAAQz8B,GAAKg9B,OAGhC0D,GAAiBjE,EAAQ34D,GAAG44D,GAAK,EACjC18B,EAAMy8B,EAAQ34D,GAAGk8B,KAGnB0gC,GAAiBR,EAAU,GAAKzD,EAAQ34D,GAAG44D,GAAK,KAChD,IAAI2F,GAAiB,EAErB,IAAKthD,EAAI,EAAGA,EAAIK,EAAML,GAAK,GACzBu+C,EAAgBpC,EAAUn8C,GAAGwC,GAEXliB,EAAEq9B,YAElB0E,EADmB85B,EAAUn8C,GAAGnjB,EACRghE,QAAQnC,EAAQ34D,GAAG84D,UAAU77C,GAAImlC,EAAS3iC,EAAExC,GAAGnjB,EAAE8/D,aAEhEjhE,OACP4lE,IAAkB/C,EAAcj+D,EAAEhE,EAAE,GAAK+lC,EAAK,GAE9Ci/B,IAAkB/C,EAAcj+D,EAAEhE,EAAE,GAAK+lC,GAIzCk8B,EAAc/7C,EAAEmb,YAElB0E,EADmB85B,EAAUn8C,GAAGnjB,EACRghE,QAAQnC,EAAQ34D,GAAG84D,UAAU77C,GAAImlC,EAAS3iC,EAAExC,GAAGnjB,EAAE8/D,aAEhEjhE,OACP4lE,IAAkB/C,EAAc/7C,EAAElmB,EAAE,GAAK+lC,EAAK,GAE9Ci/B,IAAkB/C,EAAc/7C,EAAElmB,EAAE,GAAK+lC,GAY/C,IAPAnsB,GAAO,EAEHhb,KAAK+jE,UAAUz8C,EAAElmB,IACnBqjE,EAAgC,GAAhBjE,EAAQ,GAAGC,IAAYtjC,EAAcn9B,KAAK+jE,UAAU7hD,EAAE9gB,EAAoB,GAAhBo/D,EAAQ,GAAGC,GAA4C,GAAjCD,EAAQA,EAAQhgE,OAAS,GAAGigE,IAAY18B,GAAOxoB,EAAM,GACrJkpD,GAAiBzkE,KAAK+jE,UAAU7hD,EAAE9gB,GAG7B4Z,GACD0jB,EAAgBG,GAAiB4lC,EAAgB2B,KAAmB7rC,GACtEiE,GAAQimC,EAAgB2B,GAAiB1nC,GAAiBgmC,EAAa7lC,cACvEumC,EAAWpoB,EAAU3e,MAAM,IAAMqmC,EAAarmC,MAAM,GAAK2e,EAAU3e,MAAM,IAAMG,EAC/E6mC,EAAWroB,EAAU3e,MAAM,IAAMqmC,EAAarmC,MAAM,GAAK2e,EAAU3e,MAAM,IAAMG,EAC/EqmC,EAAa31B,WAAW+0B,EAAU,GAAKzD,EAAQ34D,GAAG44D,GAAK,MAASwD,EAAU,GAAKoC,EAAQ,KACvFrrD,GAAO,GACEuf,IACTmE,GAAiBgmC,EAAa7lC,eAC9B8lC,GAAY,IAEIpqC,EAAO/5B,SACrBmkE,EAAW,EAGNzzC,EAFL+zC,GAAc,GAYZ1qC,EAASrJ,EAAS+zC,GAAY1qC,OAT1BqyB,EAAKxrD,EAAE4H,GACT27D,EAAW,EAEXpqC,EAASrJ,EADT+zC,EAAa,GACiB1qC,SAE9BmE,GAAiBgmC,EAAa7lC,cAC9BtE,EAAS,OAOXA,IACFyiB,EAAY0nB,EAEZ7lC,GADA6lC,EAAenqC,EAAOoqC,IACO9lC,gBAKnCynC,EAAO9F,EAAQ34D,GAAG44D,GAAK,EAAID,EAAQ34D,GAAG64D,IACtCmE,EAAa31B,WAAWo3B,EAAM,EAAG,EAC3C,MACUA,EAAO9F,EAAQ34D,GAAG44D,GAAK,EAAID,EAAQ34D,GAAG64D,IACtCmE,EAAa31B,WAAWo3B,EAAM,EAAG,GAEjCzB,EAAa31B,WAAW+0B,EAAU,GAAKzD,EAAQ34D,GAAG44D,GAAK,MAAQwD,EAAU,GAAKoC,EAAO,IAAM,GAG7F,IAAKvhD,EAAI,EAAGA,EAAIK,EAAML,GAAK,GACzBu+C,EAAgBpC,EAAUn8C,GAAGwC,GAEXjf,EAAEo6B,WAElB0E,EADmB85B,EAAUn8C,GAAGnjB,EACRghE,QAAQnC,EAAQ34D,GAAG84D,UAAU77C,GAAImlC,EAAS3iC,EAAExC,GAAGnjB,EAAE8/D,YAE5D,IAATyD,GAAiC,IAAnBv+C,EAAa7B,IACzB9kB,KAAK0jE,eACHv8B,EAAK3mC,OACPikE,GAAiBpB,EAAch7D,EAAEjH,EAAI+lC,EAAK,GAE1Cs9B,GAAiBpB,EAAch7D,EAAEjH,EAAI+lC,EAE9BA,EAAK3mC,OACd0kE,GAAQ7B,EAAch7D,EAAEjH,EAAI+lC,EAAK,GAEjC+9B,GAAQ7B,EAAch7D,EAAEjH,EAAI+lC,IAsBpC,IAhBIxgB,EAAaq2C,kBACflB,EAAKn1C,EAAam1C,IAAM,GAGtBn1C,EAAao2C,kBAEbhV,EADEphC,EAAaohC,GACV,CAACphC,EAAaohC,GAAG,GAAIphC,EAAaohC,GAAG,GAAIphC,EAAaohC,GAAG,IAEzD,CAAC,EAAG,EAAG,IAIZphC,EAAam2C,eAAiBn2C,EAAao1C,KAC7CA,EAAK,CAACp1C,EAAao1C,GAAG,GAAIp1C,EAAao1C,GAAG,GAAIp1C,EAAao1C,GAAG,KAG3Dj3C,EAAI,EAAGA,EAAIK,EAAML,GAAK,GACzBu+C,EAAgBpC,EAAUn8C,GAAGwC,GAEXA,EAAEmb,YAElB0E,EADmB85B,EAAUn8C,GAAGnjB,EACRghE,QAAQnC,EAAQ34D,GAAG84D,UAAU77C,GAAImlC,EAAS3iC,EAAExC,GAAGnjB,EAAE8/D,aAEhEjhE,OACPqkE,EAAa31B,WAAWm0B,EAAc/7C,EAAElmB,EAAE,GAAK+lC,EAAK,IAAKk8B,EAAc/7C,EAAElmB,EAAE,GAAK+lC,EAAK,GAAIk8B,EAAc/7C,EAAElmB,EAAE,GAAK+lC,EAAK,IAErH09B,EAAa31B,WAAWm0B,EAAc/7C,EAAElmB,EAAE,GAAK+lC,GAAOk8B,EAAc/7C,EAAElmB,EAAE,GAAK+lC,EAAMk8B,EAAc/7C,EAAElmB,EAAE,GAAK+lC,IAKhH,IAAKriB,EAAI,EAAGA,EAAIK,EAAML,GAAK,GACzBu+C,EAAgBpC,EAAUn8C,GAAGwC,GAEX3lB,EAAE8gC,YAElB0E,EADmB85B,EAAUn8C,GAAGnjB,EACRghE,QAAQnC,EAAQ34D,GAAG84D,UAAU77C,GAAImlC,EAAS3iC,EAAExC,GAAGnjB,EAAE8/D,aAEhEjhE,OACPqkE,EAAa7xB,MAAM,GAAKqwB,EAAc1hE,EAAEP,EAAE,GAAK,GAAK+lC,EAAK,GAAI,GAAKk8B,EAAc1hE,EAAEP,EAAE,GAAK,GAAK+lC,EAAK,GAAI,GAEvG09B,EAAa7xB,MAAM,GAAKqwB,EAAc1hE,EAAEP,EAAE,GAAK,GAAK+lC,EAAM,GAAKk8B,EAAc1hE,EAAEP,EAAE,GAAK,GAAK+lC,EAAM,IAKvG,IAAKriB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAAG,CAqD5B,GApDAu+C,EAAgBpC,EAAUn8C,GAAGwC,EAE7B6f,EADmB85B,EAAUn8C,GAAGnjB,EACRghE,QAAQnC,EAAQ34D,GAAG84D,UAAU77C,GAAImlC,EAAS3iC,EAAExC,GAAGnjB,EAAE8/D,YAErE4B,EAAc97C,GAAGkb,WACf0E,EAAK3mC,OACPqkE,EAAa71B,cAAcq0B,EAAc97C,GAAGnmB,EAAI+lC,EAAK,GAAIk8B,EAAc77C,GAAGpmB,EAAI+lC,EAAK,IAEnF09B,EAAa71B,cAAcq0B,EAAc97C,GAAGnmB,EAAI+lC,EAAMk8B,EAAc77C,GAAGpmB,EAAI+lC,IAI3Ek8B,EAAchyD,EAAEoxB,WACd0E,EAAK3mC,OACPqkE,EAAal2B,SAAS00B,EAAchyD,EAAEjQ,EAAI+lC,EAAK,IAE/C09B,EAAal2B,SAAS00B,EAAchyD,EAAEjQ,EAAI+lC,IAI1Ck8B,EAAc/qB,GAAG7V,WACf0E,EAAK3mC,OACPqkE,EAAan2B,QAAQ20B,EAAc/qB,GAAGl3C,EAAI+lC,EAAK,IAE/C09B,EAAan2B,QAAQ20B,EAAc/qB,GAAGl3C,EAAI+lC,IAI1Ck8B,EAAchrB,GAAG5V,WACf0E,EAAK3mC,OACPqkE,EAAap2B,QAAQ40B,EAAchrB,GAAGj3C,EAAI+lC,EAAK,IAE/C09B,EAAap2B,QAAQ40B,EAAchrB,GAAGj3C,EAAI+lC,IAI1Ck8B,EAAch4D,EAAEo3B,WACd0E,EAAK3mC,OACPylE,IAAgB5C,EAAch4D,EAAEjK,EAAI+lC,EAAK,GAAK8+B,GAAe9+B,EAAK,GAElE8+B,IAAgB5C,EAAch4D,EAAEjK,EAAI+lC,EAAO8+B,GAAe9+B,GAI1DxgB,EAAaq2C,iBAAmBqG,EAAcvH,GAAGr5B,WAC/C0E,EAAK3mC,OACPs7D,GAAMuH,EAAcvH,GAAG16D,EAAI+lC,EAAK,GAEhC20B,GAAMuH,EAAcvH,GAAG16D,EAAI+lC,GAI3BxgB,EAAao2C,iBAAmBsG,EAActb,GAAGtlB,SACnD,IAAKt3B,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClBg8B,EAAK3mC,OACPunD,EAAG58C,KAAOk4D,EAActb,GAAG3mD,EAAE+J,GAAK48C,EAAG58C,IAAMg8B,EAAK,GAEhD4gB,EAAG58C,KAAOk4D,EAActb,GAAG3mD,EAAE+J,GAAK48C,EAAG58C,IAAMg8B,EAKjD,GAAIxgB,EAAam2C,eAAiBn2C,EAAao1C,GAAI,CACjD,GAAIsH,EAActH,GAAGt5B,SACnB,IAAKt3B,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClBg8B,EAAK3mC,OACPu7D,EAAG5wD,KAAOk4D,EAActH,GAAG36D,EAAE+J,GAAK4wD,EAAG5wD,IAAMg8B,EAAK,GAEhD40B,EAAG5wD,KAAOk4D,EAActH,GAAG36D,EAAE+J,GAAK4wD,EAAG5wD,IAAMg8B,EAK7Ck8B,EAAcjC,GAAG3+B,WAEjBs5B,EADE50B,EAAK3mC,OACFiiB,YAAYs5C,EAAIsH,EAAcjC,GAAGhgE,EAAI+lC,EAAK,IAE1C1kB,YAAYs5C,EAAIsH,EAAcjC,GAAGhgE,EAAI+lC,IAI1Ck8B,EAAchC,GAAG5+B,WAEjBs5B,EADE50B,EAAK3mC,OACF4hB,mBAAmB25C,EAAIsH,EAAchC,GAAGjgE,EAAI+lC,EAAK,IAEjD/kB,mBAAmB25C,EAAIsH,EAAchC,GAAGjgE,EAAI+lC,IAIjDk8B,EAAc/B,GAAG7+B,WAEjBs5B,EADE50B,EAAK3mC,OACFgiB,mBAAmBu5C,EAAIsH,EAAc/B,GAAGlgE,EAAI+lC,EAAK,IAEjD3kB,mBAAmBu5C,EAAIsH,EAAc/B,GAAGlgE,EAAI+lC,GAGtD,CACF,CAED,IAAKriB,EAAI,EAAGA,EAAIK,EAAML,GAAK,GACzBu+C,EAAgBpC,EAAUn8C,GAAGwC,GAEXliB,EAAEq9B,WAElB0E,EADmB85B,EAAUn8C,GAAGnjB,EACRghE,QAAQnC,EAAQ34D,GAAG84D,UAAU77C,GAAImlC,EAAS3iC,EAAExC,GAAGnjB,EAAE8/D,YAErEzhE,KAAK0jE,eACHv8B,EAAK3mC,OACPqkE,EAAa31B,UAAU,EAAGm0B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,EAAK,IAAKk8B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,EAAK,IAEvF09B,EAAa31B,UAAU,EAAGm0B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,GAAOk8B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,GAExEA,EAAK3mC,OACdqkE,EAAa31B,UAAUm0B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,EAAK,GAAIk8B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,EAAK,IAAKk8B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,EAAK,IAEpH09B,EAAa31B,UAAUm0B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,EAAMk8B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,GAAOk8B,EAAcj+D,EAAEhE,EAAE,GAAK+lC,IAiB/G,GAZIxgB,EAAaq2C,kBACfkJ,EAAWpK,EAAK,EAAI,EAAIA,GAGtBn1C,EAAao2C,kBACfuI,EAAW,OAAS15D,KAAKkU,MAAc,IAARioC,EAAG,IAAY,IAAMn8C,KAAKkU,MAAc,IAARioC,EAAG,IAAY,IAAMn8C,KAAKkU,MAAc,IAARioC,EAAG,IAAY,KAG5GphC,EAAam2C,eAAiBn2C,EAAao1C,KAC7CwJ,EAAW,OAAS35D,KAAKkU,MAAc,IAARi8C,EAAG,IAAY,IAAMnwD,KAAKkU,MAAc,IAARi8C,EAAG,IAAY,IAAMnwD,KAAKkU,MAAc,IAARi8C,EAAG,IAAY,KAG5G/7D,KAAK0jE,eAAgB,CAIvB,GAHAmB,EAAa31B,UAAU,GAAIvoB,EAAai2C,IACxCiI,EAAa31B,UAAU,EAAG+0B,EAAU,GAAKoC,EAAO,IAAO9B,EAAM,GAEzDvkE,KAAK+jE,UAAU3+D,EAAEhE,EAAG,CACtBwjE,GAAYF,EAAarmC,MAAM,GAAK2e,EAAU3e,MAAM,KAAOqmC,EAAarmC,MAAM,GAAK2e,EAAU3e,MAAM,IACnG,IAAOke,GAAyB,IAAtB3wC,KAAK26D,KAAK3B,GAAkBh5D,KAAK8T,GAEvCglD,EAAarmC,MAAM,GAAK2e,EAAU3e,MAAM,KAC1Cke,IAAO,KAGTsoB,EAAa9xB,QAAQwJ,GAAM3wC,KAAK8T,GAAK,IACtC,CAEDmlD,EAAa31B,UAAUk2B,EAAUC,EAAU,GAC3CZ,GAAiBR,EAAU,GAAKzD,EAAQ34D,GAAG44D,GAAK,KAE5CD,EAAQ34D,EAAI,IAAMk8B,IAAQy8B,EAAQ34D,EAAI,GAAGk8B,MAC3C0gC,GAAiBjE,EAAQ34D,GAAG44D,GAAK,EACjCgE,GAAmC,KAAlB99C,EAAag5B,GAAah5B,EAAau2C,UAEpE,KAAe,CAQL,OAPA2H,EAAa31B,UAAUg2B,EAAMX,EAAM,GAE/B59C,EAAak2C,IAEfgI,EAAa31B,UAAUvoB,EAAak2C,GAAG,GAAIl2C,EAAak2C,GAAG,GAAKl2C,EAAa21C,OAAQ,GAG/E31C,EAAa7B,GACnB,KAAM,EACJ+/C,EAAa31B,UAAUsxB,EAAQ34D,GAAG+4D,sBAAwBj6C,EAAa81C,eAAiB91C,EAAa41C,SAAW51C,EAAag2C,WAAW6D,EAAQ34D,GAAGymB,OAAQ,EAAG,GAC9J,MAEF,KAAK,EACHu2C,EAAa31B,UAAUsxB,EAAQ34D,GAAG+4D,sBAAwBj6C,EAAa81C,eAAiB91C,EAAa41C,SAAW51C,EAAag2C,WAAW6D,EAAQ34D,GAAGymB,OAAS,EAAG,EAAG,GAOtKu2C,EAAa31B,UAAU,GAAIvoB,EAAai2C,IACxCiI,EAAa31B,UAAUo3B,EAAM,EAAG,GAChCzB,EAAa31B,UAAU+0B,EAAU,GAAKzD,EAAQ34D,GAAG44D,GAAK,KAAOwD,EAAU,GAAKoC,EAAO,IAAM,GACzFnB,GAAQ1E,EAAQ34D,GAAG+F,EAAsB,KAAlB+Y,EAAag5B,GAAah5B,EAAau2C,SAC/D,CAEkB,SAAfuG,EACFkC,GAAUd,EAAalyB,QACC,QAAf8wB,EACTkC,GAAUd,EAAa/xB,UAEvB8yB,GAAU,CAACf,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,GAAIq+D,EAAar+D,MAAM,IAAKq+D,EAAar+D,MAAM,IAAKq+D,EAAar+D,MAAM,IAAKq+D,EAAar+D,MAAM,IAAKq+D,EAAar+D,MAAM,IAAKq+D,EAAar+D,MAAM,KAG9X2/D,EAAUF,CACX,CAEGnB,GAAwBj9D,GAC1B2+D,EAAc,IAAI3K,YAAYsK,EAASD,EAAUZ,EAAUC,EAAUI,GAASC,IAC9E5lE,KAAKkkE,gBAAgBl/D,KAAKwhE,GAC1B1B,GAAwB,EACxB9kE,KAAKmkE,oBAAqB,IAE1BqC,EAAcxmE,KAAKkkE,gBAAgBr8D,GACnC7H,KAAKmkE,mBAAqBqC,EAAY97D,OAAOy7D,EAASD,EAAUZ,EAAUC,EAAUI,GAASC,KAAY5lE,KAAKmkE,mBAEjH,CArlBA,CAslBL,EAEEX,qBAAqBnkE,UAAU4oC,SAAW,WACpCjoC,KAAK6jE,MAAM1xC,WAAWmV,UAAYtnC,KAAKi8D,WAI3Cj8D,KAAKi8D,SAAWj8D,KAAK6jE,MAAM1xC,WAAWmV,QACtCtnC,KAAK0oC,2BACT,EAEE86B,qBAAqBnkE,UAAU2yD,QAAU,WACzCwR,qBAAqBnkE,UAAUwmE,kBAAoB,GACnD1qD,gBAAgB,CAACotB,0BAA2Bi7B,sBAI5CY,aAAa/kE,UAAUo0D,YAAc,SAAUljD,EAAM4hB,EAAYpM,GAC/D/lB,KAAKmkE,oBAAqB,EAC1BnkE,KAAKkiC,YACLliC,KAAKgrD,aAAaz6C,EAAM4hB,EAAYpM,GACpC/lB,KAAK4iE,aAAe,iBAAiB5iE,KAAMuQ,EAAKlI,EAAGrI,KAAKwoC,mBACxDxoC,KAAKymE,aAAe,yBAAyBl2D,EAAKlI,EAAGrI,KAAKyjE,WAAYzjE,MACtEA,KAAKuxD,cAAchhD,EAAM4hB,EAAYpM,GACrC/lB,KAAK81D,gBACL91D,KAAK8oD,iBACL9oD,KAAK8zD,sBACL9zD,KAAK+zD,0BACL/zD,KAAKg1D,6BACLh1D,KAAKg2D,gBACLh2D,KAAKi3B,OACLj3B,KAAKymE,aAAapC,iBAAiBrkE,KAAKwoC,kBAC5C,EAEE47B,aAAa/kE,UAAUowB,aAAe,SAAU85B,GAC9CvpD,KAAKonC,MAAO,EACZpnC,KAAKspD,uBAAuBC,GAC5BvpD,KAAKivD,kBAAkB1F,EAAKvpD,KAAK+oD,YAE7B/oD,KAAK4iE,aAAax7B,MAAQpnC,KAAK4iE,aAAan7B,iBAC9CznC,KAAK0mE,eACL1mE,KAAK4iE,aAAan7B,eAAgB,EAClCznC,KAAK4iE,aAAax7B,MAAO,EAE/B,EAEEg9B,aAAa/kE,UAAUsnE,gBAAkB,SAAU9B,EAAcj/C,GAC/D,IAAId,EAESstC,IADFxsC,EAAOplB,OAEdomE,EAAW,GAEf,IAAK9hD,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACJ,OAAjBc,EAAOd,GAAGU,KACZ4sC,EAAYxsC,EAAOd,GAAGoB,GAAG/a,EACzBy7D,GAAY7M,iBAAiB3H,EAAWA,EAAUvqD,EAAErH,QAAQ,EAAMqkE,IAItE,OAAe+B,CACnB,EAEExC,aAAa/kE,UAAU+3B,mBAAqB,SAAUwqC,EAAS3xD,GAC7DjQ,KAAK4iE,aAAaxrC,mBAAmBwqC,EAAS3xD,EAClD,EAEEm0D,aAAa/kE,UAAU0iE,cAAgB,SAAUC,GAC/ChiE,KAAK4iE,aAAab,cAAcC,EACpC,EAEEoC,aAAa/kE,UAAU4iE,mBAAqB,SAAU4E,GACpD7mE,KAAK4iE,aAAaX,mBAAmB4E,EACzC,EAEEzC,aAAa/kE,UAAUynE,4BAA8B,SAAUngD,EAAck+C,EAAckC,EAAY7B,EAAMX,GAO3G,OANI59C,EAAak2C,IACfgI,EAAa31B,UAAUvoB,EAAak2C,GAAG,GAAIl2C,EAAak2C,GAAG,GAAKl2C,EAAa21C,OAAQ,GAGvFuI,EAAa31B,UAAU,GAAIvoB,EAAai2C,GAAI,GAEpCj2C,EAAa7B,GACnB,KAAM,EACJ+/C,EAAa31B,UAAUvoB,EAAa81C,eAAiB91C,EAAa41C,SAAW51C,EAAag2C,WAAWoK,IAAc,EAAG,GACtH,MAEF,OACElC,EAAa31B,UAAUvoB,EAAa81C,eAAiB91C,EAAa41C,SAAW51C,EAAag2C,WAAWoK,IAAe,EAAG,EAAG,GAO9HlC,EAAa31B,UAAUg2B,EAAMX,EAAM,EACvC,EAEEH,aAAa/kE,UAAU2nE,WAAa,SAAUC,GAC5C,MAAO,OAASr7D,KAAKkU,MAAqB,IAAfmnD,EAAU,IAAY,IAAMr7D,KAAKkU,MAAqB,IAAfmnD,EAAU,IAAY,IAAMr7D,KAAKkU,MAAqB,IAAfmnD,EAAU,IAAY,GACnI,EAEE7C,aAAa/kE,UAAU6nE,UAAY,IAAerL,YAElDuI,aAAa/kE,UAAUiuB,QAAU,WAAY,EAE7C,IAAI65C,eAAiB,CACnBvhD,OAAQ,IAGV,8BAA8BrV,EAAM4hB,EAAYpM,GAC9C/lB,KAAKonE,UAAY,GACjBpnE,KAAKyjE,WAAa,MAClBzjE,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CA8UD,uBAAuBxV,EAAM4hB,EAAYpM,GACvC/lB,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CAeD,SAASshD,YAAY92D,EAAM4hB,EAAYpM,GACrC/lB,KAAKkiC,YACLliC,KAAKgrD,aAAaz6C,EAAM4hB,EAAYpM,GACpC/lB,KAAKkiC,YACLliC,KAAKuxD,cAAchhD,EAAM4hB,EAAYpM,GACrC/lB,KAAK81D,eACN,CAoBD,SAASwR,kBAAkB,CAkQ3B,SAASC,eAETpsD,CA0GA,SAAuBqsD,eAACj3D,EAAM4hB,EAAYpM,GACxC/lB,KAAK4kB,OAASrU,EAAKqU,OACnB5kB,KAAKynE,YAAa,EAClBznE,KAAK2kB,gBAAiB,EACtB3kB,KAAKixD,gBAAkB,GACvBjxD,KAAKmY,SAAWnY,KAAK4kB,OAAS5G,iBAAiBhe,KAAK4kB,OAAOpkB,QAAU,GACrER,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,GACnC/lB,KAAK+uB,GAAKxe,EAAKwe,GAAKkT,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKwe,GAAI,EAAGoD,EAAW9B,UAAWrwB,MAAQ,CAC1FsrD,cAAc,EAEjB,CAQD,SAASoc,YAAYrW,EAAesW,GAClC3nE,KAAKqxD,cAAgBA,EACrBrxD,KAAK4kB,OAAS,KACd5kB,KAAK6mC,eAAiB,EACtB7mC,KAAKiP,WAAasU,SAAS,OAC3B,MAAgB,GAEhB,GAAIokD,GAAUA,EAAOC,MAAO,CAC1B,MAAmBrkD,SAAS,SACxBskD,EAAUlmD,kBACdmmD,EAAa5lE,aAAa,KAAM2lE,GAChCC,EAAa3lE,YAAcwlE,EAAOC,MAClC5nE,KAAKiP,WAAW7M,YAAY0lE,GAC5BC,GAAaF,CACd,CAED,GAAIF,GAAUA,EAAOK,YAAa,CAChC,IAAeC,EAAG1kD,SAAS,QACjB2kD,EAAGvmD,kBACbsmD,EAAY/lE,aAAa,KAAMgmE,GAC/BD,EAAY9lE,YAAcwlE,EAAOK,YACjChoE,KAAKiP,WAAW7M,YAAY6lE,GAC5BF,GAAa,IAAMG,CACpB,CAEGH,GACF/nE,KAAKiP,WAAW/M,aAAa,kBAAmB6lE,GAGlD,IAAQ31C,EAAG7O,SAAS,QACpBvjB,KAAKiP,WAAW7M,YAAYgwB,GAC5B,IAAew5B,EAAGroC,SAAS,KAC3BvjB,KAAKiP,WAAW7M,YAAYwpD,GAC5B5rD,KAAK6uD,aAAejD,EACpB5rD,KAAK4pD,aAAe,CAClBue,oBAAqBR,GAAUA,EAAOQ,qBAAuB,gBAC7D/R,yBAA0BuR,GAAUA,EAAOvR,0BAA4B,iBACvEgS,kBAAmBT,GAAUA,EAAOS,mBAAqB,UACzD1X,gBAAiBiX,GAAUA,EAAOjX,kBAAmB,EACrD7G,oBAAqB8d,IAAuC,IAA7BA,EAAO9d,mBACtCwe,YAAaV,GAAUA,EAAOU,cAAe,EAC7CC,YAAaX,GAAUA,EAAOW,cAAe,EAC7CC,UAAWZ,GAAUA,EAAOY,WAAa,GACzCziD,GAAI6hD,GAAUA,EAAO7hD,IAAM,GAC3B0iD,UAAWb,GAAUA,EAAOa,UAC5BC,WAAY,CACV39C,MAAO68C,GAAUA,EAAOc,YAAcd,EAAOc,WAAW39C,OAAS,OACjEC,OAAQ48C,GAAUA,EAAOc,YAAcd,EAAOc,WAAW19C,QAAU,OACnE4P,EAAGgtC,GAAUA,EAAOc,YAAcd,EAAOc,WAAW9tC,GAAK,KACzDuJ,EAAGyjC,GAAUA,EAAOc,YAAcd,EAAOc,WAAWvkC,GAAK,MAE3DpZ,MAAO68C,GAAUA,EAAO78C,MACxBC,OAAQ48C,GAAUA,EAAO58C,OACzB29C,gBAAiBf,QAAoCpnE,IAA1BonE,EAAOe,gBAAgCf,EAAOe,gBAE3E1oE,KAAKmyB,WAAa,CAChBiV,MAAM,EACN/E,UAAW,EACXjQ,KAAMA,EACNw3B,aAAc5pD,KAAK4pD,cAErB5pD,KAAKmY,SAAW,GAChBnY,KAAKixD,gBAAkB,GACvBjxD,KAAK2oE,WAAY,EACjB3oE,KAAKy0B,aAAe,KACrB,CAQD,SAASm0C,gBAKP,IAAI/gE,EAIJ,IARA7H,KAAK6oE,MAAQ,GACb7oE,KAAK8oE,QAAU,EACf9oE,KAAK+oE,IAAM,IAAI96B,OACfjuC,KAAKgpE,GAAK,EAGVhpE,KAAKipE,QAAUvrD,iBAAiB,UADtB,IAGL7V,EAAI,EAAGA,EAHF,GAGWA,GAAK,EACxB7H,KAAK6oE,MAAMhhE,GAAK6V,iBAAiB,UAAW,IAG9C1d,KAAKw8B,QAPK,EAQX,CAsBD,SAA8B0sC,wBAC5BlpE,KAAKmpE,UAAY,CAAA,EACjBnpE,KAAKopE,aAAe,GACpBppE,KAAKqpE,oBAAsB,CAC5B,CAkED,SAAkBC,YAAG,CAIrB,uBAAuB/4D,EAAMiE,GAK3B,IAAK3M,EAJL7H,KAAKuQ,KAAOA,EACZvQ,KAAKwU,QAAUA,EACfxU,KAAKklB,gBAAkBllB,KAAKuQ,KAAK2U,iBAAmB,GACpDllB,KAAK6rD,SAAW7tC,iBAAiBhe,KAAKklB,gBAAgB1kB,QAEtD,IAAO+a,EAAGvb,KAAKklB,gBAAgB1kB,OACnB+oE,GAAG,EAEf,IAAK1hE,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACa,MAAjC7H,KAAKklB,gBAAgBrd,GAAGuD,OAC1Bm+D,GAAW,GAGbvpE,KAAK6rD,SAAShkD,GAAK6iC,qBAAqByhB,aAAansD,KAAKwU,QAASxU,KAAKklB,gBAAgBrd,GAAI,GAG9F7H,KAAKupE,SAAWA,EAEZA,GACFvpE,KAAKwU,QAAQ20C,uBAAuBnpD,KAEvC,CAoDD,SAAsBwpE,iBAoEtB,qBAAqBh1D,EAASjE,EAAM/O,EAAQioE,GAC1CzpE,KAAK0pE,aAAe,GACpB1pE,KAAK2/C,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,IAWK93C,EAXD2d,EAAK,EAEO,OAAZjV,EAAKiV,GACPA,EAAK,EACgB,OAAZjV,EAAKiV,GACdA,EAAK,EACgB,OAAZjV,EAAKiV,KACdA,EAAK,GAGPxlB,KAAK+kC,GAAK2F,qBAAqByhB,aAAa33C,EAASjE,EAAMiV,EAAIhR,GAE/D,IACIm1D,EADGpuD,EAAG/Z,EAAOhB,OAGjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACnBrG,EAAOqG,GAAGkgB,SACb4hD,EAAc,CACZ7X,WAAY2X,EAAkBG,qBAAqBpoE,EAAOqG,GAAGiqD,YAC7D+X,QAAS,IAEX7pE,KAAK0pE,aAAa1kE,KAAK2kE,GACvBnoE,EAAOqG,GAAGsQ,SAASnT,KAAK2kE,GAG7B,CAID,SAASG,eAAev5D,EAAM4hB,EAAYpM,GACxC/lB,KAAK4lB,OAAS,GACd5lB,KAAKsuD,WAAa/9C,EAAKqV,OACvB5lB,KAAK27D,WAAa,GAClB37D,KAAKuuD,UAAY,GACjBvuD,KAAK24D,aAAe,GACpB34D,KAAKs2D,eAAiB,GACtBt2D,KAAK22D,kBAAoB,GACzB32D,KAAKypE,kBAAoB,0BACzBzpE,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CAshBD,uBAAuBxV,EAAM4hB,EAAYpM,GACvC/lB,KAAKonE,UAAY,GACjBpnE,KAAKi9D,QAAU,EACfj9D,KAAK88D,eAAgB,EACrB98D,KAAK+8D,iBAAkB,EACvB/8D,KAAKg9D,iBAAkB,EACvBh9D,KAAK+pE,QAAS,EACd/pE,KAAKyU,MAAO,EACZzU,KAAKy8D,cAAgB,EACrBz8D,KAAKgqE,cAAgB,KACrBhqE,KAAKyjE,WAAa,SAClBzjE,KAAKiB,OAAS,CACZwT,KAAM,gBACNs1D,OAAQ,gBACRE,OAAQ,EACRC,OAAQ,IAEVlqE,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CAgOD,SAAuBokD,eAAC55D,EAAM4hB,EAAYpM,GACxC/lB,KAAK2rB,UAAYwG,EAAW6E,aAAazmB,EAAKmV,OAC9C1lB,KAAKisB,IAAMkG,EAAW44B,YAAYx9B,SAASvtB,KAAK2rB,WAChD3rB,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CAyCD,SAAuBqkD,eAAC75D,EAAM4hB,EAAYpM,GACxC/lB,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CAYD,SAA2BskD,mBAAChZ,EAAesW,GACzC3nE,KAAKqxD,cAAgBA,EACrBrxD,KAAK4pD,aAAe,CAClB0gB,aAAa3C,QAAiCpnE,IAAvBonE,EAAO2C,aAA4B3C,EAAO2C,YACjEC,QAAS5C,GAAUA,EAAO4C,SAAW,KACrC7Z,gBAAiBiX,GAAUA,EAAOjX,kBAAmB,EACrDyX,oBAAqBR,GAAUA,EAAOQ,qBAAuB,gBAC7D/R,yBAA0BuR,GAAUA,EAAOvR,0BAA4B,iBACvEgS,kBAAmBT,GAAUA,EAAOS,mBAAqB,UACzDG,UAAWZ,GAAUA,EAAOY,WAAa,GACzCziD,GAAI6hD,GAAUA,EAAO7hD,IAAM,IAE7B9lB,KAAK4pD,aAAa4gB,IAAM7C,GAAUA,EAAO6C,KAAO,EAE5CxqE,KAAKqxD,cAAct/B,UACrB/xB,KAAK4pD,aAAa4gB,IAAM7C,GAAUA,EAAO6C,KAAOzrE,OAAO0rE,kBAAoB,GAG7EzqE,KAAK6mC,eAAiB,EACtB7mC,KAAKmyB,WAAa,CAChBkQ,UAAW,EACX+E,MAAM,EACNwiB,aAAc5pD,KAAK4pD,aACnB8gB,oBAAqB,GAEvB1qE,KAAK2qE,YAAc,IAAiB/B,cACpC5oE,KAAKmY,SAAW,GAChBnY,KAAKixD,gBAAkB,GACvBjxD,KAAK4qE,aAAe,IAAU38B,OAC9BjuC,KAAK2kB,gBAAiB,EACtB3kB,KAAKy0B,aAAe,QACrB,CA+VD,SAASo2C,cAAct6D,EAAM4hB,EAAYpM,GACvC/lB,KAAK2kB,gBAAiB,EACtB3kB,KAAK4kB,OAASrU,EAAKqU,OACnB5kB,KAAKixD,gBAAkB,GACvBjxD,KAAKmY,SAAW6F,iBAAiBhe,KAAK4kB,OAAOpkB,QAC7CR,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,GACnC/lB,KAAK+uB,GAAKxe,EAAKwe,GAAKkT,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKwe,GAAI,EAAGoD,EAAW9B,UAAWrwB,MAAQ,CAC1FsrD,cAAc,EAEjB,CAyCD,SAAuBwf,eAACzZ,EAAesW,GACrC3nE,KAAKqxD,cAAgBA,EACrBrxD,KAAK4pD,aAAe,CAClB0gB,aAAa3C,QAAiCpnE,IAAvBonE,EAAO2C,aAA4B3C,EAAO2C,YACjEC,QAAS5C,GAAUA,EAAO4C,SAAW,KACrC7Z,gBAAiBiX,GAAUA,EAAOjX,kBAAmB,EACrDyX,oBAAqBR,GAAUA,EAAOQ,qBAAuB,gBAC7D/R,yBAA0BuR,GAAUA,EAAOvR,0BAA4B,iBACvEgS,kBAAmBT,GAAUA,EAAOS,mBAAqB,UACzDG,UAAWZ,GAAUA,EAAOY,WAAa,GACzCziD,GAAI6hD,GAAUA,EAAO7hD,IAAM,GAC3B4iD,gBAAiBf,QAAoCpnE,IAA1BonE,EAAOe,gBAAgCf,EAAOe,gBAE3E1oE,KAAK4pD,aAAa4gB,IAAM7C,GAAUA,EAAO6C,KAAO,EAE5CxqE,KAAKqxD,cAAct/B,UACrB/xB,KAAK4pD,aAAa4gB,IAAM7C,GAAUA,EAAO6C,KAAOzrE,OAAO0rE,kBAAoB,GAG7EzqE,KAAK6mC,eAAiB,EACtB7mC,KAAKmyB,WAAa,CAChBkQ,UAAW,EACX+E,MAAM,EACNwiB,aAAc5pD,KAAK4pD,aACnB8gB,oBAAqB,GAEvB1qE,KAAK2qE,YAAc,IAAiB/B,cACpC5oE,KAAKmY,SAAW,GAChBnY,KAAKixD,gBAAkB,GACvBjxD,KAAK4qE,aAAe,IAAU38B,OAC9BjuC,KAAK2kB,gBAAiB,EACtB3kB,KAAKy0B,aAAe,QACrB,CAQD,SAASs2C,eAETA,CAsFA,SAAsBC,cAACz6D,EAAM4hB,EAAYpM,GACvC/lB,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CAwBD,uBAAuBxV,EAAM4hB,EAAYpM,GAEvC/lB,KAAK4lB,OAAS,GAEd5lB,KAAKsuD,WAAa/9C,EAAKqV,OAEvB5lB,KAAK27D,WAAa,GAElB37D,KAAKs2D,eAAiB,GAEtBt2D,KAAKuuD,UAAY,GAEjBvuD,KAAK22D,kBAAoB,GAEzB32D,KAAK47D,iBAAmB,GACxB57D,KAAKirE,gBAAkB1nD,SAAS,KAChCvjB,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,GAGnC/lB,KAAK24D,aAAe,GACpB34D,KAAKkrE,YAAc,CACjBvwC,EAAG,OACHuJ,GAAI,OACJ1yB,EAAG,EACH0yC,EAAG,EAEN,CA+ND,SAASinB,aAAa56D,EAAM4hB,EAAYpM,GACtC/lB,KAAKonE,UAAY,GACjBpnE,KAAKorE,UAAY,GACjBprE,KAAKkrE,YAAc,CACjBvwC,EAAG,OACHuJ,GAAI,OACJ1yB,EAAG,EACH0yC,EAAG,GAELlkD,KAAKyjE,WAAa,MAClBzjE,KAAKqrE,UAAW,EAChBrrE,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CAyRD,SAASulD,eAAe/6D,EAAM4hB,EAAYpM,GACxC/lB,KAAKkiC,YACLliC,KAAKgrD,aAAaz6C,EAAM4hB,EAAYpM,GACpC/lB,KAAK81D,gBACL,MAAc7zB,gBAAgBqG,QAe9B,GAdAtoC,KAAKurE,GAAKjjC,EAAQtoC,KAAMuQ,EAAKg7D,GAAI,EAAG,EAAGvrE,MAEnCuQ,EAAK2V,GAAG9gB,EAAEzD,GACZ3B,KAAKk4C,GAAK5P,EAAQtoC,KAAMuQ,EAAK2V,GAAG9gB,EAAEu1B,EAAG,EAAG,EAAG36B,MAC3CA,KAAKm4C,GAAK7P,EAAQtoC,KAAMuQ,EAAK2V,GAAG9gB,EAAE8+B,EAAG,EAAG,EAAGlkC,MAC3CA,KAAKo4C,GAAK9P,EAAQtoC,KAAMuQ,EAAK2V,GAAG9gB,EAAEqsC,EAAG,EAAG,EAAGzxC,OAE3CA,KAAKoF,EAAIkjC,EAAQtoC,KAAMuQ,EAAK2V,GAAG9gB,EAAG,EAAG,EAAGpF,MAGtCuQ,EAAK2V,GAAGoB,IACVtnB,KAAKsnB,EAAIghB,EAAQtoC,KAAMuQ,EAAK2V,GAAGoB,EAAG,EAAG,EAAGtnB,OAGtCuQ,EAAK2V,GAAGymB,GAAGxhC,EAAE3K,QAAU+P,EAAK2V,GAAGymB,GAAGxhC,EAAE,GAAG04B,GAAI,CAC7C,QACUtzB,EAAK2V,GAAGymB,GAAGxhC,EAAE3K,OAEvB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB0I,EAAK2V,GAAGymB,GAAGxhC,EAAEtD,GAAGg8B,GAAK,KACrBtzB,EAAK2V,GAAGymB,GAAGxhC,EAAEtD,GAAGi8B,GAAK,IAExB,CAED9jC,KAAK2sC,GAAKrE,EAAQtoC,KAAMuQ,EAAK2V,GAAGymB,GAAI,EAAGltB,UAAWzf,MAClDA,KAAK2sC,GAAG5H,IAAK,EACb/kC,KAAKq4C,GAAK/P,EAAQtoC,KAAMuQ,EAAK2V,GAAGmyB,GAAI,EAAG54B,UAAWzf,MAClDA,KAAKs4C,GAAKhQ,EAAQtoC,KAAMuQ,EAAK2V,GAAGoyB,GAAI,EAAG74B,UAAWzf,MAClDA,KAAKu4C,GAAKjQ,EAAQtoC,KAAMuQ,EAAK2V,GAAGqyB,GAAI,EAAG94B,UAAWzf,MAClDA,KAAK04C,IAAM,IAAUzK,OACrBjuC,KAAKwrE,SAAW,WAChBxrE,KAAKynC,eAAgB,EAErBznC,KAAK0pD,eAAiB,CACpBC,MAAO3pD,KAEV,CAyID,SAAsByrE,cAACl7D,EAAM4hB,EAAYpM,GACvC/lB,KAAK2rB,UAAYwG,EAAW6E,aAAazmB,EAAKmV,OAC9C1lB,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,EACpC,CA4BD,SAAS2lD,mBAAmBra,EAAesW,GACzC3nE,KAAKqxD,cAAgBA,EACrBrxD,KAAK4kB,OAAS,KACd5kB,KAAK6mC,eAAiB,EACtB7mC,KAAK4pD,aAAe,CAClB2e,UAAWZ,GAAUA,EAAOY,WAAa,GACzCnS,yBAA0BuR,GAAUA,EAAOvR,0BAA4B,iBACvEvM,oBAAqB8d,IAAuC,IAA7BA,EAAO9d,mBACtC4e,WAAY,CACV39C,MAAO68C,GAAUA,EAAOc,YAAcd,EAAOc,WAAW39C,OAAS,OACjEC,OAAQ48C,GAAUA,EAAOc,YAAcd,EAAOc,WAAW19C,QAAU,OACnE4P,EAAGgtC,GAAUA,EAAOc,YAAcd,EAAOc,WAAW9tC,GAAK,QACzDuJ,EAAGyjC,GAAUA,EAAOc,YAAcd,EAAOc,WAAWvkC,GAAK,UAG7DlkC,KAAKmyB,WAAa,CAChBiV,MAAM,EACN/E,UAAW,EACXunB,aAAc5pD,KAAK4pD,cAErB5pD,KAAKixD,gBAAkB,GACvBjxD,KAAKmY,SAAW,GAChBnY,KAAK2rE,eAAiB,GACtB3rE,KAAK2oE,WAAY,EACjB3oE,KAAK4rE,OAAS,KACd5rE,KAAKynE,YAAa,EAClBznE,KAAKy0B,aAAe,MACrB,CAuUD,SAAqBo3C,aAACt7D,EAAM4hB,EAAYpM,GACtC/lB,KAAK4kB,OAASrU,EAAKqU,OACnB5kB,KAAKynE,YAAcl3D,EAAK0U,QACxBjlB,KAAK2kB,gBAAiB,EACtB3kB,KAAKixD,gBAAkB,GACvBjxD,KAAKmY,SAAWnY,KAAK4kB,OAAS5G,iBAAiBhe,KAAK4kB,OAAOpkB,QAAU,GACrER,KAAKyzD,YAAYljD,EAAM4hB,EAAYpM,GACnC/lB,KAAK+uB,GAAKxe,EAAKwe,GAAKkT,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKwe,GAAI,EAAGoD,EAAW9B,UAAWrwB,MAAQ,CAC1FsrD,cAAc,EAEjB,CA6CD,SAASwgB,eAAeza,EAAesW,GACrC3nE,KAAKqxD,cAAgBA,EACrBrxD,KAAK4kB,OAAS,KACd5kB,KAAK6mC,eAAiB,EACtB7mC,KAAK4pD,aAAe,CAClB2e,UAAWZ,GAAUA,EAAOY,WAAa,GACzCnS,yBAA0BuR,GAAUA,EAAOvR,0BAA4B,iBACvEvM,oBAAqB8d,IAAuC,IAA7BA,EAAO9d,mBACtC4e,WAAY,CACV39C,MAAO68C,GAAUA,EAAOc,YAAcd,EAAOc,WAAW39C,OAAS,OACjEC,OAAQ48C,GAAUA,EAAOc,YAAcd,EAAOc,WAAW19C,QAAU,OACnE4P,EAAGgtC,GAAUA,EAAOc,YAAcd,EAAOc,WAAW9tC,GAAK,QACzDuJ,EAAGyjC,GAAUA,EAAOc,YAAcd,EAAOc,WAAWvkC,GAAK,SAE3DwkC,gBAAiBf,QAAoCpnE,IAA1BonE,EAAOe,gBAAgCf,EAAOe,gBAE3E1oE,KAAKmyB,WAAa,CAChBiV,MAAM,EACN/E,UAAW,EACXunB,aAAc5pD,KAAK4pD,cAErB5pD,KAAKixD,gBAAkB,GACvBjxD,KAAKmY,SAAW,GAChBnY,KAAK2rE,eAAiB,GACtB3rE,KAAK2oE,WAAY,EACjB3oE,KAAK4rE,OAAS,KACd5rE,KAAKynE,YAAa,EAClBznE,KAAKy0B,aAAe,MACrB,CAvpHDtZ,gBAAgB,CAAC0vC,YAAaa,iBAAkB4H,eAAgBuC,iBAAkB7G,aAAcuE,qBAAsB6Q,cAAe2H,sBAErIA,qBAAqB1sE,UAAU22D,cAAgB,WACzCh2D,KAAKuQ,KAAKy7D,cAAgBhsE,KAAKmyB,WAAWkB,YAAYrM,QACxDhnB,KAAKisE,cAAgB1oD,SAAS,QAEpC,EAEEwoD,qBAAqB1sE,UAAU6sE,kBAAoB,SAAUC,GAM3D,IALA,IAAKtkE,EAAG,EACD0T,EAAG4wD,EAAU3rE,OACJ4rE,EAAG,KACM,GAElBvkE,EAAI0T,GACL4wD,EAAUtkE,KAAO9G,OAAOsrE,aAAa,KAAOF,EAAUtkE,KAAO9G,OAAOsrE,aAAa,IACnFD,EAAapnE,KAAKsnE,GAClBA,EAAqB,IAErBA,GAAsBH,EAAUtkE,GAGlCA,GAAK,EAIP,OADAukE,EAAapnE,KAAKsnE,GACXF,CACX,EAEEL,qBAAqB1sE,UAAUktE,eAAiB,SAAUh8D,EAAMyiC,GAK9D,GAAIziC,EAAKqV,QAAUrV,EAAKqV,OAAOplB,OAAQ,CACrC,MAAY+P,EAAKqV,OAAO,GAExB,GAAIskB,EAAM/jB,GAAI,CACZ,IAAIqmD,EAAYtiC,EAAM/jB,GAAG+jB,EAAM/jB,GAAG3lB,OAAS,GAEvCgsE,EAAU7qE,IACZ6qE,EAAU7qE,EAAEwJ,EAAE,GAAK6nC,EACnBw5B,EAAU7qE,EAAEwJ,EAAE,GAAK6nC,EAEtB,CACF,CAED,QACJ,EAEE+4B,qBAAqB1sE,UAAUqnE,aAAe,WAE5C,IAAI7+D,EACA0T,EAFJvb,KAAK8nC,mBAAmB9nC,MAGxB,IAAgB2mB,EAAG3mB,KAAK4iE,aAAavG,YACrCr8D,KAAKkkE,gBAAkBlmD,iBAAiB2I,EAAeA,EAAa/Y,EAAEpN,OAAS,GAE3EmmB,EAAao1C,GACf/7D,KAAK6uD,aAAa3sD,aAAa,OAAQlC,KAAKgnE,WAAWrgD,EAAao1C,KAEpE/7D,KAAK6uD,aAAa3sD,aAAa,OAAQ,iBAGrCykB,EAAaohC,KACf/nD,KAAK6uD,aAAa3sD,aAAa,SAAUlC,KAAKgnE,WAAWrgD,EAAaohC,KACtE/nD,KAAK6uD,aAAa3sD,aAAa,eAAgBykB,EAAam1C,KAG9D97D,KAAK6uD,aAAa3sD,aAAa,YAAaykB,EAAau2C,WACzD,IAAY5d,EAAGt/C,KAAKmyB,WAAWkB,YAAYg1B,cAAc1hC,EAAazE,GAEtE,GAAIo9B,EAASiG,OACXvlD,KAAK6uD,aAAa3sD,aAAa,QAASo9C,EAASiG,YAC5C,CACLvlD,KAAK6uD,aAAa3sD,aAAa,cAAeo9C,EAASgG,SACvD,IAAW9F,EAAG74B,EAAa64B,QACjBD,EAAG54B,EAAa44B,OAC1Bv/C,KAAK6uD,aAAa3sD,aAAa,aAAcq9C,GAC7Cv/C,KAAK6uD,aAAa3sD,aAAa,cAAes9C,EAC/C,CAEDx/C,KAAK6uD,aAAa3sD,aAAa,aAAcykB,EAAate,GAC1D,IAGSokE,EAHLjM,EAAU75C,EAAa/Y,GAAK,GAC5B8+D,IAAe1sE,KAAKmyB,WAAWkB,YAAYrM,MAC/CzL,EAAMilD,EAAQhgE,OAEd,IAAIqkE,EAAe7kE,KAAKgyD,QAEpBga,EAAchsE,KAAKuQ,KAAKy7D,YACxB9G,EAAO,EACPX,EAAO,KACK,EACEtE,EAAqB,KAAlBt5C,EAAag5B,GAAah5B,EAAau2C,UAE5D,IAAI8O,GAAgBU,GAAe/lD,EAAasoB,GA4CzC,CACL,IACYhoB,EADR0lD,EAAoB3sE,KAAKonE,UAAU5mE,OAGvC,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAS3B,GARK7H,KAAKonE,UAAUv/D,KAClB7H,KAAKonE,UAAUv/D,GAAK,CAClB+kE,KAAM,KACNC,UAAW,KACXC,MAAO,QAINJ,IAAeV,GAAqB,IAANnkE,EAAS,CAG1C,GAFA4kE,EAAQE,EAAoB9kE,EAAI7H,KAAKonE,UAAUv/D,GAAG+kE,KAAOrpD,SAASmpD,EAAa,IAAM,QAEjFC,GAAqB9kE,EAAG,CAM1B,GALA4kE,EAAMvqE,aAAa,iBAAkB,QACrCuqE,EAAMvqE,aAAa,kBAAmB,SACtCuqE,EAAMvqE,aAAa,oBAAqB,KACxClC,KAAKonE,UAAUv/D,GAAG+kE,KAAOH,EAErBC,EAAY,CACd,IAAIG,EAAYtpD,SAAS,KACzBkpD,EAAMrqE,YAAYyqE,GAClB7sE,KAAKonE,UAAUv/D,GAAGglE,UAAYA,CAC/B,CAED7sE,KAAKonE,UAAUv/D,GAAG+kE,KAAOH,EACzBzsE,KAAK6uD,aAAazsD,YAAYqqE,EAC/B,CAEDA,EAAM5qE,MAAMse,QAAU,SACvB,CAkBD,GAhBA0kD,EAAar5B,QAETwgC,IACExL,EAAQ34D,GAAGuJ,IACb8zD,GAAQjF,EACRsE,GAAQ59C,EAAas2C,QACrBsH,GAAQY,EAAY,EAAI,EACxBA,GAAY,GAGdnlE,KAAK8mE,4BAA4BngD,EAAck+C,EAAcrE,EAAQ34D,GAAGymB,KAAM42C,EAAMX,GACpFW,GAAQ1E,EAAQ34D,GAAG+F,GAAK,EAExBs3D,GAAQjF,GAGNyM,EAAY,CAEd,IAAIK,EAEJ,GAAmB,KAHnB9lD,EAAWjnB,KAAKmyB,WAAWkB,YAAY20B,YAAYrhC,EAAaw2C,UAAUt1D,GAAIy3C,EAASC,OAAQv/C,KAAKmyB,WAAWkB,YAAYg1B,cAAc1hC,EAAazE,GAAGojC,UAG5Ij9C,EACX0kE,EAAe,mBAAmB9lD,EAAS1W,KAAMvQ,KAAKmyB,WAAYnyB,UAC7D,CACL,IAAIuQ,EAAO42D,eAEPlgD,EAAS1W,MAAQ0W,EAAS1W,KAAKqV,SACjCrV,EAAOvQ,KAAKusE,eAAetlD,EAAS1W,KAAMoW,EAAau2C,YAGzD6P,EAAe,oBAAoBx8D,EAAMvQ,KAAKmyB,WAAYnyB,KAC3D,CAED,GAAIA,KAAKonE,UAAUv/D,GAAGilE,MAAO,CAC3B,IAASA,EAAG9sE,KAAKonE,UAAUv/D,GAAGilE,MAC9B9sE,KAAKonE,UAAUv/D,GAAGglE,UAAUjkB,YAAYkkB,EAAMje,cAC9Cie,EAAMx/C,SACP,CAEDttB,KAAKonE,UAAUv/D,GAAGilE,MAAQC,EAC1BA,EAAaC,QAAS,EACtBD,EAAat9C,aAAa,GAC1Bs9C,EAAa93C,cACbj1B,KAAKonE,UAAUv/D,GAAGglE,UAAUzqE,YAAY2qE,EAAale,cAGlC,IAAf5nC,EAAS5e,GACXrI,KAAKonE,UAAUv/D,GAAGglE,UAAU3qE,aAAa,YAAa,SAAWykB,EAAau2C,UAAY,IAAM,IAAMv2C,EAAau2C,UAAY,IAAM,IAEjJ,MACc8O,GACFS,EAAMvqE,aAAa,YAAa,aAAe2iE,EAAar+D,MAAM,IAAM,IAAMq+D,EAAar+D,MAAM,IAAM,KAGzGimE,EAAMtqE,YAAcq+D,EAAQ34D,GAAGyX,IAC/BmtD,EAAM9+C,eAAe,uCAAwC,YAAa,WAG7E,CAEGq+C,GAAeS,GACjBA,EAAMvqE,aAAa,IAlJR,GAoJd,KA7ImD,CAClD,IAAY+qE,EAAGjtE,KAAKisE,cACTiB,EAAG,QAEd,OAAQvmD,EAAa7B,GACnB,KAAK,EACHooD,EAAU,MACV,MAEF,KAAM,EACJA,EAAU,SACV,MAEF,QACEA,EAAU,QAIdD,EAAS/qE,aAAa,cAAegrE,GACrCD,EAAS/qE,aAAa,iBAAkB+9D,GACxC,IAAI99D,EAAcnC,KAAKksE,kBAAkBvlD,EAAaw2C,WAItD,IAHA5hD,EAAMpZ,EAAY3B,OAClB+jE,EAAO59C,EAAak2C,GAAKl2C,EAAak2C,GAAG,GAAKl2C,EAAa21C,OAAS,EAE/Dz0D,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACxB4kE,EAAQzsE,KAAKonE,UAAUv/D,GAAG+kE,MAAQrpD,SAAS,UACrCphB,YAAcA,EAAY0F,GAChC4kE,EAAMvqE,aAAa,IAAK,GACxBuqE,EAAMvqE,aAAa,IAAKqiE,GACxBkI,EAAM5qE,MAAMse,QAAU,UACtB8sD,EAAS7qE,YAAYqqE,GAEhBzsE,KAAKonE,UAAUv/D,KAClB7H,KAAKonE,UAAUv/D,GAAK,CAClB+kE,KAAM,KACNE,MAAO,OAIX9sE,KAAKonE,UAAUv/D,GAAG+kE,KAAOH,EACzBlI,GAAQ59C,EAAay2C,gBAGvBp9D,KAAK6uD,aAAazsD,YAAY6qE,EACpC,CAmGI,KAAOplE,EAAI7H,KAAKonE,UAAU5mE,QACxBR,KAAKonE,UAAUv/D,GAAG+kE,KAAK/qE,MAAMse,QAAU,OACvCtY,GAAK,EAGP7H,KAAKk0D,cAAe,CACxB,EAEE6X,qBAAqB1sE,UAAU0qD,iBAAmB,WAIhD,GAHA/pD,KAAKyvB,aAAazvB,KAAK+lB,KAAK8gB,cAAgB7mC,KAAKuQ,KAAK6W,IACtDpnB,KAAKi2D,qBAEDj2D,KAAKk0D,aAAc,CACrBl0D,KAAKk0D,cAAe,EACpB,IAAIiZ,EAAUntE,KAAK6uD,aAAaziC,UAChCpsB,KAAKotE,KAAO,CACVntD,IAAKktD,EAAQjpC,EACbhkB,KAAMitD,EAAQxyC,EACd7P,MAAOqiD,EAAQriD,MACfC,OAAQoiD,EAAQpiD,OAEnB,CAED,OAAW/qB,KAACotE,IAChB,EAEErB,qBAAqB1sE,UAAU4oC,SAAW,WACxC,IAAKpgC,EAEWklE,EADZxxD,EAAMvb,KAAKonE,UAAU5mE,OAIzB,IAFAR,KAAK6mC,cAAgB7mC,KAAK+lB,KAAK8gB,cAE1Bh/B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACxBklE,EAAe/sE,KAAKonE,UAAUv/D,GAAGilE,SAG/BC,EAAat9C,aAAazvB,KAAK+lB,KAAK8gB,cAAgB7mC,KAAKuQ,KAAK6W,IAE1D2lD,EAAa3lC,OACfpnC,KAAKonC,MAAO,GAItB,EAEE2kC,qBAAqB1sE,UAAU42D,mBAAqB,WAClD,KAAKj2D,KAAKuQ,KAAKy7D,aAAehsE,KAAKonC,QACjCpnC,KAAKymE,aAAanC,YAAYtkE,KAAK4iE,aAAavG,YAAar8D,KAAKmkE,oBAE9DnkE,KAAKmkE,oBAAsBnkE,KAAKymE,aAAatC,oBAAoB,CAEnE,IAAIt8D,EACG0T,EAFPvb,KAAKk0D,cAAe,EAGpB,IAGImZ,IAEYN,EALZ7I,EAAkBlkE,KAAKymE,aAAavC,gBACpC1D,EAAUxgE,KAAK4iE,aAAavG,YAAYzuD,EAM5C,IALA2N,EAAMilD,EAAQhgE,OAKTqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACnB24D,EAAQ34D,GAAGuJ,IACdi8D,EAAiBnJ,EAAgBr8D,GACjCylE,EAAWttE,KAAKonE,UAAUv/D,GAAG+kE,MAC7BG,EAAe/sE,KAAKonE,UAAUv/D,GAAGilE,QAG/BC,EAAa93C,cAGXo4C,EAAejmC,KAAKp3B,GACtBs9D,EAASprE,aAAa,YAAamrE,EAAer9D,GAGhDq9D,EAAejmC,KAAK/7B,GACtBiiE,EAASprE,aAAa,UAAWmrE,EAAehiE,GAG9CgiE,EAAejmC,KAAK00B,IACtBwR,EAASprE,aAAa,eAAgBmrE,EAAevR,IAGnDuR,EAAejmC,KAAK2gB,IACtBulB,EAASprE,aAAa,SAAUmrE,EAAetlB,IAG7CslB,EAAejmC,KAAK20B,IACtBuR,EAASprE,aAAa,OAAQmrE,EAAetR,IAIpD,CAEP,EAME5gD,gBAAgB,CAACq4C,eAAgB+Z,eAEjCA,cAAcluE,UAAU22D,cAAgB,WACtC,IAAI9J,EAAO3oC,SAAS,QAIpB2oC,EAAKhqD,aAAa,QAASlC,KAAKuQ,KAAKurD,IACrC5P,EAAKhqD,aAAa,SAAUlC,KAAKuQ,KAAKw0B,IACtCmnB,EAAKhqD,aAAa,OAAQlC,KAAKuQ,KAAKw3C,IACpC/nD,KAAK6uD,aAAazsD,YAAY8pD,EAClC,EAUEmb,YAAYhoE,UAAUowB,aAAe,SAAU85B,GAC7CvpD,KAAKivD,kBAAkB1F,GAAK,EAChC,EAEE8d,YAAYhoE,UAAU41B,YAAc,aAEpCoyC,YAAYhoE,UAAU+vD,eAAiB,WACrC,OAAW,IACf,EAEEiY,YAAYhoE,UAAUiuB,QAAU,WAAY,EAE5C+5C,YAAYhoE,UAAU0qD,iBAAmB,WAAY,EAErDsd,YAAYhoE,UAAU43B,KAAO,WAAc,EAE3C9b,gBAAgB,CAAC0vC,YAAaa,iBAAkBmK,iBAAkB7G,cAAeqY,aAIjFlsD,gBAAgB,CAACswC,cAAe6b,iBAEhCA,gBAAgBjoE,UAAU8wD,WAAa,SAAU5/C,GAC/C,OAAO,IAAe82D,YAAC92D,EAAMvQ,KAAKmyB,WAAYnyB,KAClD,EAEEsnE,gBAAgBjoE,UAAU+wD,YAAc,SAAU7/C,GAChD,OAAWmrD,IAAAA,gBAAgBnrD,EAAMvQ,KAAKmyB,WAAYnyB,KACtD,EAEEsnE,gBAAgBjoE,UAAUgxD,WAAa,SAAU9/C,GAC/C,OAAWw7D,IAAAA,qBAAqBx7D,EAAMvQ,KAAKmyB,WAAYnyB,KAC3D,EAEEsnE,gBAAgBjoE,UAAU2wD,YAAc,SAAUz/C,GAChD,OAAO,kBAAkBA,EAAMvQ,KAAKmyB,WAAYnyB,KACpD,EAEEsnE,gBAAgBjoE,UAAU6wD,YAAc,SAAU3/C,GAChD,OAAO,IAAiBg9D,cAACh9D,EAAMvQ,KAAKmyB,WAAYnyB,KACpD,EAEEsnE,gBAAgBjoE,UAAUoyB,gBAAkB,SAAUwC,GACpDj0B,KAAKiP,WAAW/M,aAAa,QAAS,8BACtClC,KAAKiP,WAAW/M,aAAa,cAAe,gCAExClC,KAAK4pD,aAAa0e,YACpBtoE,KAAKiP,WAAW/M,aAAa,UAAWlC,KAAK4pD,aAAa0e,aAE1DtoE,KAAKiP,WAAW/M,aAAa,UAAW,OAAS+xB,EAASiwB,EAAI,IAAMjwB,EAASziB,GAG1ExR,KAAK4pD,aAAaye,cACrBroE,KAAKiP,WAAW/M,aAAa,QAAS+xB,EAASiwB,GAC/ClkD,KAAKiP,WAAW/M,aAAa,SAAU+xB,EAASziB,GAChDxR,KAAKiP,WAAWpN,MAAMipB,MAAQ,OAC9B9qB,KAAKiP,WAAWpN,MAAMkpB,OAAS,OAC/B/qB,KAAKiP,WAAWpN,MAAMwtC,UAAY,qBAClCrvC,KAAKiP,WAAWpN,MAAMumE,kBAAoBpoE,KAAK4pD,aAAawe,mBAG1DpoE,KAAK4pD,aAAa9+B,OACpB9qB,KAAKiP,WAAW/M,aAAa,QAASlC,KAAK4pD,aAAa9+B,OAGtD9qB,KAAK4pD,aAAa7+B,QACpB/qB,KAAKiP,WAAW/M,aAAa,SAAUlC,KAAK4pD,aAAa7+B,QAGvD/qB,KAAK4pD,aAAa2e,WACpBvoE,KAAKiP,WAAW/M,aAAa,QAASlC,KAAK4pD,aAAa2e,WAGtDvoE,KAAK4pD,aAAa9jC,IACpB9lB,KAAKiP,WAAW/M,aAAa,KAAMlC,KAAK4pD,aAAa9jC,SAGnBvlB,IAAhCP,KAAK4pD,aAAa4e,WACpBxoE,KAAKiP,WAAW/M,aAAa,YAAalC,KAAK4pD,aAAa4e,WAG9DxoE,KAAKiP,WAAW/M,aAAa,sBAAuBlC,KAAK4pD,aAAaue,qBAGtEnoE,KAAKqxD,cAAct/B,QAAQ3vB,YAAYpC,KAAKiP,YAE5C,IAAImjB,EAAOpyB,KAAKmyB,WAAWC,KAC3BpyB,KAAKmxD,gBAAgBl9B,EAAU7B,GAC/BpyB,KAAKmyB,WAAWu+B,gBAAkB1wD,KAAK4pD,aAAa8G,gBACpD1wD,KAAKuQ,KAAO0jB,EACZ,IAAI23B,EAAcroC,SAAS,YACnB2oC,EAAG3oC,SAAS,QACpB2oC,EAAKhqD,aAAa,QAAS+xB,EAASiwB,GACpCgI,EAAKhqD,aAAa,SAAU+xB,EAASziB,GACrC06C,EAAKhqD,aAAa,IAAK,GACvBgqD,EAAKhqD,aAAa,IAAK,GACvB,IAAUu3D,EAAG93C,kBACbiqC,EAAY1pD,aAAa,KAAMu3D,GAC/B7N,EAAYxpD,YAAY8pD,GACxBlsD,KAAK6uD,aAAa3sD,aAAa,YAAa,OAAS4qD,kBAAoB,IAAM2M,EAAS,KACxFrnC,EAAKhwB,YAAYwpD,GACjB5rD,KAAK4kB,OAASqP,EAASrP,OACvB5kB,KAAKmY,SAAW6F,iBAAiBiW,EAASrP,OAAOpkB,OACrD,EAEE8mE,gBAAgBjoE,UAAUiuB,QAAU,WAOlC,IAAIzlB,EANA7H,KAAKqxD,cAAct/B,UACrB/xB,KAAKqxD,cAAct/B,QAAQmH,UAAY,IAGzCl5B,KAAK6uD,aAAe,KACpB7uD,KAAKmyB,WAAWC,KAAO,KAEvB,IAAI7W,EAAMvb,KAAK4kB,OAAS5kB,KAAK4kB,OAAOpkB,OAAS,EAE7C,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB7H,KAAKmY,SAAStQ,IAChB7H,KAAKmY,SAAStQ,GAAGylB,UAIrBttB,KAAKmY,SAAS3X,OAAS,EACvBR,KAAK2oE,WAAY,EACjB3oE,KAAKqxD,cAAgB,IACzB,EAEEiW,gBAAgBjoE,UAAUy1B,oBAAsB,aAEhDwyC,gBAAgBjoE,UAAUmuE,eAAiB,SAAUzpC,GACnD,IAAKl8B,EAAG,IACE7H,KAAK4kB,OAAOpkB,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,GAAI7H,KAAK4kB,OAAO/c,GAAGk8B,MAAQA,EACzB,SAIJ,OAAQ,CACZ,EAEEujC,gBAAgBjoE,UAAUuwD,UAAY,SAAU1mB,GAC9C,MAAelpC,KAAKmY,SAEpB,IAAIA,EAAS+wB,IAAgC,KAAxBlpC,KAAK4kB,OAAOskB,GAAK1jB,GAAtC,CAIArN,EAAS+wB,IAAO,EAChB,MAAclpC,KAAK8vD,WAAW9vD,KAAK4kB,OAAOskB,IAa1C,GAZA/wB,EAAS+wB,GAAO10B,EAEZwO,yBAC0B,IAAxBhjB,KAAK4kB,OAAOskB,GAAK1jB,IACnBxlB,KAAKmyB,WAAWd,iBAAiB/B,oBAAoB9a,GAGvDA,EAAQgf,mBAGVxzB,KAAKytE,mBAAmBj5D,EAAS00B,GAE7BlpC,KAAK4kB,OAAOskB,GAAKsrB,GAAI,CACvB,MAAmB,OAAYx0D,KAAC4kB,OAAOskB,GAAOlpC,KAAKwtE,eAAextE,KAAK4kB,OAAOskB,GAAKwkC,IAAMxkC,EAAM,EAE/F,IAAsB,IAAlBykC,EACF,OAGF,GAAK3tE,KAAKmY,SAASw1D,KAAiD,IAAhC3tE,KAAKmY,SAASw1D,GAG3C,CACL,IACIC,EADez1D,EAASw1D,GACCzY,SAASl1D,KAAK4kB,OAAOskB,GAAKsrB,IACvDhgD,EAAQohD,SAASgY,EAClB,MANC5tE,KAAK4vD,UAAU+d,GACf3tE,KAAKgxD,kBAAkBx8C,EAM1B,CA/BA,CAgCL,EAEE8yD,gBAAgBjoE,UAAUwwD,qBAAuB,WAC/C,KAAO7vD,KAAKixD,gBAAgBzwD,QAAQ,CAClC,MAAcR,KAAKixD,gBAAgBla,MAGnC,GAFAviC,EAAQuhD,iBAEJvhD,EAAQjE,KAAKikD,GAIf,IAHA,IAAI3sD,EAAI,EACD0T,EAAGvb,KAAKmY,SAAS3X,OAEjBqH,EAAI0T,GAAK,CACd,GAAIvb,KAAKmY,SAAStQ,KAAO2M,EAAS,CAChC,MAAmB,OAAeA,EAACjE,KAAOvQ,KAAKwtE,eAAeh5D,EAAQjE,KAAKm9D,IAAM7lE,EAAI,EAExE+lE,EADM5tE,KAAKmY,SAASw1D,GACJzY,SAASl1D,KAAK4kB,OAAO/c,GAAG2sD,IACrDhgD,EAAQohD,SAASgY,GACjB,KACD,CAED/lE,GAAK,CACN,CAEJ,CACL,EAEEy/D,gBAAgBjoE,UAAU41B,YAAc,SAAUs0B,GAChD,GAAIvpD,KAAK6mC,gBAAkB0iB,IAAOvpD,KAAK2oE,UAAvC,CAgBA,IAAK9gE,EAZO,OAAR0hD,EACFA,EAAMvpD,KAAK6mC,cAEX7mC,KAAK6mC,cAAgB0iB,EAKvBvpD,KAAKmyB,WAAWkQ,SAAWknB,EAC3BvpD,KAAKmyB,WAAWmV,SAAW,EAC3BtnC,KAAKmyB,WAAWd,iBAAiB1B,aAAe45B,EAChDvpD,KAAKmyB,WAAWiV,MAAO,EAEvB,IAAI7rB,EAAMvb,KAAK4kB,OAAOpkB,OAMtB,IAJKR,KAAK2kB,gBACR3kB,KAAK2vD,YAAYpG,GAGd1hD,EAAI0T,EAAM,EAAG1T,GAAK,EAAGA,GAAK,GACzB7H,KAAK2kB,gBAAkB3kB,KAAKmY,SAAStQ,KACvC7H,KAAKmY,SAAStQ,GAAG4nB,aAAa85B,EAAMvpD,KAAK4kB,OAAO/c,GAAGuf,IAIvD,GAAIpnB,KAAKmyB,WAAWiV,KAClB,IAAKv/B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACpB7H,KAAK2kB,gBAAkB3kB,KAAKmY,SAAStQ,KACvC7H,KAAKmY,SAAStQ,GAAGotB,aA9BtB,CAkCL,EAEEqyC,gBAAgBjoE,UAAUouE,mBAAqB,SAAUj5D,EAAS00B,GAChE,IAAcvM,EAAGnoB,EAAQ46C,iBAEzB,GAAKzyB,EAAL,CAOA,IAHA,MAAI90B,EAAI,EAGDA,EAAIqhC,GACLlpC,KAAKmY,SAAStQ,KAA2B,IAArB7H,KAAKmY,SAAStQ,IAAe7H,KAAKmY,SAAStQ,GAAGunD,mBACpEye,EAAc7tE,KAAKmY,SAAStQ,GAAGunD,kBAGjCvnD,GAAK,EAGHgmE,EACF7tE,KAAK6uD,aAAaj7C,aAAa+oB,EAAYkxC,GAE3C7tE,KAAK6uD,aAAazsD,YAAYu6B,EAhB/B,CAkBL,EAEE2qC,gBAAgBjoE,UAAU43B,KAAO,WAC/Bj3B,KAAK6uD,aAAahtD,MAAMse,QAAU,MACtC,EAEEmnD,gBAAgBjoE,UAAU63B,KAAO,WAC/Bl3B,KAAK6uD,aAAahtD,MAAMse,QAAU,OACtC,EAIEhF,gBAAgB,CAAC0vC,YAAaa,iBAAkBmK,iBAAkB7G,aAAcuE,sBAAuBgU,cAEvGA,aAAaloE,UAAUo0D,YAAc,SAAUljD,EAAM4hB,EAAYpM,GAC/D/lB,KAAKkiC,YACLliC,KAAKgrD,aAAaz6C,EAAM4hB,EAAYpM,GACpC/lB,KAAKuxD,cAAchhD,EAAM4hB,EAAYpM,GACrC/lB,KAAK8oD,iBACL9oD,KAAK81D,gBACL91D,KAAK8zD,sBACL9zD,KAAK+zD,0BACL/zD,KAAKg1D,8BAEDh1D,KAAKuQ,KAAKmf,IAAOyC,EAAWu+B,iBAC9B1wD,KAAKwwD,gBAGPxwD,KAAKi3B,MACT,EAcEswC,aAAaloE,UAAUowB,aAAe,SAAU85B,GAK9C,GAJAvpD,KAAKonC,MAAO,EACZpnC,KAAKspD,uBAAuBC,GAC5BvpD,KAAKivD,kBAAkB1F,EAAKvpD,KAAK+oD,WAE5B/oD,KAAK+oD,WAAc/oD,KAAKuQ,KAAKmf,GAAlC,CAIA,GAAK1vB,KAAK+uB,GAAGu8B,aASXtrD,KAAK6mC,cAAgB0iB,EAAMvpD,KAAKuQ,KAAK8W,OATZ,CACzB,IAAgBmoC,EAAGxvD,KAAK+uB,GAAG3tB,EAEvBouD,IAAiBxvD,KAAKuQ,KAAK4W,KAC7BqoC,EAAexvD,KAAKuQ,KAAK4W,GAAK,GAGhCnnB,KAAK6mC,cAAgB2oB,CAC3B,CAII,IAAK3nD,EACD0T,EAAMvb,KAAKmY,SAAS3X,OAOxB,IALKR,KAAK2kB,gBACR3kB,KAAK2vD,YAAY3vD,KAAK6mC,eAInBh/B,EAAI0T,EAAM,EAAG1T,GAAK,EAAGA,GAAK,GACzB7H,KAAK2kB,gBAAkB3kB,KAAKmY,SAAStQ,MACvC7H,KAAKmY,SAAStQ,GAAG4nB,aAAazvB,KAAK6mC,cAAgB7mC,KAAK4kB,OAAO/c,GAAGuf,IAE9DpnB,KAAKmY,SAAStQ,GAAGu/B,OACnBpnC,KAAKonC,MAAO,GA3BjB,CA+BL,EAEEmgC,aAAaloE,UAAU42D,mBAAqB,WAC1C,QACUj2D,KAAK4kB,OAAOpkB,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACpB7H,KAAK2kB,gBAAkB3kB,KAAKmY,SAAStQ,KACvC7H,KAAKmY,SAAStQ,GAAGotB,aAGzB,EAEEsyC,aAAaloE,UAAUyuE,YAAc,SAAUnsB,GAC7C3hD,KAAKmY,SAAWwpC,CACpB,EAEE4lB,aAAaloE,UAAU0uE,YAAc,WACnC,OAAW/tE,KAACmY,QAChB,EAEEovD,aAAaloE,UAAU2uE,gBAAkB,WACvC,QACUhuE,KAAK4kB,OAAOpkB,OAEtB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB7H,KAAKmY,SAAStQ,IAChB7H,KAAKmY,SAAStQ,GAAGylB,SAGzB,EAEEi6C,aAAaloE,UAAUiuB,QAAU,WAC/BttB,KAAKguE,kBACLhuE,KAAK+0D,oBACT,EAcE55C,gBAAgB,CAACmsD,gBAAiBC,aAAcjU,gBAAiBkU,gBAEjEA,eAAenoE,UAAU4wD,WAAa,SAAU1/C,GAC9C,WAAyBi3D,eAACj3D,EAAMvQ,KAAKmyB,WAAYnyB,KACrD,EAqEEmb,gBAAgB,CAACmsD,iBAAkBI,aAEnCA,YAAYroE,UAAU4wD,WAAa,SAAU1/C,GAC3C,OAAWi3D,IAAAA,eAAej3D,EAAMvQ,KAAKmyB,WAAYnyB,KACrD,EAkBE4oE,cAAcvpE,UAAU4uE,UAAY,WAClC,MAA+B,EAAfjuE,KAAKw8B,QACjB0xC,EAAiBluE,KAAKipE,QAC1BjpE,KAAKipE,QAAUvrD,iBAAiB,UAAWywD,GAC3CnuE,KAAKipE,QAAQtoE,IAAIutE,GACjB,MAAQ,EAER,IAAKrmE,EAAI7H,KAAKw8B,QAAS30B,EAAIsmE,EAAWtmE,GAAK,EACzC7H,KAAK6oE,MAAMhhE,GAAK6V,iBAAiB,UAAW,IAG9C1d,KAAKw8B,QAAU2xC,CACnB,EAEEvF,cAAcvpE,UAAUmsC,MAAQ,WAC9BxrC,KAAK8oE,QAAU,EACf9oE,KAAK+oE,IAAIv9B,QACTxrC,KAAKgpE,GAAK,CACd,EAQEE,sBAAsB7pE,UAAY,CAChCuqE,qBAAsB,SAA8B9X,GAClD,QACUA,EAAWtxD,OACdqF,EAAG,IAEV,IAAKgC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBhC,GAAOisD,EAAWjqD,GAAGwnC,UAAUxpC,IAAM,IAGvC,IAAIuoE,EAAWpuE,KAAKmpE,UAAUtjE,GAY9B,OAVKuoE,IACHA,EAAW,CACTtc,WAAY,GAAGj5B,OAAOi5B,GACtBpI,eAAgB,WAChBtiB,MAAM,GAERpnC,KAAKmpE,UAAUtjE,GAAOuoE,EACtBpuE,KAAKopE,aAAapkE,KAAKopE,IAGlBA,CACR,EACDC,gBAAiB,SAAyBD,EAAUlc,GAKlD,IAJA,MAAKrqD,EAAG,IACEumE,EAAStc,WAAWtxD,SACnB0xD,EAEJrqD,EAAI0T,IAAQ22C,GAAc,CAC/B,GAAIkc,EAAStc,WAAWjqD,GAAGwnC,UAAU8S,OAAO/a,KAAM,CAChDA,GAAO,EACP,KACD,CAEDv/B,GAAK,CACN,CAED,GAAIu/B,EAIF,IAFAgnC,EAAS1kB,eAAele,QAEnB3jC,EAAI0T,EAAM,EAAG1T,GAAK,EAAGA,GAAK,EAC7BrB,EAAQ4nE,EAAStc,WAAWjqD,GAAGwnC,UAAU8S,OAAO/gD,EAAEoF,MAClD4nE,EAAS1kB,eAAera,UAAU7oC,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,KAIvM4nE,EAAShnC,KAAOA,CACjB,EACDknC,iBAAkB,SAA0Bpc,GAC1C,IAAIrqD,EACA0T,EAAMvb,KAAKopE,aAAa5oE,OAE5B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKquE,gBAAgBruE,KAAKopE,aAAavhE,GAAIqqD,EAE9C,EACDqc,UAAW,WAET,OADAvuE,KAAKqpE,qBAAuB,EACrB,IAAMrpE,KAAKqpE,mBACnB,GAKHC,UAAUjqE,UAAU41B,YAAc,WAAY,EA0B9Cu5C,cAAcnvE,UAAU41B,YAAc,WACpC,GAAKj1B,KAAKupE,SAAV,CAIA,IAEI1hE,EAEAwd,EACG8sB,EACC5hC,EANK8+B,EAAGrvC,KAAKwU,QAAQk1C,eAAehR,IACxC1tB,EAAMhrB,KAAKwU,QAAQi6D,cAEnBlzD,EAAMvb,KAAKklB,gBAAgB1kB,OAM/B,IAFAwqB,EAAI0jD,YAEC7mE,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,GAAqC,MAAjC7H,KAAKklB,gBAAgBrd,GAAGuD,KAAc,CAYxC,IAAK0Z,EAXD9kB,KAAKklB,gBAAgBrd,GAAGu4C,MAC1Bp1B,EAAI2jD,OAAO,EAAG,GACd3jD,EAAI4jD,OAAO5uE,KAAKwU,QAAQ2d,WAAWm/B,SAASpN,EAAG,GAC/Cl5B,EAAI4jD,OAAO5uE,KAAKwU,QAAQ2d,WAAWm/B,SAASpN,EAAGlkD,KAAKwU,QAAQ2d,WAAWm/B,SAAS9/C,GAChFwZ,EAAI4jD,OAAO,EAAG5uE,KAAKwU,QAAQ2d,WAAWm/B,SAAS9/C,GAC/CwZ,EAAI4jD,OAAO,EAAG,IAGhBr+D,EAAOvQ,KAAK6rD,SAAShkD,GAAGzG,EACxBikB,EAAKgqB,EAAU4C,kBAAkB1hC,EAAKnP,EAAE,GAAG,GAAImP,EAAKnP,EAAE,GAAG,GAAI,GAC7D4pB,EAAI2jD,OAAOtpD,EAAG,GAAIA,EAAG,IAErB,IAAQF,EAAG5U,EAAKisB,QAEhB,IAAK1X,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBqtB,EAAM9C,EAAUgD,oBAAoB9hC,EAAKlF,EAAEyZ,EAAI,GAAIvU,EAAK1I,EAAEid,GAAIvU,EAAKnP,EAAE0jB,IACrEkG,EAAI6jD,cAAc18B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGhEA,EAAM9C,EAAUgD,oBAAoB9hC,EAAKlF,EAAEyZ,EAAI,GAAIvU,EAAK1I,EAAE,GAAI0I,EAAKnP,EAAE,IACrE4pB,EAAI6jD,cAAc18B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAC/D,CAGHnyC,KAAKwU,QAAQ2d,WAAWtB,SAASi+C,MAAK,GACtC9jD,EAAI+jD,MAtCH,CAuCL,EAEEP,cAAcnvE,UAAU4yD,gBAAkBtG,YAAYtsD,UAAU4yD,gBAEhEuc,cAAcnvE,UAAUiuB,QAAU,WAChCttB,KAAKwU,QAAU,IACnB,EAIEg1D,cAAcnqE,UAAY,CACxB2vE,eAAgB,WAA4B,EAC5Clb,oBAAqB,WAA+B,EACpDC,wBAAyB,WACvB/zD,KAAKyuE,cAAgBzuE,KAAKmyB,WAAWs8C,cACrCzuE,KAAKi1D,yBAA2B,IAAIqU,UAAUtpE,KAC/C,EACDg2D,cAAe,aACfvH,aAAc,WACZ,IAAIt8B,EAAanyB,KAAKmyB,WAEtB,GAAIA,EAAW88C,YAAcjvE,KAAKuQ,KAAKo+C,GAAI,CACzCx8B,EAAW88C,UAAYjvE,KAAKuQ,KAAKo+C,GACjC,MAAqBzE,aAAalqD,KAAKuQ,KAAKo+C,IAC5Cx8B,EAAWs8C,cAAcS,yBAA2BxgB,CACrD,CACF,EACDsG,2BAA4B,WAC1Bh1D,KAAK+tD,YAAc,IAAiBygB,cAACxuE,KAAKuQ,KAAMvQ,KACjD,EACDmvE,YAAa,WACNnvE,KAAKgpD,QAAYhpD,KAAK+oD,YAAa/oD,KAAKipD,gBAC3CjpD,KAAKgpD,QAAS,EAEjB,EACDomB,YAAa,WACPpvE,KAAK+oD,YAAc/oD,KAAKipD,gBAC1BjpD,KAAKgpD,QAAS,EACdhpD,KAAKynC,eAAgB,EACrBznC,KAAK+tD,YAAYtmB,eAAgB,EAEpC,EACDxS,YAAa,WACX,IAAIj1B,KAAKgpD,SAAUhpD,KAAKuQ,KAAKmkD,GAA7B,CAIA10D,KAAK2xD,kBACL3xD,KAAK8pD,mBACL9pD,KAAKyuD,eACL,MAAsC,IAAjBzuD,KAAKuQ,KAAKiV,GAC/BxlB,KAAKmyB,WAAWtB,SAASi+C,KAAKO,GAC9BrvE,KAAKmyB,WAAWtB,SAASy+C,aAAatvE,KAAK0pD,eAAehR,IAAIlyC,OAC9DxG,KAAKmyB,WAAWtB,SAAS0+C,WAAWvvE,KAAK0pD,eAAeC,MAAMt+C,EAAEjK,GAChEpB,KAAKi2D,qBACLj2D,KAAKmyB,WAAWtB,SAAS2+C,QAAQH,GAE7BrvE,KAAK+tD,YAAYwb,UACnBvpE,KAAKmyB,WAAWtB,SAAS2+C,SAAQ,GAG/BxvE,KAAKynC,gBACPznC,KAAKynC,eAAgB,EAjBtB,CAmBF,EACDna,QAAS,WACPttB,KAAKyuE,cAAgB,KACrBzuE,KAAKuQ,KAAO,KACZvQ,KAAKmyB,WAAa,KAClBnyB,KAAK+tD,YAAYzgC,SAClB,EACD0kC,QAAS,IAAU/jB,QAErBu7B,cAAcnqE,UAAU43B,KAAOuyC,cAAcnqE,UAAU8vE,YACvD3F,cAAcnqE,UAAU63B,KAAOsyC,cAAcnqE,UAAU+vE,YAgCvDK,YAAYpwE,UAAUq2C,cAAgBqhB,aAAa13D,UAAUq2C,cAc7Dv6B,gBAAgB,CAAC0vC,YAAaa,iBAAkB8d,cAAe5V,cAAeiC,iBAAkB7G,aAAcnG,mBAAoBihB,gBAClIA,eAAezqE,UAAUo0D,YAAcF,qBAAqBl0D,UAAUo0D,YACtEqW,eAAezqE,UAAUqwE,gBAAkB,CACzCC,QAAS,EACTle,QAAQ,GAEVqY,eAAezqE,UAAUuwE,aAAe,GAExC9F,eAAezqE,UAAU22D,cAAgB,WACvCh2D,KAAK29D,aAAa39D,KAAKsuD,WAAYtuD,KAAKuuD,UAAWvuD,KAAK24D,cAAc,EAAM,GAChF,EAEEmR,eAAezqE,UAAU2+D,mBAAqB,SAAUztD,EAAMuhD,GAC5D,MAAgB,CACdvhD,KAAMA,EACNvN,KAAMuN,EAAKiV,GACXqqD,cAAe7vE,KAAKypE,kBAAkBG,qBAAqB9X,GAC3DA,WAAY,GACZ35C,SAAU,GACV4P,QAAoB,IAAZxX,EAAKmkD,MAEG,CAAE,EAsBpB,GApBgB,OAAZnkD,EAAKiV,IAA2B,OAAZjV,EAAKiV,IAC3By4C,EAAYj1D,EAAIi5B,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKvH,EAAG,EAAG,IAAKhJ,MAEzDi+D,EAAYj1D,EAAEmC,IACjB4vD,EAAU+U,GAAK,OAASlxD,QAAQq/C,EAAYj1D,EAAE5H,EAAE,IAAM,IAAMwd,QAAQq/C,EAAYj1D,EAAE5H,EAAE,IAAM,IAAMwd,QAAQq/C,EAAYj1D,EAAE5H,EAAE,IAAM,MAE3G,OAAZmP,EAAKiV,IAA2B,OAAZjV,EAAKiV,KAClCy4C,EAAYt8D,EAAIsgC,gBAAgBqG,QAAQtoC,KAAMuQ,EAAK5O,EAAG,EAAG,KAAM3B,MAC/Di+D,EAAYv6D,EAAIu+B,gBAAgBqG,QAAQtoC,KAAMuQ,EAAK7M,EAAG,EAAG,KAAM1D,MAC/Di+D,EAAYzsD,EAAIywB,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKiB,GAAK,CACtDrG,EAAG,GACF,EAAG,IAAMnL,MACZi+D,EAAY32C,EAAI2a,gBAAgBqG,QAAQtoC,KAAMuQ,EAAK+W,GAAK,CACtDnc,EAAG,GACF,EAAGsU,UAAWzf,MACjBi+D,EAAYl8C,EAAI,IAAoBi2C,iBAACh4D,KAAMuQ,EAAKwR,EAAG/hB,OAGrDi+D,EAAY5yD,EAAI42B,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKlF,EAAG,EAAG,IAAMrL,MAE/C,OAAZuQ,EAAKiV,IAA2B,OAAZjV,EAAKiV,IAe3B,GAdAu1C,EAAUpB,GAAK9C,YAAYtmD,EAAKopD,IAAM,GACtCoB,EAAUpX,GAAKmT,aAAavmD,EAAKozC,IAAM,GAExB,GAAXpzC,EAAKozC,KAEPoX,EAAUrX,GAAKnzC,EAAKmzC,IAGtBua,EAAY/Z,EAAIjiB,gBAAgBqG,QAAQtoC,KAAMuQ,EAAK2zC,EAAG,EAAG,KAAMlkD,MAE1Di+D,EAAY/Z,EAAE/4C,IACjB4vD,EAAUgV,GAAK9R,EAAY/Z,EAAE9iD,GAG3BmP,EAAKtE,EAAG,CACV,IAAIA,EAAI,IAAIsrD,aAAav3D,KAAMuQ,EAAKtE,EAAG,SAAUjM,MACjDi+D,EAAYhyD,EAAIA,EAEXgyD,EAAYhyD,EAAEd,IACjB4vD,EAAUiV,GAAK/R,EAAYhyD,EAAEyrD,UAC7BqD,EAAc,GAAIkD,EAAYhyD,EAAE0rD,WAAW,GAE9C,OAEDoD,EAAU1pD,EAAe,IAAXd,EAAKc,EAAU,UAAY,UAK3C,OAFArR,KAAK27D,WAAW32D,KAAK+1D,GACrBkD,EAAYp8D,MAAQk5D,EACFkD,CACtB,EAEE6L,eAAezqE,UAAU8+D,mBAAqB,WAK5C,MAJkB,CAChBh4C,GAAI,GACJwyC,aAAc,GAGpB,EAEEmR,eAAezqE,UAAU++D,uBAAyB,SAAU7tD,GAU1D,MATkB,CAChB8+B,UAAW,CACTsgC,QAAS,EACTle,QAAQ,EACR5rD,IAAK7F,KAAKypE,kBAAkB8E,YAC5BpnD,GAAI8a,gBAAgBqG,QAAQtoC,KAAMuQ,EAAKlF,EAAG,EAAG,IAAMrL,MACnDmiD,OAAQtK,yBAAyBqB,qBAAqBl5C,KAAMuQ,EAAMvQ,OAI1E,EAEE8pE,eAAezqE,UAAUi/D,mBAAqB,SAAU/tD,GACtD,IAAI0tD,EAAc,IAAIwR,YAAYzvE,KAAMuQ,EAAMvQ,KAAK27D,WAAY37D,KAAKypE,mBAGpE,OAFAzpE,KAAK4lB,OAAO5gB,KAAKi5D,GACjBj+D,KAAKq2D,oBAAoB4H,GAClBA,CACX,EAEE6L,eAAezqE,UAAUqiD,aAAe,WAEtC,MADA1hD,KAAKynC,eAAgB,EAErB,MAAUznC,KAAKuuD,UAAU/tD,OAEzB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK24D,aAAa9wD,GAAK7H,KAAKuuD,UAAU1mD,GAMxC,IAHA7H,KAAK29D,aAAa39D,KAAKsuD,WAAYtuD,KAAKuuD,UAAWvuD,KAAK24D,cAAc,EAAM,IAC5Ep9C,EAAMvb,KAAKwoC,kBAAkBhoC,OAExBqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKwoC,kBAAkB3gC,GAAGogC,WAG5BjoC,KAAKy2D,kBACLz2D,KAAKypE,kBAAkB6E,iBAAiBtuE,KAAKynC,cACjD,EAEEqiC,eAAezqE,UAAU4wE,wBAA0B,SAAU5gC,GAC3D,IAAKxnC,EACE0T,EAAGvb,KAAK27D,WAAWn7D,OAE1B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACnB7H,KAAK27D,WAAW9zD,GAAGkgB,QACtB/nB,KAAK27D,WAAW9zD,GAAGiqD,WAAW9sD,KAAKqqC,EAG3C,EAEEy6B,eAAezqE,UAAU6wE,6BAA+B,WACtD,QACUlwE,KAAK27D,WAAWn7D,OAE1B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACnB7H,KAAK27D,WAAW9zD,GAAGkgB,QACtB/nB,KAAK27D,WAAW9zD,GAAGiqD,WAAW/a,KAGtC,EAEE+yB,eAAezqE,UAAU8wE,YAAc,SAAU3uE,GAC/C,IAAKqG,EACD0T,EAAM/Z,EAAOhB,OAEjB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBrG,EAAOqG,GAAGkgB,QAAS,CAEzB,EAEE+hD,eAAezqE,UAAUs+D,aAAe,SAAU//C,EAAK2wC,EAAWoK,EAAcyX,EAActe,GAC5F,IAAIjqD,EAEAid,EACAK,QAFA5J,EAAMqC,EAAIpd,OAAS,EAGnBq+D,EAAY,GACAC,EAAG,KAIC,GAAGjmC,OAAOi5B,GAE9B,IAAKjqD,EAAI0T,EAAK1T,GAAK,EAAGA,GAAK,EAAG,CAS5B,IARA+2D,EAAe5+D,KAAK02D,uBAAuB94C,EAAI/V,KAK7C0mD,EAAU1mD,GAAK8wD,EAAaiG,EAAe,GAF3ChhD,EAAI/V,GAAGwoE,cAAgBD,EAKP,OAAdxyD,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,GACtEo5C,EAGHrQ,EAAU1mD,GAAGhG,MAAMkmB,QAAS,EAF5BwmC,EAAU1mD,GAAK7H,KAAKg+D,mBAAmBpgD,EAAI/V,GAAIyoE,GAKjDzR,EAAU75D,KAAKupD,EAAU1mD,GAAGhG,eACL,OAAd+b,EAAI/V,GAAG2d,GAAa,CAC7B,GAAKo5C,EAKH,IAFAz5C,EAAOopC,EAAU1mD,GAAGse,GAAG3lB,OAElBskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzBypC,EAAU1mD,GAAG8wD,aAAa7zC,GAAKypC,EAAU1mD,GAAGse,GAAGrB,QALjDypC,EAAU1mD,GAAK7H,KAAKm+D,mBAAmBvgD,EAAI/V,IAS7C7H,KAAK29D,aAAa//C,EAAI/V,GAAGse,GAAIooC,EAAU1mD,GAAGse,GAAIooC,EAAU1mD,GAAG8wD,aAAcyX,EAAcE,EACxF,KAAwB,OAAd1yD,EAAI/V,GAAG2d,IACXo5C,IACHF,EAAmB1+D,KAAKo+D,uBAAuBxgD,EAAI/V,IACnD0mD,EAAU1mD,GAAK62D,GAGjB4R,EAActrE,KAAKupD,EAAU1mD,IAC7B7H,KAAKiwE,wBAAwB1hB,EAAU1mD,KAChB,OAAd+V,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,GAC7Eo5C,IACHrQ,EAAU1mD,GAAK7H,KAAKs+D,mBAAmB1gD,EAAI/V,KAEtB,OAAd+V,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IAA6B,OAAd5H,EAAI/V,GAAG2d,IACnGo5C,GAMHD,EAAWpQ,EAAU1mD,IACZkgB,QAAS,IANlB42C,EAAW1pB,eAAeG,YAAYx3B,EAAI/V,GAAG2d,KACpC+Q,KAAKv2B,KAAM4d,EAAI/V,IACxB0mD,EAAU1mD,GAAK82D,EACf3+D,KAAKs2D,eAAetxD,KAAK25D,IAM3BG,EAAa95D,KAAK25D,IACK,OAAd/gD,EAAI/V,GAAG2d,KACXo5C,GAOHD,EAAWpQ,EAAU1mD,IACZkgB,QAAS,GAPlB42C,EAAW1pB,eAAeG,YAAYx3B,EAAI/V,GAAG2d,IAC7C+oC,EAAU1mD,GAAK82D,EACfA,EAASpoC,KAAKv2B,KAAM4d,EAAK/V,EAAG0mD,GAC5BvuD,KAAKs2D,eAAetxD,KAAK25D,GACzByR,GAAe,GAMjBtR,EAAa95D,KAAK25D,IAGpB3+D,KAAK42D,oBAAoBh5C,EAAI/V,GAAIA,EAAI,EACtC,CAMD,IAJA7H,KAAKkwE,+BACLlwE,KAAKmwE,YAAYtR,GACjBtjD,EAAMujD,EAAat+D,OAEdqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBi3D,EAAaj3D,GAAGkgB,QAAS,CAE/B,EAEE+hD,eAAezqE,UAAU42D,mBAAqB,WAC5Cj2D,KAAK0vE,gBAAgBC,QAAU,EAC/B3vE,KAAK0vE,gBAAgBje,QAAS,EAC9BzxD,KAAKy2D,kBACLz2D,KAAKypE,kBAAkB6E,iBAAiBtuE,KAAKynC,eAC7CznC,KAAK++D,YAAY/+D,KAAK0vE,gBAAiB1vE,KAAKsuD,WAAYtuD,KAAKuuD,WAAW,EAC5E,EAEEub,eAAezqE,UAAUkxE,qBAAuB,SAAUC,EAAiBC,IACrED,EAAgB/e,QAAUgf,EAAetpD,GAAGigB,MAAQpnC,KAAKynC,iBAC3DgpC,EAAed,QAAUa,EAAgBb,QACzCc,EAAed,SAAWc,EAAetpD,GAAG/lB,EAC5CqvE,EAAehf,QAAS,EAE9B,EAEEqY,eAAezqE,UAAUqxE,UAAY,WACnC,IAAK7oE,EAEAid,EACGK,EACHha,EACGoa,EACCo8B,EACAgvB,EAGD3tE,EACQ4tE,EAVTr1D,EAAGvb,KAAK27D,WAAWn7D,OAOdqwB,EAAG7wB,KAAKmyB,WAAWtB,SACxB7F,EAAGhrB,KAAKmyB,WAAWs8C,cAI1B,IAAK5mE,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAQxB,IAAgB,QANhB7E,GADA4tE,EAAe5wE,KAAK27D,WAAW9zD,IACX7E,OAMa,OAATA,GAAsC,IAApB4tE,EAAab,KAAaa,EAAargE,KAAK8/D,eAAuC,IAAtBO,EAAaC,MAAqD,IAAvC7wE,KAAKmyB,WAAWu4C,mBAA2B,CAuB3K,IAtBA75C,EAASi+C,OACTntB,EAAQivB,EAAaz4D,SAER,OAATnV,GAA0B,OAATA,GACnBgoB,EAAI8lD,YAAuB,OAAT9tE,EAAgB4tE,EAAad,GAAKc,EAAaG,IACjE/lD,EAAIo1C,UAAYwQ,EAAab,GAC7B/kD,EAAIgmD,QAAUJ,EAAajX,GAC3B3uC,EAAIizB,SAAW2yB,EAAajtB,GAC5B34B,EAAIkzB,WAAa0yB,EAAaltB,IAAM,GAEpC14B,EAAIE,UAAqB,OAATloB,EAAgB4tE,EAAad,GAAKc,EAAaG,IAGjElgD,EAAS0+C,WAAWqB,EAAaC,MAEpB,OAAT7tE,GAA0B,OAATA,GACnBgoB,EAAI0jD,YAGN79C,EAASy+C,aAAasB,EAAaf,cAAcnmB,eAAeljD,OAChE2e,EAAOw8B,EAAMnhD,OAERskB,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAAG,CAa5B,IAZa,OAAT9hB,GAA0B,OAATA,IACnBgoB,EAAI0jD,YAEAkC,EAAaZ,KACfhlD,EAAIimD,YAAYL,EAAaZ,IAC7BhlD,EAAIkmD,eAAiBN,EAAiB,KAK1CrrD,GADAorD,EAAQhvB,EAAM78B,GAAG+kD,SACJrpE,OAER2K,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACN,MAAfwlE,EAAMxlE,GAAG9C,EACX2iB,EAAI2jD,OAAOgC,EAAMxlE,GAAG/F,EAAE,GAAIurE,EAAMxlE,GAAG/F,EAAE,IACb,MAAfurE,EAAMxlE,GAAG9C,EAClB2iB,EAAI6jD,cAAc8B,EAAMxlE,GAAGgnC,IAAI,GAAIw+B,EAAMxlE,GAAGgnC,IAAI,GAAIw+B,EAAMxlE,GAAGgnC,IAAI,GAAIw+B,EAAMxlE,GAAGgnC,IAAI,GAAIw+B,EAAMxlE,GAAGgnC,IAAI,GAAIw+B,EAAMxlE,GAAGgnC,IAAI,IAEpHnnB,EAAImmD,YAIK,OAATnuE,GAA0B,OAATA,IACnBgoB,EAAI++C,SAEA6G,EAAaZ,IACfhlD,EAAIimD,YAAYjxE,KAAK4vE,cAG1B,CAEY,OAAT5sE,GAA0B,OAATA,GACnBgoB,EAAIvW,KAAKm8D,EAAav/D,GAGxBwf,EAAS2+C,SACV,CAEP,EAEE1F,eAAezqE,UAAU0/D,YAAc,SAAUyR,EAAiBtvB,EAAO3wC,EAAM6gE,GAC7E,IAAIvpE,EAEc4oE,EAGlB,IAFAA,EAAiBD,EAEZ3oE,EAJKq5C,EAAM1gD,OAAS,EAIXqH,GAAK,EAAGA,GAAK,EACL,OAAhBq5C,EAAMr5C,GAAG2d,IACXirD,EAAiBlgE,EAAK1I,GAAGwnC,UACzBrvC,KAAKuwE,qBAAqBC,EAAiBC,IAClB,OAAhBvvB,EAAMr5C,GAAG2d,IAA+B,OAAhB07B,EAAMr5C,GAAG2d,IAA+B,OAAhB07B,EAAMr5C,GAAG2d,IAA+B,OAAhB07B,EAAMr5C,GAAG2d,GAC1FxlB,KAAKy6D,WAAWvZ,EAAMr5C,GAAI0I,EAAK1I,IACN,OAAhBq5C,EAAMr5C,GAAG2d,GAClBxlB,KAAK86D,WAAW5Z,EAAMr5C,GAAI0I,EAAK1I,GAAI4oE,GACV,OAAhBvvB,EAAMr5C,GAAG2d,GAClBxlB,KAAKi7D,aAAa/Z,EAAMr5C,GAAI0I,EAAK1I,GAAI4oE,GACZ,OAAhBvvB,EAAMr5C,GAAG2d,IAA+B,OAAhB07B,EAAMr5C,GAAG2d,GAC1CxlB,KAAKqxE,mBAAmBnwB,EAAMr5C,GAAI0I,EAAK1I,GAAI4oE,GAClB,OAAhBvvB,EAAMr5C,GAAG2d,GAClBxlB,KAAK++D,YAAY0R,EAAgBvvB,EAAMr5C,GAAGse,GAAI5V,EAAK1I,GAAGse,IAC7C+6B,EAAMr5C,GAAG2d,GAIlB4rD,GACFpxE,KAAK0wE,WAEX,EAEE5G,eAAezqE,UAAUiyE,kBAAoB,SAAU3H,EAAaz/B,GAClE,GAAIlqC,KAAKynC,eAAiByC,EAAM9C,MAAQuiC,EAAY7X,WAAW1qB,KAAM,CACnE,IAEKv/B,EACE0T,EACFuJ,EAJDysD,EAAa5H,EAAYE,UACjB3/B,EAAMgB,MAIV/lB,EAAG+lB,EAAM1O,QACjB+0C,EAAW/wE,OAAS,EACpB,IAAIgxE,EAAoB7H,EAAY7X,WAAWpI,eAE/C,IAAK5kC,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAAG,CAC5B,MAAgBomB,EAAMtlB,OAAOd,GAE7B,GAAIstC,GAAaA,EAAUhxD,EAAG,CAG5B,IAFAma,EAAM62C,EAAU51B,QAEX30B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACd,IAANA,GACF0pE,EAAWvsE,KAAK,CACdqD,EAAG,IACHjD,EAAGosE,EAAkBv/B,kBAAkBmgB,EAAUhxD,EAAE,GAAG,GAAIgxD,EAAUhxD,EAAE,GAAG,GAAI,KAIjFmwE,EAAWvsE,KAAK,CACdqD,EAAG,IACH8pC,IAAKq/B,EAAkBn/B,oBAAoB+f,EAAU/mD,EAAExD,EAAI,GAAIuqD,EAAUvqD,EAAEA,GAAIuqD,EAAUhxD,EAAEyG,MAInF,IAAR0T,GACFg2D,EAAWvsE,KAAK,CACdqD,EAAG,IACHjD,EAAGosE,EAAkBv/B,kBAAkBmgB,EAAUhxD,EAAE,GAAG,GAAIgxD,EAAUhxD,EAAE,GAAG,GAAI,KAI7EgxD,EAAUppD,GAAKuS,IACjBg2D,EAAWvsE,KAAK,CACdqD,EAAG,IACH8pC,IAAKq/B,EAAkBn/B,oBAAoB+f,EAAU/mD,EAAExD,EAAI,GAAIuqD,EAAUvqD,EAAE,GAAIuqD,EAAUhxD,EAAE,MAE7FmwE,EAAWvsE,KAAK,CACdqD,EAAG,MAGR,CACF,CAEDshE,EAAYE,QAAU0H,CACvB,CACL,EAEEzH,eAAezqE,UAAUo7D,WAAa,SAAU/yC,EAAU6yC,GACxD,IAAoB,IAAhB7yC,EAASgtC,IAAehtC,EAAS2oD,cAAe,CAClD,IAAIxoE,EACA0T,EAAMg/C,EAASmP,aAAalpE,OAEhC,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKsxE,kBAAkB/W,EAASmP,aAAa7hE,GAAI0yD,EAASx1B,GAE7D,CACL,EAEE+kC,eAAezqE,UAAUy7D,WAAa,SAAUR,EAAWC,EAAUkW,GACnE,IAAa1V,EAAGR,EAAS14D,OAErB04D,EAASvxD,EAAEo+B,MAAQpnC,KAAKynC,iBAC1BszB,EAAU+U,GAAK,OAASlxD,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,IAAMwd,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,IAAMwd,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,MAGnHm5D,EAASlvD,EAAE+7B,MAAQqpC,EAAehf,QAAUzxD,KAAKynC,iBACnDszB,EAAU8V,KAAOtW,EAASlvD,EAAEjK,EAAIqvE,EAAed,QAErD,EAEE7F,eAAezqE,UAAUgyE,mBAAqB,SAAU/W,EAAWC,EAAUkW,GAC3E,IACOM,IADSxW,EAAS14D,MAGzB,IAAKk5D,EAAUgW,KAAOxW,EAASx4C,EAAEqlB,MAAQmzB,EAAS54D,EAAEylC,MAAQmzB,EAAS72D,EAAE0jC,MAAwB,IAAhBkzB,EAAUjyD,IAAYkyD,EAAS/oD,EAAE41B,MAAQmzB,EAASjzC,EAAE8f,MAAO,CACxI,MAAIpc,EAAMhrB,KAAKmyB,WAAWs8C,cACtB3wC,EAAMy8B,EAAS54D,EAAEP,EACjB28B,EAAMw8B,EAAS72D,EAAEtC,EAErB,GAAoB,IAAhBk5D,EAAUjyD,EACZ0oE,EAAM/lD,EAAIymD,qBAAqB3zC,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,QACtD,CACL,MAAUnyB,KAAK+S,KAAK/S,KAAK6S,IAAIqf,EAAI,GAAKC,EAAI,GAAI,GAAKnyB,KAAK6S,IAAIqf,EAAI,GAAKC,EAAI,GAAI,IACzEw9B,EAAM3vD,KAAKu6B,MAAMpI,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/CyD,EAAUg5B,EAAS/oD,EAAEpQ,EAErBmgC,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAGb,MAAWkM,EAAMlM,EACb5G,EAAI/uB,KAAK06B,IAAIi1B,EAAMhB,EAASjzC,EAAElmB,GAAKi8C,EAAOvf,EAAI,GAC9CoG,EAAIt4B,KAAKq6B,IAAIs1B,EAAMhB,EAASjzC,EAAElmB,GAAKi8C,EAAOvf,EAAI,GAClDizC,EAAM/lD,EAAI0mD,qBAAqB/2C,EAAGuJ,EAAG,EAAGpG,EAAI,GAAIA,EAAI,GAAI2P,EACzD,CAGD,MAAU6sB,EAAUv4C,EAAE3c,IACRm1D,EAASx4C,EAAE/Y,IACX,EAEd,IAAKnB,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB0yD,EAASx4C,EAAEu2C,aAAeiC,EAASx4C,EAAEq2C,eACvCuX,EAAUpV,EAASx4C,EAAE1W,EAAM,EAAJxD,EAAQ,IAGjCkpE,EAAIY,aAAatW,EAAY,EAAJxzD,GAAS,IAAK,QAAUwzD,EAAY,EAAJxzD,EAAQ,GAAK,IAAMwzD,EAAY,EAAJxzD,EAAQ,GAAK,IAAMwzD,EAAY,EAAJxzD,EAAQ,GAAK,IAAM8nE,EAAU,KAG9I5U,EAAUgW,IAAMA,CACjB,CAEDhW,EAAU8V,KAAOtW,EAASlvD,EAAEjK,EAAIqvE,EAAed,OACnD,EAEE7F,eAAezqE,UAAU47D,aAAe,SAAUX,EAAWC,EAAUkW,GACrE,IAAI1V,EAAYR,EAAS14D,QACjB04D,EAAStuD,EAEbA,IAAMA,EAAEm7B,MAAQpnC,KAAKynC,iBACvBszB,EAAUiV,GAAK/jE,EAAEyrD,UACjBqD,EAAc,GAAI9uD,EAAE0rD,WAAW,KAG7B4C,EAASvxD,EAAEo+B,MAAQpnC,KAAKynC,iBAC1BszB,EAAU+U,GAAK,OAASlxD,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,IAAMwd,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,IAAMwd,QAAQ27C,EAASvxD,EAAE5H,EAAE,IAAM,MAGnHm5D,EAASlvD,EAAE+7B,MAAQqpC,EAAehf,QAAUzxD,KAAKynC,iBACnDszB,EAAU8V,KAAOtW,EAASlvD,EAAEjK,EAAIqvE,EAAed,UAG7CpV,EAASrW,EAAE9c,MAAQpnC,KAAKynC,iBAC1BszB,EAAUgV,GAAKxV,EAASrW,EAAE9iD,EAEhC,EAEE0oE,eAAezqE,UAAUiuB,QAAU,WACjCttB,KAAKsuD,WAAa,KAClBtuD,KAAKmyB,WAAa,KAClBnyB,KAAKyuE,cAAgB,KACrBzuE,KAAK27D,WAAWn7D,OAAS,EACzBR,KAAKuuD,UAAU/tD,OAAS,CAC5B,EAsBE2a,gBAAgB,CAAC0vC,YAAaa,iBAAkB8d,cAAe3T,iBAAkB7G,aAAcnG,kBAAmBub,cAAewN,eACjIA,cAAcvyE,UAAUgmD,QAAUx6B,UAAU,UAAUI,WAAW,MAEjE2mD,cAAcvyE,UAAUqnE,aAAe,WACrC,IAAI//C,EAAe3mB,KAAK4iE,aAAavG,YACrCr8D,KAAKkkE,gBAAkBlmD,iBAAiB2I,EAAa/Y,EAAI+Y,EAAa/Y,EAAEpN,OAAS,GACjF,OAAc,EAEVmmB,EAAao1C,IACf8V,GAAU,EACV7xE,KAAKiB,OAAOwT,KAAOzU,KAAKgnE,WAAWrgD,EAAao1C,KAEhD/7D,KAAKiB,OAAOwT,KAAO,gBAGrBzU,KAAKyU,KAAOo9D,EACZ,IAAIC,GAAY,EAEZnrD,EAAaohC,KACf+pB,GAAY,EACZ9xE,KAAKiB,OAAO8oE,OAAS/pE,KAAKgnE,WAAWrgD,EAAaohC,IAClD/nD,KAAKiB,OAAOgpE,OAAStjD,EAAam1C,IAGpC,IACKj0D,EACE0T,EAOK0L,EACRuY,EACAr0B,IAEMya,EACLd,EACDK,EACAitC,IAEO2f,IAlBI/xE,KAAKmyB,WAAWkB,YAAYg1B,cAAc1hC,EAAazE,GAG3Ds+C,EAAG75C,EAAa/Y,EACXi3D,EAAG7kE,KAAKgyD,QACxBhyD,KAAK+pE,OAAS+H,EACd9xE,KAAKiB,OAAOipE,OAASvjD,EAAau2C,UAAY,MAAQl9D,KAAKmyB,WAAWkB,YAAYg1B,cAAc1hC,EAAazE,GAAGojC,QAChH/pC,EAAMoL,EAAaw2C,UAAU38D,OAY7B,IAAewrE,EAAGhsE,KAAKuQ,KAAKy7D,YACV/L,EAAqB,KAAlBt5C,EAAag5B,GAAah5B,EAAau2C,UACxDgI,EAAO,EACPX,EAAO,EACPY,GAAY,EACZr7B,EAAM,EAEV,IAAKjiC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAE3B23B,GADAvY,EAAWjnB,KAAKmyB,WAAWkB,YAAY20B,YAAYrhC,EAAaw2C,UAAUt1D,GAAIy3C,EAASC,OAAQv/C,KAAKmyB,WAAWkB,YAAYg1B,cAAc1hC,EAAazE,GAAGojC,WACjIr+B,EAAS1W,MAAQ,GACzCs0D,EAAar5B,QAETwgC,GAAexL,EAAQ34D,GAAGuJ,IAC5B8zD,GAAQjF,EACRsE,GAAQ59C,EAAas2C,QACrBsH,GAAQY,EAAY,EAAI,EACxBA,GAAY,GAIdhgD,GADAS,EAAS4Z,EAAU5Z,OAAS4Z,EAAU5Z,OAAO,GAAGO,GAAK,IACvC3lB,OACdqkE,EAAa7xB,MAAMrsB,EAAau2C,UAAY,IAAKv2C,EAAau2C,UAAY,KAEtE8O,GACFhsE,KAAK8mE,4BAA4BngD,EAAck+C,EAAcrE,EAAQ34D,GAAGymB,KAAM42C,EAAMX,GAGtFyN,EAAWh0D,iBAAiBmH,EAAO,GACnC,MAAsB,EAEtB,IAAKL,EAAI,EAAGA,EAAIK,EAAML,GAAK,EACzB,GAAqB,OAAjBc,EAAOd,GAAGU,GAAa,CAKzB,IAJAD,EAAOK,EAAOd,GAAGoB,GAAG/a,EAAEtD,EAAErH,OACxB4xD,EAAYxsC,EAAOd,GAAGoB,GAAG/a,EACzB4mE,EAAU,GAEL5mE,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACf,IAANA,GACF4mE,EAAQ/sE,KAAK6/D,EAAanzB,SAAS0gB,EAAUhxD,EAAE,GAAG,GAAIgxD,EAAUhxD,EAAE,GAAG,GAAI,GAAIyjE,EAAalzB,SAASygB,EAAUhxD,EAAE,GAAG,GAAIgxD,EAAUhxD,EAAE,GAAG,GAAI,IAG3I2wE,EAAQ/sE,KAAK6/D,EAAanzB,SAAS0gB,EAAU/mD,EAAEF,EAAI,GAAG,GAAIinD,EAAU/mD,EAAEF,EAAI,GAAG,GAAI,GAAI05D,EAAalzB,SAASygB,EAAU/mD,EAAEF,EAAI,GAAG,GAAIinD,EAAU/mD,EAAEF,EAAI,GAAG,GAAI,GAAI05D,EAAanzB,SAAS0gB,EAAUvqD,EAAEsD,GAAG,GAAIinD,EAAUvqD,EAAEsD,GAAG,GAAI,GAAI05D,EAAalzB,SAASygB,EAAUvqD,EAAEsD,GAAG,GAAIinD,EAAUvqD,EAAEsD,GAAG,GAAI,GAAI05D,EAAanzB,SAAS0gB,EAAUhxD,EAAE+J,GAAG,GAAIinD,EAAUhxD,EAAE+J,GAAG,GAAI,GAAI05D,EAAalzB,SAASygB,EAAUhxD,EAAE+J,GAAG,GAAIinD,EAAUhxD,EAAE+J,GAAG,GAAI,IAG3Z4mE,EAAQ/sE,KAAK6/D,EAAanzB,SAAS0gB,EAAU/mD,EAAEF,EAAI,GAAG,GAAIinD,EAAU/mD,EAAEF,EAAI,GAAG,GAAI,GAAI05D,EAAalzB,SAASygB,EAAU/mD,EAAEF,EAAI,GAAG,GAAIinD,EAAU/mD,EAAEF,EAAI,GAAG,GAAI,GAAI05D,EAAanzB,SAAS0gB,EAAUvqD,EAAE,GAAG,GAAIuqD,EAAUvqD,EAAE,GAAG,GAAI,GAAIg9D,EAAalzB,SAASygB,EAAUvqD,EAAE,GAAG,GAAIuqD,EAAUvqD,EAAE,GAAG,GAAI,GAAIg9D,EAAanzB,SAAS0gB,EAAUhxD,EAAE,GAAG,GAAIgxD,EAAUhxD,EAAE,GAAG,GAAI,GAAIyjE,EAAalzB,SAASygB,EAAUhxD,EAAE,GAAG,GAAIgxD,EAAUhxD,EAAE,GAAG,GAAI,IACzZ4wE,EAASC,GAAmBF,EAC5BE,GAAmB,CACpB,CAGCjG,IACF9G,GAAQ1E,EAAQ34D,GAAG+F,EACnBs3D,GAAQjF,GAGNjgE,KAAKonE,UAAUt9B,GACjB9pC,KAAKonE,UAAUt9B,GAAK9R,KAAOg6C,EAE3BhyE,KAAKonE,UAAUt9B,GAAO,CACpB9R,KAAMg6C,GAIVloC,GAAO,CACR,CACL,EAEE8nC,cAAcvyE,UAAU42D,mBAAqB,WAC3C,IAUIpuD,IAECid,EACGK,EACJha,EACIoa,EAfJyF,EAAMhrB,KAAKyuE,cACfzjD,EAAIq5B,KAAOrkD,KAAKiB,OAAOipE,OACvBl/C,EAAIgmD,QAAU,OACdhmD,EAAIizB,SAAW,QACfjzB,EAAIkzB,WAAa,EAEZl+C,KAAKuQ,KAAKy7D,aACbhsE,KAAKymE,aAAanC,YAAYtkE,KAAK4iE,aAAavG,YAAar8D,KAAKmkE,oBASpE,IAGIkJ,EAHenJ,EAAGlkE,KAAKymE,aAAavC,kBAC1BlkE,KAAK4iE,aAAavG,YAAYzuD,EAC5C2N,EAAMilD,EAAQhgE,OAEd,IAGYwxE,EACRD,IAJW,KACDG,EAAG,KACFC,EAAG,KAIlB,IAAKtqE,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,IAAK24D,EAAQ34D,GAAGuJ,EAAG,CASjB,IARAi8D,EAAiBnJ,EAAgBr8D,MAG/B7H,KAAKmyB,WAAWtB,SAASi+C,OACzB9uE,KAAKmyB,WAAWtB,SAASy+C,aAAajC,EAAejoE,GACrDpF,KAAKmyB,WAAWtB,SAAS0+C,WAAWlC,EAAehiE,IAGjDrL,KAAKyU,KAAM,CAeb,IAdI44D,GAAkBA,EAAetR,GAC/BqW,IAAa/E,EAAetR,KAC9BqW,EAAW/E,EAAetR,GAC1B/wC,EAAIE,UAAYmiD,EAAetR,IAExBqW,IAAapyE,KAAKiB,OAAOwT,OAClC29D,EAAWpyE,KAAKiB,OAAOwT,KACvBuW,EAAIE,UAAYlrB,KAAKiB,OAAOwT,MAI9B0Q,GADA6sD,EAAWhyE,KAAKonE,UAAUv/D,GAAGmwB,MACbx3B,OAChBR,KAAKmyB,WAAWs8C,cAAcC,YAEzB5pD,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAKzB,IAHAS,GADAwsD,EAAUC,EAASltD,IACJtkB,OACfR,KAAKmyB,WAAWs8C,cAAcE,OAAOoD,EAAQ,GAAIA,EAAQ,IAEpD5mE,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACzBnL,KAAKmyB,WAAWs8C,cAAcI,cAAckD,EAAQ5mE,GAAI4mE,EAAQ5mE,EAAI,GAAI4mE,EAAQ5mE,EAAI,GAAI4mE,EAAQ5mE,EAAI,GAAI4mE,EAAQ5mE,EAAI,GAAI4mE,EAAQ5mE,EAAI,IAIxInL,KAAKmyB,WAAWs8C,cAAc0C,YAC9BnxE,KAAKmyB,WAAWs8C,cAAch6D,MAC/B,CAED,GAAIzU,KAAK+pE,OAAQ,CAyBf,IAxBIsD,GAAkBA,EAAevR,GAC/BqW,IAAgB9E,EAAevR,KACjCqW,EAAc9E,EAAevR,GAC7B9wC,EAAIo1C,UAAYiN,EAAevR,IAExBqW,IAAgBnyE,KAAKiB,OAAOgpE,SACrCkI,EAAcnyE,KAAKiB,OAAOgpE,OAC1Bj/C,EAAIo1C,UAAYpgE,KAAKiB,OAAOgpE,QAG1BoD,GAAkBA,EAAetlB,GAC/BmqB,IAAe7E,EAAetlB,KAChCmqB,EAAa7E,EAAetlB,GAC5B/8B,EAAI8lD,YAAczD,EAAetlB,IAE1BmqB,IAAelyE,KAAKiB,OAAO8oE,SACpCmI,EAAalyE,KAAKiB,OAAO8oE,OACzB/+C,EAAI8lD,YAAc9wE,KAAKiB,OAAO8oE,QAIhC5kD,GADA6sD,EAAWhyE,KAAKonE,UAAUv/D,GAAGmwB,MACbx3B,OAChBR,KAAKmyB,WAAWs8C,cAAcC,YAEzB5pD,EAAI,EAAGA,EAAIK,EAAML,GAAK,EAKzB,IAHAS,GADAwsD,EAAUC,EAASltD,IACJtkB,OACfR,KAAKmyB,WAAWs8C,cAAcE,OAAOoD,EAAQ,GAAIA,EAAQ,IAEpD5mE,EAAI,EAAGA,EAAIoa,EAAMpa,GAAK,EACzBnL,KAAKmyB,WAAWs8C,cAAcI,cAAckD,EAAQ5mE,GAAI4mE,EAAQ5mE,EAAI,GAAI4mE,EAAQ5mE,EAAI,GAAI4mE,EAAQ5mE,EAAI,GAAI4mE,EAAQ5mE,EAAI,GAAI4mE,EAAQ5mE,EAAI,IAIxInL,KAAKmyB,WAAWs8C,cAAc0C,YAC9BnxE,KAAKmyB,WAAWs8C,cAAc1E,QAC/B,CAEGsD,GACFrtE,KAAKmyB,WAAWtB,SAAS2+C,SAE5B,CAEP,EAQEr0D,gBAAgB,CAAC0vC,YAAaa,iBAAkB8d,cAAe3T,iBAAkB7G,aAAcnG,mBAAoBshB,gBACnHA,eAAe9qE,UAAUo0D,YAAciI,gBAAgBr8D,UAAUo0D,YACjE0W,eAAe9qE,UAAUowB,aAAe+jC,cAAcn0D,UAAUowB,aAEhE06C,eAAe9qE,UAAU22D,cAAgB,WACvC,GAAIh2D,KAAKisB,IAAInB,QAAU9qB,KAAK2rB,UAAUu4B,IAAMlkD,KAAKisB,IAAInB,OAAS9qB,KAAK2rB,UAAUna,IAAMxR,KAAKisB,IAAIlB,QAAS,CACnG,IAAIH,EAASC,UAAU,UACvBD,EAAOE,MAAQ9qB,KAAK2rB,UAAUu4B,EAC9Bt5B,EAAOG,OAAS/qB,KAAK2rB,UAAUna,EAC/B,IAKa6gE,EACTC,EANAtnD,EAAMJ,EAAOK,WAAW,MACpBsnD,EAAGvyE,KAAKisB,IAAInB,MAChB0nD,EAAOxyE,KAAKisB,IAAIlB,OACV0nD,EAAGF,EAAOC,EAChBE,EAAY1yE,KAAK2rB,UAAUu4B,EAAIlkD,KAAK2rB,UAAUna,EAG3CmhE,EAAG3yE,KAAK2rB,UAAUwqC,IAAMn2D,KAAKmyB,WAAWy3B,aAAawM,yBAExDqc,EAASC,GAAqB,mBAARC,GAA4BF,EAASC,GAAqB,mBAARC,EAE1EN,GADAC,EAAaE,GACYE,EAGzBJ,GADAD,EAAYE,GACaG,EAG3B1nD,EAAI4nD,UAAU5yE,KAAKisB,KAAMsmD,EAAOF,GAAa,GAAIG,EAAOF,GAAc,EAAGD,EAAWC,EAAY,EAAG,EAAGtyE,KAAK2rB,UAAUu4B,EAAGlkD,KAAK2rB,UAAUna,GACvIxR,KAAKisB,IAAMrB,CACZ,CACL,EAEEu/C,eAAe9qE,UAAU42D,mBAAqB,WAC5Cj2D,KAAKyuE,cAAcmE,UAAU5yE,KAAKisB,IAAK,EAAG,EAC9C,EAEEk+C,eAAe9qE,UAAUiuB,QAAU,WACjCttB,KAAKisB,IAAM,IACf,EAME9Q,gBAAgB,CAAC0vC,YAAaa,iBAAkB8d,cAAe3T,iBAAkB7G,aAAcnG,mBAAoBuhB,gBACnHA,eAAe/qE,UAAUo0D,YAAciI,gBAAgBr8D,UAAUo0D,YACjE2W,eAAe/qE,UAAUowB,aAAe+jC,cAAcn0D,UAAUowB,aAEhE26C,eAAe/qE,UAAU42D,mBAAqB,WAC5C,IAAOjrC,EAAGhrB,KAAKyuE,cACfzjD,EAAIE,UAAYlrB,KAAKuQ,KAAKw3C,GAC1B/8B,EAAIG,SAAS,EAAG,EAAGnrB,KAAKuQ,KAAKurD,GAAI97D,KAAKuQ,KAAKw0B,GAC/C,EAmCE5pB,gBAAgB,CAACswC,cAAe4e,oBAEhCA,mBAAmBhrE,UAAU+wD,YAAc,SAAU7/C,GACnD,OAAO,IAAkBu5D,eAACv5D,EAAMvQ,KAAKmyB,WAAYnyB,KACrD,EAEEqqE,mBAAmBhrE,UAAUgxD,WAAa,SAAU9/C,GAClD,OAAWqhE,IAAAA,cAAcrhE,EAAMvQ,KAAKmyB,WAAYnyB,KACpD,EAEEqqE,mBAAmBhrE,UAAU2wD,YAAc,SAAUz/C,GACnD,OAAO,IAAkB45D,eAAC55D,EAAMvQ,KAAKmyB,WAAYnyB,KACrD,EAEEqqE,mBAAmBhrE,UAAU6wD,YAAc,SAAU3/C,GACnD,OAAO,IAAkB65D,eAAC75D,EAAMvQ,KAAKmyB,WAAYnyB,KACrD,EAEEqqE,mBAAmBhrE,UAAU8wD,WAAauX,YAAYroE,UAAU8wD,WAEhEka,mBAAmBhrE,UAAUiwE,aAAe,SAAU9oE,GACpD,GAAiB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAA0B,IAAdA,EAAM,KAA2B,IAAdA,EAAM,IAIrG,GAAKxG,KAAK4pD,aAAa0gB,YAAvB,CAKAtqE,KAAK4qE,aAAap5B,eAAehrC,GACjC,IAAIqsE,EAAS7yE,KAAK2qE,YAAY5B,IAAIviE,MAClCxG,KAAK4qE,aAAav7B,UAAUwjC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAE7M7yE,KAAK2qE,YAAY5B,IAAIv3B,eAAexxC,KAAK4qE,aAAapkE,OACtD,IAAWssE,EAAG9yE,KAAK2qE,YAAY5B,IAAIviE,MACnCxG,KAAKyuE,cAAcx7B,aAAa6/B,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAAKA,EAAQ,IARpG,MAFC9yE,KAAKyuE,cAAcp/B,UAAU7oC,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IAW5F,EAEE6jE,mBAAmBhrE,UAAUkwE,WAAa,SAAUpoD,GAIlD,IAAKnnB,KAAK4pD,aAAa0gB,YAGrB,OAFAtqE,KAAKyuE,cAAcsE,aAAe5rD,EAAK,EAAI,EAAIA,OAC/CnnB,KAAKmyB,WAAWu4C,mBAAqB1qE,KAAK2qE,YAAY3B,IAIxDhpE,KAAK2qE,YAAY3B,IAAM7hD,EAAK,EAAI,EAAIA,EAEhCnnB,KAAKmyB,WAAWu4C,qBAAuB1qE,KAAK2qE,YAAY3B,KAC1DhpE,KAAKyuE,cAAcsE,YAAc/yE,KAAK2qE,YAAY3B,GAClDhpE,KAAKmyB,WAAWu4C,mBAAqB1qE,KAAK2qE,YAAY3B,GAE5D,EAEEqB,mBAAmBhrE,UAAUmsC,MAAQ,WAC9BxrC,KAAK4pD,aAAa0gB,YAKvBtqE,KAAK2qE,YAAYn/B,QAJfxrC,KAAKyuE,cAAce,SAKzB,EAEEnF,mBAAmBhrE,UAAUyvE,KAAO,SAAUkE,GAC5C,GAAKhzE,KAAK4pD,aAAa0gB,YAAvB,CAKI0I,GACFhzE,KAAKyuE,cAAcK,OAGrB,IAMKjnE,EANDrB,EAAQxG,KAAK2qE,YAAY5B,IAAIviE,MAE7BxG,KAAK2qE,YAAYnuC,SAAWx8B,KAAK2qE,YAAY7B,SAC/C9oE,KAAK2qE,YAAYsD,YAInB,IAAOrwD,EAAG5d,KAAK2qE,YAAY9B,MAAM7oE,KAAK2qE,YAAY7B,SAElD,IAAKjhE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB+V,EAAI/V,GAAKrB,EAAMqB,GAGjB7H,KAAK2qE,YAAY1B,QAAQjpE,KAAK2qE,YAAY7B,SAAW9oE,KAAK2qE,YAAY3B,GACtEhpE,KAAK2qE,YAAY7B,SAAW,CApB3B,MAFC9oE,KAAKyuE,cAAcK,MAuBzB,EAEEzE,mBAAmBhrE,UAAUmwE,QAAU,SAAUwD,GAC/C,GAAKhzE,KAAK4pD,aAAa0gB,YAAvB,CAKI0I,IACFhzE,KAAKyuE,cAAce,UACnBxvE,KAAKmyB,WAAW88C,UAAY,eAG9BjvE,KAAK2qE,YAAY7B,SAAW,EAC5B,IACIjhE,EADAorE,EAASjzE,KAAK2qE,YAAY9B,MAAM7oE,KAAK2qE,YAAY7B,SAEjDlrD,EAAM5d,KAAK2qE,YAAY5B,IAAIviE,MAE/B,IAAKqB,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB+V,EAAI/V,GAAKorE,EAAOprE,GAGlB7H,KAAKyuE,cAAcx7B,aAAaggC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,KAC/FA,EAASjzE,KAAK2qE,YAAY1B,QAAQjpE,KAAK2qE,YAAY7B,SACnD9oE,KAAK2qE,YAAY3B,GAAKiK,EAElBjzE,KAAKmyB,WAAWu4C,qBAAuBuI,IACzCjzE,KAAKyuE,cAAcsE,YAAcE,EACjCjzE,KAAKmyB,WAAWu4C,mBAAqBuI,EAtBtC,MAFCjzE,KAAKyuE,cAAce,SA0BzB,EAEEnF,mBAAmBhrE,UAAUoyB,gBAAkB,SAAUwC,GACvD,GAAIj0B,KAAKqxD,cAAct/B,QAAS,CAC9B/xB,KAAKqxD,cAAcv6C,UAAY+T,UAAU,UACzC,IAAIqoD,EAAiBlzE,KAAKqxD,cAAcv6C,UAAUjV,MAClDqxE,EAAepoD,MAAQ,OACvBooD,EAAenoD,OAAS,OACxB,IAAUV,EAAG,cACb6oD,EAAe9yD,gBAAkBiK,EACjC6oD,EAAeC,mBAAqB9oD,EACpC6oD,EAAe7yD,sBAAwBgK,EACvC6oD,EAAe,qBAAuB7oD,EACtC6oD,EAAe9K,kBAAoBpoE,KAAK4pD,aAAawe,kBACrDpoE,KAAKqxD,cAAct/B,QAAQ3vB,YAAYpC,KAAKqxD,cAAcv6C,WAC1D9W,KAAKyuE,cAAgBzuE,KAAKqxD,cAAcv6C,UAAUmU,WAAW,MAEzDjrB,KAAK4pD,aAAa2e,WACpBvoE,KAAKqxD,cAAcv6C,UAAU5U,aAAa,QAASlC,KAAK4pD,aAAa2e,WAGnEvoE,KAAK4pD,aAAa9jC,IACpB9lB,KAAKqxD,cAAcv6C,UAAU5U,aAAa,KAAMlC,KAAK4pD,aAAa9jC,GAE1E,MACM9lB,KAAKyuE,cAAgBzuE,KAAK4pD,aAAa2gB,QAGzCvqE,KAAKuQ,KAAO0jB,EACZj0B,KAAK4kB,OAASqP,EAASrP,OACvB5kB,KAAKozE,gBAAkB,CACrBlvB,EAAGjwB,EAASiwB,EACZ1yC,EAAGyiB,EAASziB,EACZq9B,GAAI,EACJxC,GAAI,EACJ8C,GAAI,EACJ3pB,GAAI,GAENxlB,KAAKmxD,gBAAgBl9B,EAAUnyB,SAASk3B,MACxCh5B,KAAKmyB,WAAWs8C,cAAgBzuE,KAAKyuE,cACrCzuE,KAAKmyB,WAAWtB,SAAW7wB,KAC3BA,KAAKmyB,WAAWkhD,UAAW,EAC3BrzE,KAAKmyB,WAAWu+B,gBAAkB1wD,KAAK4pD,aAAa8G,gBACpD1wD,KAAKmyB,WAAWihD,gBAAkBpzE,KAAKozE,gBACvCpzE,KAAKmY,SAAW6F,iBAAiBiW,EAASrP,OAAOpkB,QACjDR,KAAK80B,qBACT,EAEEu1C,mBAAmBhrE,UAAUy1B,oBAAsB,SAAUhK,EAAOC,GAElE,IAAgBuoD,EACCC,EAoBHC,EACEC,EAEhB,GAzBAzzE,KAAKwrC,QAID1gB,GACFwoD,EAAexoD,EACfyoD,EAAgBxoD,EAChB/qB,KAAKyuE,cAAc7jD,OAAOE,MAAQwoD,EAClCtzE,KAAKyuE,cAAc7jD,OAAOG,OAASwoD,IAE/BvzE,KAAKqxD,cAAct/B,SAAW/xB,KAAKqxD,cAAcv6C,WACnDw8D,EAAetzE,KAAKqxD,cAAct/B,QAAQ8yB,YAC1C0uB,EAAgBvzE,KAAKqxD,cAAct/B,QAAQ2hD,eAE3CJ,EAAetzE,KAAKyuE,cAAc7jD,OAAOE,MACzCyoD,EAAgBvzE,KAAKyuE,cAAc7jD,OAAOG,QAG5C/qB,KAAKyuE,cAAc7jD,OAAOE,MAAQwoD,EAAetzE,KAAK4pD,aAAa4gB,IACnExqE,KAAKyuE,cAAc7jD,OAAOG,OAASwoD,EAAgBvzE,KAAK4pD,aAAa4gB,MAMR,IAA3DxqE,KAAK4pD,aAAaue,oBAAoB3/D,QAAQ,UAA8E,IAA5DxI,KAAK4pD,aAAaue,oBAAoB3/D,QAAQ,SAAiB,CACjI,IAAOmqE,EAAG3yE,KAAK4pD,aAAaue,oBAAoBp4D,MAAM,KAClD4jE,EAAWhB,EAAI,IAAM,SACfA,EAAI,IAAM,WACZzN,EAAGh8B,EAAIvW,OAAO,EAAG,GACjB4xC,EAAGr7B,EAAIvW,OAAO,GACtB6gD,EAAaF,EAAeC,GAC5BE,EAAezzE,KAAKozE,gBAAgBlvB,EAAIlkD,KAAKozE,gBAAgB5hE,GAE1CgiE,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,GACnF3zE,KAAKozE,gBAAgBvkC,GAAKykC,GAAgBtzE,KAAKozE,gBAAgBlvB,EAAIlkD,KAAK4pD,aAAa4gB,KACrFxqE,KAAKozE,gBAAgB/mC,GAAKinC,GAAgBtzE,KAAKozE,gBAAgBlvB,EAAIlkD,KAAK4pD,aAAa4gB,OAErFxqE,KAAKozE,gBAAgBvkC,GAAK0kC,GAAiBvzE,KAAKozE,gBAAgB5hE,EAAIxR,KAAK4pD,aAAa4gB,KACtFxqE,KAAKozE,gBAAgB/mC,GAAKknC,GAAiBvzE,KAAKozE,gBAAgB5hE,EAAIxR,KAAK4pD,aAAa4gB,MAItFxqE,KAAKozE,gBAAgBjkC,GADV,SAAT+1B,IAAoBuO,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IAC5EL,EAAetzE,KAAKozE,gBAAgBlvB,GAAKqvB,EAAgBvzE,KAAKozE,gBAAgB5hE,IAAM,EAAIxR,KAAK4pD,aAAa4gB,IACnH,SAATtF,IAAoBuO,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IACnFL,EAAetzE,KAAKozE,gBAAgBlvB,GAAKqvB,EAAgBvzE,KAAKozE,gBAAgB5hE,IAAMxR,KAAK4pD,aAAa4gB,IAEvG,EAI1BxqE,KAAKozE,gBAAgB5tD,GADV,SAAT++C,IAAoBkP,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IAC5EJ,EAAgBvzE,KAAKozE,gBAAgB5hE,GAAK8hE,EAAetzE,KAAKozE,gBAAgBlvB,IAAM,EAAIlkD,KAAK4pD,aAAa4gB,IACnH,SAATjG,IAAoBkP,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IACnFJ,EAAgBvzE,KAAKozE,gBAAgB5hE,GAAK8hE,EAAetzE,KAAKozE,gBAAgBlvB,IAAMlkD,KAAK4pD,aAAa4gB,IAEvG,CAE7B,KAAoD,SAA1CxqE,KAAK4pD,aAAaue,qBAC3BnoE,KAAKozE,gBAAgBvkC,GAAKykC,GAAgBtzE,KAAKozE,gBAAgBlvB,EAAIlkD,KAAK4pD,aAAa4gB,KACrFxqE,KAAKozE,gBAAgB/mC,GAAKknC,GAAiBvzE,KAAKozE,gBAAgB5hE,EAAIxR,KAAK4pD,aAAa4gB,KACtFxqE,KAAKozE,gBAAgBjkC,GAAK,EAC1BnvC,KAAKozE,gBAAgB5tD,GAAK,IAE1BxlB,KAAKozE,gBAAgBvkC,GAAK7uC,KAAK4pD,aAAa4gB,IAC5CxqE,KAAKozE,gBAAgB/mC,GAAKrsC,KAAK4pD,aAAa4gB,IAC5CxqE,KAAKozE,gBAAgBjkC,GAAK,EAC1BnvC,KAAKozE,gBAAgB5tD,GAAK,GAG5BxlB,KAAKozE,gBAAgB5sE,MAAQ,CAACxG,KAAKozE,gBAAgBvkC,GAAI,EAAG,EAAG,EAAG,EAAG7uC,KAAKozE,gBAAgB/mC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGrsC,KAAKozE,gBAAgBjkC,GAAInvC,KAAKozE,gBAAgB5tD,GAAI,EAAG,GAQnKxlB,KAAKsvE,aAAatvE,KAAKozE,gBAAgB5sE,OACvCxG,KAAKyuE,cAAcC,YACnB1uE,KAAKyuE,cAAcviB,KAAK,EAAG,EAAGlsD,KAAKozE,gBAAgBlvB,EAAGlkD,KAAKozE,gBAAgB5hE,GAC3ExR,KAAKyuE,cAAc0C,YACnBnxE,KAAKyuE,cAAcM,OACnB/uE,KAAKi1B,YAAYj1B,KAAK6mC,eAAe,EACzC,EAEEwjC,mBAAmBhrE,UAAUiuB,QAAU,WAKrC,MAGA,IAPIttB,KAAK4pD,aAAa0gB,aAAetqE,KAAKqxD,cAAct/B,UACtD/xB,KAAKqxD,cAAct/B,QAAQmH,UAAY,IAMpCrxB,GAFK7H,KAAK4kB,OAAS5kB,KAAK4kB,OAAOpkB,OAAS,GAE9B,EAAGqH,GAAK,EAAGA,GAAK,EACzB7H,KAAKmY,SAAStQ,IAChB7H,KAAKmY,SAAStQ,GAAGylB,UAIrBttB,KAAKmY,SAAS3X,OAAS,EACvBR,KAAKmyB,WAAWs8C,cAAgB,KAChCzuE,KAAKqxD,cAAcv6C,UAAY,KAC/B9W,KAAK2oE,WAAY,CACrB,EAEE0B,mBAAmBhrE,UAAU41B,YAAc,SAAUs0B,EAAK5Q,GACxD,IAAI34C,KAAK6mC,gBAAkB0iB,IAAyC,IAAlCvpD,KAAK4pD,aAAa0gB,aAAyB3xB,KAAe34C,KAAK2oE,YAAsB,IAATpf,EAA9G,CAWA,IAAK1hD,EAPL7H,KAAK6mC,cAAgB0iB,EACrBvpD,KAAKmyB,WAAWkQ,SAAWknB,EAAMvpD,KAAKqxD,cAAc5pB,cACpDznC,KAAKmyB,WAAWmV,SAAW,EAC3BtnC,KAAKmyB,WAAWiV,MAAQpnC,KAAK4pD,aAAa0gB,aAAe3xB,EACzD34C,KAAKmyB,WAAWd,iBAAiB1B,aAAe45B,EAIhD,IAAIhuC,EAAMvb,KAAK4kB,OAAOpkB,OAMtB,IAJKR,KAAK2kB,gBACR3kB,KAAK2vD,YAAYpG,GAGd1hD,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,GACpB7H,KAAK2kB,gBAAkB3kB,KAAKmY,SAAStQ,KACvC7H,KAAKmY,SAAStQ,GAAG4nB,aAAa85B,EAAMvpD,KAAK4kB,OAAO/c,GAAGuf,IAIvD,GAAIpnB,KAAKmyB,WAAWiV,KAAM,CAOxB,KANsC,IAAlCpnC,KAAK4pD,aAAa0gB,YACpBtqE,KAAKyuE,cAAcmF,UAAU,EAAG,EAAG5zE,KAAKozE,gBAAgBlvB,EAAGlkD,KAAKozE,gBAAgB5hE,GAEhFxR,KAAK8uE,OAGFjnE,EAAI0T,EAAM,EAAG1T,GAAK,EAAGA,GAAK,GACzB7H,KAAK2kB,gBAAkB3kB,KAAKmY,SAAStQ,KACvC7H,KAAKmY,SAAStQ,GAAGotB,eAIiB,IAAlCj1B,KAAK4pD,aAAa0gB,aACpBtqE,KAAKwvE,SAER,CAtCA,CAuCL,EAEEnF,mBAAmBhrE,UAAUuwD,UAAY,SAAU1mB,GACjD,IAAI/wB,EAAWnY,KAAKmY,SAEpB,IAAIA,EAAS+wB,IAAgC,KAAxBlpC,KAAK4kB,OAAOskB,GAAK1jB,GAAtC,CAIA,IAAWhR,EAAGxU,KAAK8vD,WAAW9vD,KAAK4kB,OAAOskB,GAAMlpC,KAAMA,KAAKmyB,YAC3Dha,EAAS+wB,GAAO10B,EAChBA,EAAQgf,iBAJP,CAQF,EAED62C,mBAAmBhrE,UAAUwwD,qBAAuB,WAClD,KAAO7vD,KAAKixD,gBAAgBzwD,QACZR,KAAKixD,gBAAgBla,MAC3Bgf,gBAEd,EAEEsU,mBAAmBhrE,UAAU43B,KAAO,WAClCj3B,KAAKqxD,cAAcv6C,UAAUjV,MAAMse,QAAU,MACjD,EAEEkqD,mBAAmBhrE,UAAU63B,KAAO,WAClCl3B,KAAKqxD,cAAcv6C,UAAUjV,MAAMse,QAAU,OACjD,EAaEhF,gBAAgB,CAACkvD,mBAAoB9C,aAAciC,eAAgBqB,eAEnEA,cAAcxrE,UAAU42D,mBAAqB,WAC3C,IAQKpuD,EAREmjB,EAAGhrB,KAAKyuE,cAWf,IAVAzjD,EAAI0jD,YACJ1jD,EAAI2jD,OAAO,EAAG,GACd3jD,EAAI4jD,OAAO5uE,KAAKuQ,KAAK2zC,EAAG,GACxBl5B,EAAI4jD,OAAO5uE,KAAKuQ,KAAK2zC,EAAGlkD,KAAKuQ,KAAKiB,GAClCwZ,EAAI4jD,OAAO,EAAG5uE,KAAKuQ,KAAKiB,GACxBwZ,EAAI4jD,OAAO,EAAG,GACd5jD,EAAI+jD,OAIClnE,EAFK7H,KAAK4kB,OAAOpkB,OAEP,EAAGqH,GAAK,EAAGA,GAAK,GACzB7H,KAAK2kB,gBAAkB3kB,KAAKmY,SAAStQ,KACvC7H,KAAKmY,SAAStQ,GAAGotB,aAGzB,EAEE41C,cAAcxrE,UAAUiuB,QAAU,WAChC,IAAIzlB,EAGJ,IAAKA,EAFK7H,KAAK4kB,OAAOpkB,OAEP,EAAGqH,GAAK,EAAGA,GAAK,EACzB7H,KAAKmY,SAAStQ,IAChB7H,KAAKmY,SAAStQ,GAAGylB,UAIrBttB,KAAK4kB,OAAS,KACd5kB,KAAKmY,SAAW,IACpB,EAEE0yD,cAAcxrE,UAAU4wD,WAAa,SAAU1/C,GAC7C,OAAO,IAAiBs6D,cAACt6D,EAAMvQ,KAAKmyB,WAAYnyB,KACpD,EAoCEmb,gBAAgB,CAACkvD,oBAAqBS,gBAEtCA,eAAezrE,UAAU4wD,WAAa,SAAU1/C,GAC9C,OAAO,IAAiBs6D,cAACt6D,EAAMvQ,KAAKmyB,WAAYnyB,KACpD,EAIE+qE,aAAa1rE,UAAY,CACvBw0E,eAAgB,WAA0B,EAC1C/f,oBAAqB,WACnB9zD,KAAK4uD,YAAc/jC,UAAU7qB,KAAKuQ,KAAKujE,IAAM,OAEzC9zE,KAAKuQ,KAAK0U,SACZjlB,KAAKiP,WAAasU,SAAS,OAC3BvjB,KAAK6uD,aAAetrC,SAAS,KAC7BvjB,KAAKktD,cAAgBltD,KAAK6uD,aAC1B7uD,KAAKiP,WAAW7M,YAAYpC,KAAK6uD,cACjC7uD,KAAK4uD,YAAYxsD,YAAYpC,KAAKiP,aAElCjP,KAAK6uD,aAAe7uD,KAAK4uD,YAG3B7uC,SAAS/f,KAAK4uD,YACf,EACDmF,wBAAyB,WACvB/zD,KAAKi1D,yBAA2B,IAAIqU,UAAUtpE,MAC9CA,KAAKi0D,mBAAqBj0D,KAAK4uD,YAC/B5uD,KAAKktD,cAAgBltD,KAAK6uD,aAEtB7uD,KAAKuQ,KAAKkkD,IACZz0D,KAAK6uD,aAAa3sD,aAAa,KAAMlC,KAAKuQ,KAAKkkD,IAG7Cz0D,KAAKuQ,KAAKyX,IACZhoB,KAAK6uD,aAAa3sD,aAAa,QAASlC,KAAKuQ,KAAKyX,IAG/B,IAAjBhoB,KAAKuQ,KAAKo+C,IACZ3uD,KAAKyuD,cAER,EACDqG,cAAe,WACb,IAA2Bif,EAAG/zE,KAAKi0D,mBAAqBj0D,KAAKi0D,mBAAmBpyD,MAAQ,CAAE,EAE1F,GAAI7B,KAAK0pD,eAAe8H,QAAS,CAC/B,IAAIwiB,EAAch0E,KAAK0pD,eAAehR,IAAI/F,QAC1CohC,EAAwB1kC,UAAY2kC,EACpCD,EAAwBE,gBAAkBD,CAC3C,CAEGh0E,KAAK0pD,eAAe+H,SACtBsiB,EAAwBpE,QAAU3vE,KAAK0pD,eAAeC,MAAMt+C,EAAEjK,EAEjE,EACD6zB,YAAa,WAGPj1B,KAAKuQ,KAAKmkD,IAAM10D,KAAKgpD,SAIzBhpD,KAAK2xD,kBACL3xD,KAAK8pD,mBACL9pD,KAAK80D,gBACL90D,KAAKi2D,qBAEDj2D,KAAKynC,gBACPznC,KAAKynC,eAAgB,GAExB,EACDna,QAAS,WACPttB,KAAK6uD,aAAe,KACpB7uD,KAAKi0D,mBAAqB,KAEtBj0D,KAAKg0D,eACPh0D,KAAKg0D,aAAe,MAGlBh0D,KAAK+tD,cACP/tD,KAAK+tD,YAAYzgC,UACjBttB,KAAK+tD,YAAc,KAEtB,EACDiH,2BAA4B,WAC1Bh1D,KAAK+tD,YAAc,IAAIpC,YAAY3rD,KAAKuQ,KAAMvQ,KAAMA,KAAKmyB,WAC1D,EACD+hD,WAAY,WAAwB,EACpCte,SAAU,WAAoB,GAEhCmV,aAAa1rE,UAAU+vD,eAAiBkE,eAAej0D,UAAU+vD,eACjE2b,aAAa1rE,UAAU01D,mBAAqBgW,aAAa1rE,UAAUiuB,QACnEy9C,aAAa1rE,UAAUsxD,sBAAwBlF,aAAapsD,UAAUsxD,sBAMtEx1C,gBAAgB,CAAC0vC,YAAaa,iBAAkBqf,aAAclV,iBAAkB7G,aAAcuE,sBAAuByX,eAErHA,cAAc3rE,UAAU22D,cAAgB,WACtC,IAAQ9J,EAEJlsD,KAAKuQ,KAAK0U,UACZinC,EAAO3oC,SAAS,SACXrhB,aAAa,QAASlC,KAAKuQ,KAAKurD,IACrC5P,EAAKhqD,aAAa,SAAUlC,KAAKuQ,KAAKw0B,IACtCmnB,EAAKhqD,aAAa,OAAQlC,KAAKuQ,KAAKw3C,IACpC/nD,KAAKiP,WAAW/M,aAAa,QAASlC,KAAKuQ,KAAKurD,IAChD97D,KAAKiP,WAAW/M,aAAa,SAAUlC,KAAKuQ,KAAKw0B,OAEjDmnB,EAAOrhC,UAAU,QACZhpB,MAAMipB,MAAQ9qB,KAAKuQ,KAAKurD,GAAK,KAClC5P,EAAKrqD,MAAMkpB,OAAS/qB,KAAKuQ,KAAKw0B,GAAK,KACnCmnB,EAAKrqD,MAAMsyE,gBAAkBn0E,KAAKuQ,KAAKw3C,IAGzC/nD,KAAK6uD,aAAazsD,YAAY8pD,EAClC,EA8BE/wC,gBAAgB,CAAC0vC,YAAaa,iBAAkBsf,cAAetP,gBAAiBqP,aAAclV,iBAAkB7G,aAAcnG,mBAAoBurB,eAClJA,cAAc/0E,UAAUg1E,kBAAoBD,cAAc/0E,UAAU42D,mBAEpEme,cAAc/0E,UAAU22D,cAAgB,WACtC,MAGA,GAFAh2D,KAAK4uD,YAAY/sD,MAAM2iD,SAAW,EAE9BxkD,KAAKuQ,KAAK0U,QACZjlB,KAAK6uD,aAAazsD,YAAYpC,KAAKirE,iBACnC7pB,EAAOphD,KAAKiP,eACP,CACLmyC,EAAO79B,SAAS,OAChB,MAAWvjB,KAAK+lB,KAAKxV,KAAOvQ,KAAK+lB,KAAKxV,KAAOvQ,KAAKmyB,WAAWm/B,SAC7DlQ,EAAKl/C,aAAa,QAASiiD,EAAKD,GAChC9C,EAAKl/C,aAAa,SAAUiiD,EAAK3yC,GACjC4vC,EAAKh/C,YAAYpC,KAAKirE,iBACtBjrE,KAAK6uD,aAAazsD,YAAYg/C,EAC/B,CAEDphD,KAAK29D,aAAa39D,KAAKsuD,WAAYtuD,KAAKuuD,UAAWvuD,KAAK24D,aAAc34D,KAAKirE,gBAAiB,EAAG,IAAI,GACnGjrE,KAAK49D,qBACL59D,KAAKs0E,UAAYlzB,CACrB,EAEEgzB,cAAc/0E,UAAUk1E,oBAAsB,SAAUvd,EAAc34B,GACpE,QACU24B,EAAax2D,OAEvB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBw2B,EAAQ24B,EAAanvD,GAAGs6C,OAAO/gD,EAAE6wC,kBAAkB5T,EAAM,GAAIA,EAAM,GAAI,GAGzE,QACJ,EAEE+1C,cAAc/0E,UAAUm1E,0BAA4B,SAAUrgE,EAAMomC,GAClE,MAIUk6B,EACAC,EACIC,EACAC,EAPV1qC,EAAQ/1B,EAAK4wB,GAAG3jC,EAChB41D,EAAe7iD,EAAK6iD,eAEd9sB,EAAM1N,QAMhB,KAAIjhB,GAAO,GAAX,CAIA,IAAK1T,EAAI,EAAGA,EAAI0T,EAAM,EAAG1T,GAAK,EAC5B4sE,EAASz0E,KAAKu0E,oBAAoBvd,EAAc9sB,EAAM9oC,EAAEyG,IACxD6sE,EAAS10E,KAAKu0E,oBAAoBvd,EAAc9sB,EAAM7+B,EAAExD,IACxD8sE,EAAa30E,KAAKu0E,oBAAoBvd,EAAc9sB,EAAMriC,EAAEA,EAAI,IAChE+sE,EAAa50E,KAAKu0E,oBAAoBvd,EAAc9sB,EAAM9oC,EAAEyG,EAAI,IAChE7H,KAAK60E,YAAYJ,EAAQC,EAAQC,EAAYC,EAAYr6B,GAGvDrQ,EAAMlhC,IACRyrE,EAASz0E,KAAKu0E,oBAAoBvd,EAAc9sB,EAAM9oC,EAAEyG,IACxD6sE,EAAS10E,KAAKu0E,oBAAoBvd,EAAc9sB,EAAM7+B,EAAExD,IACxD8sE,EAAa30E,KAAKu0E,oBAAoBvd,EAAc9sB,EAAMriC,EAAE,IAC5D+sE,EAAa50E,KAAKu0E,oBAAoBvd,EAAc9sB,EAAM9oC,EAAE,IAC5DpB,KAAK60E,YAAYJ,EAAQC,EAAQC,EAAYC,EAAYr6B,GAf1D,CAiBL,EAEE65B,cAAc/0E,UAAUw1E,YAAc,SAAUJ,EAAQC,EAAQC,EAAYC,EAAYr6B,GACtFv6C,KAAK80E,iBAAiBL,EAAQC,EAAQC,EAAYC,GAClD,MAAa50E,KAAK+0E,iBAClBx6B,EAAY5f,EAAI3b,MAAMokC,EAAOljC,KAAMq6B,EAAY5f,GAC/C4f,EAAYy6B,KAAOl2D,MAAMskC,EAAOjE,MAAO5E,EAAYy6B,MACnDz6B,EAAYrW,EAAIllB,MAAMokC,EAAOnjC,IAAKs6B,EAAYrW,GAC9CqW,EAAY06B,KAAOn2D,MAAMskC,EAAOC,OAAQ9I,EAAY06B,KACxD,EAEEb,cAAc/0E,UAAU01E,iBAAmB,CACzC70D,KAAM,EACNi/B,MAAO,EACPl/B,IAAK,EACLojC,OAAQ,GAEV+wB,cAAc/0E,UAAU61E,gBAAkB,CACxCv6C,EAAG,EACHq6C,KAAM,EACN9wC,EAAG,EACH+wC,KAAM,EACNnqD,MAAO,EACPC,OAAQ,GAGVqpD,cAAc/0E,UAAUy1E,iBAAmB,SAAU/oC,EAAIC,EAAIoE,EAAIuJ,GAG/D,IAFA,MAEY33B,EAAGhZ,EAAGX,EAAG8sE,EAAMj1C,EAAIma,IAFlB,CAAC,CAACtO,EAAG,GAAI4N,EAAG,IAAK,CAAC5N,EAAG,GAAI4N,EAAG,KAEN9xC,EAAI,EAAGA,EAAI,IAAKA,EAEjDma,EAAI,EAAI+pB,EAAGlkC,GAAK,GAAKmkC,EAAGnkC,GAAK,EAAIuoC,EAAGvoC,GACpCyf,GAAK,EAAIykB,EAAGlkC,GAAK,EAAImkC,EAAGnkC,GAAK,EAAIuoC,EAAGvoC,GAAK,EAAI8xC,EAAG9xC,GAChDmB,EAAI,EAAIgjC,EAAGnkC,GAAK,EAAIkkC,EAAGlkC,GACvBma,GAAK,EAILhZ,GAAK,EAEK,IAJVse,GAAK,IAIgB,IAANtF,IACE,IAANsF,GACTjf,GAAKW,EAAIgZ,GAED,GAAK3Z,EAAI,GACf+6C,EAAOv7C,GAAG7C,KAAKhF,KAAKo1E,WAAW/sE,EAAG0jC,EAAIC,EAAIoE,EAAIuJ,EAAI9xC,KAGpDstE,EAAOnzD,EAAIA,EAAI,EAAIhZ,EAAIse,IAEX,KACV4Y,IAAOle,EAAItD,OAAOy2D,KAAU,EAAI7tD,IACvB,GAAK4Y,EAAK,GAAGkjB,EAAOv7C,GAAG7C,KAAKhF,KAAKo1E,WAAWl1C,EAAI6L,EAAIC,EAAIoE,EAAIuJ,EAAI9xC,KACzEwyC,IAAOr4B,EAAItD,OAAOy2D,KAAU,EAAI7tD,IACvB,GAAK+yB,EAAK,GAAG+I,EAAOv7C,GAAG7C,KAAKhF,KAAKo1E,WAAW/6B,EAAItO,EAAIC,EAAIoE,EAAIuJ,EAAI9xC,MAK/E7H,KAAK+0E,iBAAiB70D,KAAOlB,MAAMf,MAAM,KAAMmlC,EAAO,IACtDpjD,KAAK+0E,iBAAiB90D,IAAMjB,MAAMf,MAAM,KAAMmlC,EAAO,IACrDpjD,KAAK+0E,iBAAiB51B,MAAQrgC,MAAMb,MAAM,KAAMmlC,EAAO,IACvDpjD,KAAK+0E,iBAAiB1xB,OAASvkC,MAAMb,MAAM,KAAMmlC,EAAO,GAC5D,EAEEgxB,cAAc/0E,UAAU+1E,WAAa,SAAU/sE,EAAG0jC,EAAIC,EAAIoE,EAAIuJ,EAAI9xC,GAChE,OAAO2W,MAAM,EAAInW,EAAG,GAAK0jC,EAAGlkC,GAAK,EAAI2W,MAAM,EAAInW,EAAG,GAAKA,EAAI2jC,EAAGnkC,GAAK,GAAK,EAAIQ,GAAKmW,MAAMnW,EAAG,GAAK+nC,EAAGvoC,GAAK2W,MAAMnW,EAAG,GAAKsxC,EAAG9xC,EAC5H,EAEEusE,cAAc/0E,UAAUg2E,qBAAuB,SAAU9mB,EAAWhU,GAClE,IAAK1yC,EACE0T,EAAGgzC,EAAU/tD,OAEpB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB0mD,EAAU1mD,IAAM0mD,EAAU1mD,GAAGk9B,GAC/B/kC,KAAKw0E,0BAA0BjmB,EAAU1mD,GAAI0yC,GACpCgU,EAAU1mD,IAAM0mD,EAAU1mD,GAAGse,GACtCnmB,KAAKq1E,qBAAqB9mB,EAAU1mD,GAAGse,GAAIo0B,GAClCgU,EAAU1mD,IAAM0mD,EAAU1mD,GAAGhG,OAAS0sD,EAAU1mD,GAAGq8C,GAC5DlkD,KAAKs1E,wBAAwB/mB,EAAU1mD,GAAGq8C,EAAG3J,EAGrD,EAEE65B,cAAc/0E,UAAUi2E,wBAA0B,SAAUC,EAAeh7B,GACzE,IAAIzvB,EAAQ,EAEZ,GAAIyqD,EAAc1yC,UAAW,CAC3B,IAAK,MAAQ,EAAGh7B,EAAI0tE,EAAc1yC,UAAUriC,OAAQqH,GAAK,EAAG,CAC1D,MAAU0tE,EAAc1yC,UAAUh7B,GAAGlG,EAEjC6zE,EAAM1qD,IACRA,EAAQ0qD,EAEX,CAED1qD,GAASyqD,EAAcpuC,IAC7B,MACMrc,EAAQyqD,EAAcn0E,EAAIm0E,EAAcpuC,KAG1CoT,EAAY5f,GAAK7P,EACjByvB,EAAYy6B,MAAQlqD,EACpByvB,EAAYrW,GAAKpZ,EACjByvB,EAAY06B,MAAQnqD,CACxB,EAEEspD,cAAc/0E,UAAUo2E,mBAAqB,SAAUn7B,GACrD,OAAWt6C,KAACkrE,YAAYvwC,GAAK2f,EAAI3f,GAAK36B,KAAKkrE,YAAYhnC,GAAKoW,EAAIpW,GAAKlkC,KAAKkrE,YAAYpgD,MAAQ9qB,KAAKkrE,YAAYvwC,GAAK2f,EAAI3f,EAAI2f,EAAIxvB,OAAS9qB,KAAKkrE,YAAYngD,OAAS/qB,KAAKkrE,YAAYhnC,GAAKoW,EAAIpW,EAAIoW,EAAIvvB,MACzM,EAEEqpD,cAAc/0E,UAAU42D,mBAAqB,WAG3C,GAFAj2D,KAAKq0E,qBAEAr0E,KAAKgpD,SAAWhpD,KAAKynC,eAAiBznC,KAAKonC,MAAO,CACrD,IAAI8tC,EAAkBl1E,KAAKk1E,kBACjB,OASV,GARAA,EAAgBv6C,EAAI5b,EACpBm2D,EAAgBF,MAAQj2D,EACxBm2D,EAAgBhxC,EAAInlB,EACpBm2D,EAAgBD,MAAQl2D,EACxB/e,KAAKq1E,qBAAqBr1E,KAAKuuD,UAAW2mB,GAC1CA,EAAgBpqD,MAAQoqD,EAAgBF,KAAOE,EAAgBv6C,EAAI,EAAIu6C,EAAgBF,KAAOE,EAAgBv6C,EAC9Gu6C,EAAgBnqD,OAASmqD,EAAgBD,KAAOC,EAAgBhxC,EAAI,EAAIgxC,EAAgBD,KAAOC,EAAgBhxC,EAE3GlkC,KAAKy1E,mBAAmBP,GAC1B,OAGF,IAAWQ,GAAG,EAcd,GAZI11E,KAAKkrE,YAAYhnB,IAAMgxB,EAAgBpqD,QACzC9qB,KAAKkrE,YAAYhnB,EAAIgxB,EAAgBpqD,MACrC9qB,KAAKs0E,UAAUpyE,aAAa,QAASgzE,EAAgBpqD,OACrD4qD,GAAU,GAGR11E,KAAKkrE,YAAY15D,IAAM0jE,EAAgBnqD,SACzC/qB,KAAKkrE,YAAY15D,EAAI0jE,EAAgBnqD,OACrC/qB,KAAKs0E,UAAUpyE,aAAa,SAAUgzE,EAAgBnqD,QACtD2qD,GAAU,GAGRA,GAAW11E,KAAKkrE,YAAYvwC,IAAMu6C,EAAgBv6C,GAAK36B,KAAKkrE,YAAYhnC,IAAMgxC,EAAgBhxC,EAAG,CACnGlkC,KAAKkrE,YAAYhnB,EAAIgxB,EAAgBpqD,MACrC9qB,KAAKkrE,YAAY15D,EAAI0jE,EAAgBnqD,OACrC/qB,KAAKkrE,YAAYvwC,EAAIu6C,EAAgBv6C,EACrC36B,KAAKkrE,YAAYhnC,EAAIgxC,EAAgBhxC,EACrClkC,KAAKs0E,UAAUpyE,aAAa,UAAWlC,KAAKkrE,YAAYvwC,EAAI,IAAM36B,KAAKkrE,YAAYhnC,EAAI,IAAMlkC,KAAKkrE,YAAYhnB,EAAI,IAAMlkD,KAAKkrE,YAAY15D,GACzI,IAAImkE,EAAa31E,KAAKs0E,UAAUzyE,MACd+zE,EAAG,aAAe51E,KAAKkrE,YAAYvwC,EAAI,MAAQ36B,KAAKkrE,YAAYhnC,EAAI,MACtFyxC,EAAWtmC,UAAYumC,EACvBD,EAAW1B,gBAAkB2B,CAC9B,CACF,CACL,EAgBEz6D,gBAAgB,CAAC0vC,YAAaa,iBAAkBqf,aAAclV,iBAAkB7G,aAAcuE,qBAAsB6Q,cAAe+G,cAEnIA,aAAa9rE,UAAU22D,cAAgB,WAGrC,GAFAh2D,KAAKqrE,SAAWrrE,KAAKytD,aAEjBztD,KAAKqrE,SAAU,CACjBrrE,KAAKyjE,WAAa,MAClBzjE,KAAK61E,MAAQ71E,KAAK+lB,KAAKxV,KAAK2zC,EAC5BlkD,KAAK81E,MAAQ91E,KAAK+lB,KAAKxV,KAAKiB,EAC5BxR,KAAKiP,WAAW/M,aAAa,QAASlC,KAAK61E,OAC3C71E,KAAKiP,WAAW/M,aAAa,SAAUlC,KAAK81E,OAC5C,IAAK/zD,EAAGwB,SAAS,KACjBvjB,KAAKktD,cAAc9qD,YAAY2f,GAC/B/hB,KAAKk2D,UAAYn0C,CACvB,MACM/hB,KAAKyjE,WAAa,OAClBzjE,KAAKk2D,UAAYl2D,KAAK6uD,aAGxB7uD,KAAK+1D,gBACT,EAEEoV,aAAa9rE,UAAUqnE,aAAe,WACpC,IAAI//C,EAAe3mB,KAAK4iE,aAAavG,YACrCr8D,KAAKkkE,gBAAkBlmD,iBAAiB2I,EAAa/Y,EAAI+Y,EAAa/Y,EAAEpN,OAAS,GACjF,IAAkBu1E,EAAG/1E,KAAKk2D,UAAUr0D,MACvBm0E,EAAGrvD,EAAao1C,GAAK/7D,KAAKgnE,WAAWrgD,EAAao1C,IAAM,gBACrEga,EAAethE,KAAOuhE,EACtBD,EAAe1zD,MAAQ2zD,EAEnBrvD,EAAaohC,KACfguB,EAAehM,OAAS/pE,KAAKgnE,WAAWrgD,EAAaohC,IACrDguB,EAAeE,YAActvD,EAAam1C,GAAK,MAGjD,IAiBKj0D,EACD0T,EAlBA+jC,EAAWt/C,KAAKmyB,WAAWkB,YAAYg1B,cAAc1hC,EAAazE,GAEtE,IAAKliB,KAAKmyB,WAAWkB,YAAYrM,MAI/B,GAHA+uD,EAAevxB,SAAW79B,EAAau2C,UAAY,KACnD6Y,EAAeG,WAAavvD,EAAau2C,UAAY,KAEjD5d,EAASiG,OACXvlD,KAAKk2D,UAAUqS,UAAYjpB,EAASiG,WAC/B,CACLwwB,EAAexxB,WAAajF,EAASgG,QACrC,IAAI9F,EAAU74B,EAAa64B,QACjBD,EAAG54B,EAAa44B,OAC1Bw2B,EAAerxB,UAAYnF,EAC3Bw2B,EAAepxB,WAAanF,CAC7B,CAKH,IAESitB,EACL0J,EACKC,EAJE5V,EAAG75C,EAAa/Y,EAC3B2N,EAAMilD,EAAQhgE,OAId,IACIolB,EADAi/C,EAAe7kE,KAAKgyD,QAEZ4U,EAAG,GACX98B,EAAM,EAEV,IAAKjiC,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAuC3B,GAtCI7H,KAAKmyB,WAAWkB,YAAYrM,OACzBhnB,KAAKorE,UAAUthC,GAMlB2iC,EAAQzsE,KAAKorE,UAAUthC,KALvB2iC,EAAQlpD,SAAS,SACXrhB,aAAa,iBAAkB20D,YAAY,IACjD4V,EAAMvqE,aAAa,kBAAmB40D,aAAa,IACnD2V,EAAMvqE,aAAa,oBAAqB,MAKrClC,KAAKqrE,WACJrrE,KAAKonE,UAAUt9B,GAEjBssC,GADAD,EAAUn2E,KAAKonE,UAAUt9B,IACTusC,SAAS,KAEzBF,EAAUtrD,UAAU,QACZhpB,MAAMq0E,WAAa,GAC3BE,EAAQ7yD,SAAS,QACXnhB,YAAYqqE,GAClB1sD,SAASo2D,MAGHn2E,KAAKqrE,SAYfoB,EAAQzsE,KAAKorE,UAAUthC,GAAO9pC,KAAKorE,UAAUthC,GAAOvmB,SAAS,QAXzDvjB,KAAKonE,UAAUt9B,IACjBqsC,EAAUn2E,KAAKonE,UAAUt9B,GACzB2iC,EAAQzsE,KAAKorE,UAAUthC,KAGvB/pB,SADAo2D,EAAUtrD,UAAU,SAGpB9K,SADA0sD,EAAQ5hD,UAAU,SAElBsrD,EAAQ/zE,YAAYqqE,IAOpBzsE,KAAKmyB,WAAWkB,YAAYrM,MAAO,CACrC,IACawY,IADEx/B,KAAKmyB,WAAWkB,YAAY20B,YAAYrhC,EAAaw2C,UAAUt1D,GAAIy3C,EAASC,OAAQv/C,KAAKmyB,WAAWkB,YAAYg1B,cAAc1hC,EAAazE,GAAGojC,SAkB7J,GAdE9lB,EADEvY,EACUA,EAAS1W,KAET,KAGds0D,EAAar5B,QAEThM,GAAaA,EAAU5Z,QAAU4Z,EAAU5Z,OAAOplB,SACpDolB,EAAS4Z,EAAU5Z,OAAO,GAAGO,GAC7B0+C,EAAa7xB,MAAMrsB,EAAau2C,UAAY,IAAKv2C,EAAau2C,UAAY,KAC1E0J,EAAW5mE,KAAK2mE,gBAAgB9B,EAAcj/C,GAC9C6mD,EAAMvqE,aAAa,IAAK0kE,IAGrB5mE,KAAKqrE,SAsBRrrE,KAAKk2D,UAAU9zD,YAAYqqE,OAtBT,CAGlB,GAFAzsE,KAAKk2D,UAAU9zD,YAAY+zE,GAEvB32C,GAAaA,EAAU5Z,OAAQ,CAEjC9jB,SAASk3B,KAAK52B,YAAYg0E,GAC1B,IAAe77B,EAAG67B,EAAMhqD,UACxBgqD,EAAMl0E,aAAa,QAASq4C,EAAYzvB,MAAQ,GAChDsrD,EAAMl0E,aAAa,SAAUq4C,EAAYxvB,OAAS,GAClDqrD,EAAMl0E,aAAa,UAAWq4C,EAAY5f,EAAI,EAAI,KAAO4f,EAAYrW,EAAI,GAAK,KAAOqW,EAAYzvB,MAAQ,GAAK,KAAOyvB,EAAYxvB,OAAS,IAC1I,IAAIurD,EAAaF,EAAMv0E,MACnB00E,EAAmB,cAAgBh8B,EAAY5f,EAAI,GAAK,OAAS4f,EAAYrW,EAAI,GAAK,MAC1FoyC,EAAWjnC,UAAYknC,EACvBD,EAAWrC,gBAAkBsC,EAC7B/V,EAAQ34D,GAAGo1D,QAAU1iB,EAAYrW,EAAI,CACjD,MACYkyC,EAAMl0E,aAAa,QAAS,GAC5Bk0E,EAAMl0E,aAAa,SAAU,GAG/Bi0E,EAAQ/zE,YAAYg0E,EAC9B,CAGA,MAIQ,GAHA3J,EAAMtqE,YAAcq+D,EAAQ34D,GAAGyX,IAC/BmtD,EAAM9+C,eAAe,uCAAwC,YAAa,YAErE3tB,KAAKqrE,SAQRrrE,KAAKk2D,UAAU9zD,YAAYqqE,OART,CAClBzsE,KAAKk2D,UAAU9zD,YAAY+zE,GAE3B,IAAIK,EAAS/J,EAAM5qE,QACI,kBAAoB8kB,EAAau2C,UAAY,IAAM,QAC1EsZ,EAAOnnC,UAAYonC,EACnBD,EAAOvC,gBAAkBwC,CACnC,CAMWz2E,KAAKqrE,SAGRrrE,KAAKonE,UAAUt9B,GAAO2iC,EAFtBzsE,KAAKonE,UAAUt9B,GAAOqsC,EAKxBn2E,KAAKonE,UAAUt9B,GAAKjoC,MAAMse,QAAU,QACpCngB,KAAKorE,UAAUthC,GAAO2iC,EACtB3iC,GAAO,CACR,CAED,KAAOA,EAAM9pC,KAAKonE,UAAU5mE,QAC1BR,KAAKonE,UAAUt9B,GAAKjoC,MAAMse,QAAU,OACpC2pB,GAAO,CAEb,EAEEqhC,aAAa9rE,UAAU42D,mBAAqB,WAC1C,MAEA,GAAIj2D,KAAKuQ,KAAKy7D,YAAa,CACzB,IAAKhsE,KAAKynC,gBAAkBznC,KAAKmkE,mBAC/B,OAGF,GAAInkE,KAAKqrE,UAAYrrE,KAAK0pD,eAAe8H,QAAS,CAEhDxxD,KAAKiP,WAAW/M,aAAa,WAAYlC,KAAK0pD,eAAeC,MAAMvkD,EAAEhE,EAAE,GAAK,KAAOpB,KAAK0pD,eAAeC,MAAMvkD,EAAEhE,EAAE,GAAK,IAAMpB,KAAK61E,MAAQ,IAAM71E,KAAK81E,OACpJY,EAAW12E,KAAKiP,WAAWpN,MAC3B,IAAI80E,EAAc,cAAgB32E,KAAK0pD,eAAeC,MAAMvkD,EAAEhE,EAAE,GAAK,OAASpB,KAAK0pD,eAAeC,MAAMvkD,EAAEhE,EAAE,GAAK,MACjHs1E,EAASrnC,UAAYsnC,EACrBD,EAASzC,gBAAkB0C,CAC5B,CACF,CAID,GAFA32E,KAAKymE,aAAanC,YAAYtkE,KAAK4iE,aAAavG,YAAar8D,KAAKmkE,oBAE7DnkE,KAAKmkE,oBAAuBnkE,KAAKymE,aAAatC,mBAAnD,CAIA,IAAKt8D,EACE0T,EAKW8xD,EACNC,EACRsJ,EANAnzB,EAAQ,IACUzjD,KAAKymE,aAAavC,kBAC1BlkE,KAAK4iE,aAAavG,YAAYzuD,EAM5C,IALA2N,EAAMilD,EAAQhgE,OAKTqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB24D,EAAQ34D,GAAGuJ,EACbqyC,GAAS,GAET6pB,EAAWttE,KAAKonE,UAAUv/D,GAC1B+uE,EAAW52E,KAAKorE,UAAUvjE,GAC1BwlE,EAAiBnJ,EAAgBzgB,GACjCA,GAAS,EAEL4pB,EAAejmC,KAAKp3B,IACjBhQ,KAAKqrE,SAIRiC,EAASprE,aAAa,YAAamrE,EAAer9D,IAHlDs9D,EAASzrE,MAAMoyE,gBAAkB5G,EAAer9D,EAChDs9D,EAASzrE,MAAMwtC,UAAYg+B,EAAer9D,IAO9Cs9D,EAASzrE,MAAM8tE,QAAUtC,EAAehiE,EAEpCgiE,EAAevR,IAAMuR,EAAejmC,KAAK00B,IAC3C8a,EAAS10E,aAAa,eAAgBmrE,EAAevR,IAGnDuR,EAAetlB,IAAMslB,EAAejmC,KAAK2gB,IAC3C6uB,EAAS10E,aAAa,SAAUmrE,EAAetlB,IAG7CslB,EAAetR,IAAMsR,EAAejmC,KAAK20B,KAC3C6a,EAAS10E,aAAa,OAAQmrE,EAAetR,IAC7C6a,EAAS/0E,MAAMwgB,MAAQgrD,EAAetR,KAK5C,GAAI/7D,KAAKk2D,UAAU9pC,UAAYpsB,KAAKgpD,SAAWhpD,KAAKynC,eAAiBznC,KAAKonC,MAAO,CAC/E,IAAImT,EAAcv6C,KAAKk2D,UAAU9pC,UAcjC,GAZIpsB,KAAKkrE,YAAYhnB,IAAM3J,EAAYzvB,QACrC9qB,KAAKkrE,YAAYhnB,EAAI3J,EAAYzvB,MACjC9qB,KAAKiP,WAAW/M,aAAa,QAASq4C,EAAYzvB,QAGhD9qB,KAAKkrE,YAAY15D,IAAM+oC,EAAYxvB,SACrC/qB,KAAKkrE,YAAY15D,EAAI+oC,EAAYxvB,OACjC/qB,KAAKiP,WAAW/M,aAAa,SAAUq4C,EAAYxvB,SAKjD/qB,KAAKkrE,YAAYhnB,IAAM3J,EAAYzvB,MAAQ+rD,GAAc72E,KAAKkrE,YAAY15D,IAAM+oC,EAAYxvB,OAAS8rD,GAAc72E,KAAKkrE,YAAYvwC,IAAM4f,EAAY5f,EAF7I,GAE2J36B,KAAKkrE,YAAYhnC,IAAMqW,EAAYrW,EAF9L,EAE0M,CACrNlkC,KAAKkrE,YAAYhnB,EAAI3J,EAAYzvB,MAAQ+rD,EACzC72E,KAAKkrE,YAAY15D,EAAI+oC,EAAYxvB,OAAS8rD,EAC1C72E,KAAKkrE,YAAYvwC,EAAI4f,EAAY5f,EALtB,EAMX36B,KAAKkrE,YAAYhnC,EAAIqW,EAAYrW,EANtB,EAOXlkC,KAAKiP,WAAW/M,aAAa,UAAWlC,KAAKkrE,YAAYvwC,EAAI,IAAM36B,KAAKkrE,YAAYhnC,EAAI,IAAMlkC,KAAKkrE,YAAYhnB,EAAI,IAAMlkD,KAAKkrE,YAAY15D,GAC1IklE,EAAW12E,KAAKiP,WAAWpN,MAC3B,MAAmB,aAAe7B,KAAKkrE,YAAYvwC,EAAI,MAAQ36B,KAAKkrE,YAAYhnC,EAAI,MACpFwyC,EAASrnC,UAAYynC,EACrBJ,EAASzC,gBAAkB6C,CAC5B,CACF,CA1EA,CA2EL,EA6CE37D,gBAAgB,CAAC0vC,YAAamE,aAAc6G,kBAAmByV,gBAE/DA,eAAejsE,UAAU03E,MAAQ,WAC/B,IAAIlvE,EAEIke,EACYixD,EAChB9D,EAHG33D,EAAGvb,KAAK+lB,KAAK4lD,eAAenrE,OAKnC,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAIxB,GAAkB,QAFlBke,EAAO/lB,KAAK+lB,KAAK4lD,eAAe9jE,IAEvB7E,KAAe,CACtBg0E,EAAmBjxD,EAAKkxD,gBAAgBp1E,MACxCqxE,EAAiBntD,EAAKjP,UAAUjV,MAChC,MAAkB7B,KAAKurE,GAAGnqE,EAAI,OACjB,cACT8+C,EAAS,4CACb82B,EAAiBE,YAAcA,EAC/BF,EAAiBG,kBAAoBD,EACrChE,EAAe9yD,gBAAkBiK,EACjC6oD,EAAeC,mBAAqB9oD,EACpC6oD,EAAe7yD,sBAAwBgK,EACvC2sD,EAAiB3nC,UAAY6Q,EAC7B82B,EAAiB/C,gBAAkB/zB,CACpC,CAEP,EAEEorB,eAAejsE,UAAU2vE,eAAiB,aAE1C1D,eAAejsE,UAAU43B,KAAO,aAEhCq0C,eAAejsE,UAAU41B,YAAc,WACrC,IACIptB,IADIu/B,EAAGpnC,KAAKynC,cAIhB,GAAIznC,KAAK6wD,UAGP,IAFAt1C,EAAMvb,KAAK6wD,UAAUrwD,OAEhBqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBu/B,EAAOpnC,KAAK6wD,UAAUhpD,GAAG6hD,eAAeC,MAAMviB,MAAQA,EAI1D,GAAIA,GAAQpnC,KAAKurE,GAAGnkC,MAAQpnC,KAAKoF,GAAKpF,KAAKoF,EAAEgiC,MAAQpnC,KAAKk4C,KAAOl4C,KAAKk4C,GAAG9Q,MAAQpnC,KAAKm4C,GAAG/Q,MAAQpnC,KAAKo4C,GAAGhR,OAASpnC,KAAKq4C,GAAGjR,MAAQpnC,KAAKs4C,GAAGlR,MAAQpnC,KAAKu4C,GAAGnR,MAAQpnC,KAAK2sC,GAAGvF,MAAQpnC,KAAKsnB,GAAKtnB,KAAKsnB,EAAE8f,KAAM,CAGvM,GAFApnC,KAAK04C,IAAIlN,QAELxrC,KAAK6wD,UAGP,IAAKhpD,EAFL0T,EAAMvb,KAAK6wD,UAAUrwD,OAAS,EAEhBqH,GAAK,EAAGA,GAAK,EAAG,CAC5B,IAAIuvE,EAAUp3E,KAAK6wD,UAAUhpD,GAAG6hD,eAAeC,MAC/C3pD,KAAK04C,IAAIxJ,WAAWkoC,EAAQhyE,EAAEhE,EAAE,IAAKg2E,EAAQhyE,EAAEhE,EAAE,GAAIg2E,EAAQhyE,EAAEhE,EAAE,IACjEpB,KAAK04C,IAAIjK,SAAS2oC,EAAQzqC,GAAGvrC,EAAE,IAAIstC,SAAS0oC,EAAQzqC,GAAGvrC,EAAE,IAAIutC,QAAQyoC,EAAQzqC,GAAGvrC,EAAE,IAClFpB,KAAK04C,IAAIjK,SAAS2oC,EAAQ/+B,GAAGj3C,GAAGstC,SAAS0oC,EAAQ9+B,GAAGl3C,GAAGutC,QAAQyoC,EAAQ7+B,GAAGn3C,GAC1EpB,KAAK04C,IAAI1F,MAAM,EAAIokC,EAAQz1E,EAAEP,EAAE,GAAI,EAAIg2E,EAAQz1E,EAAEP,EAAE,GAAI,EAAIg2E,EAAQz1E,EAAEP,EAAE,IACvEpB,KAAK04C,IAAIxJ,UAAUkoC,EAAQ9vD,EAAElmB,EAAE,GAAIg2E,EAAQ9vD,EAAElmB,EAAE,GAAIg2E,EAAQ9vD,EAAElmB,EAAE,GAChE,CASH,GANIpB,KAAKoF,EACPpF,KAAK04C,IAAIxJ,WAAWlvC,KAAKoF,EAAEhE,EAAE,IAAKpB,KAAKoF,EAAEhE,EAAE,GAAIpB,KAAKoF,EAAEhE,EAAE,IAExDpB,KAAK04C,IAAIxJ,WAAWlvC,KAAKk4C,GAAG92C,GAAIpB,KAAKm4C,GAAG/2C,EAAGpB,KAAKo4C,GAAGh3C,GAGjDpB,KAAKsnB,EAAG,CACV,IAAc+vD,EAGZA,EADEr3E,KAAKoF,EACM,CAACpF,KAAKoF,EAAEhE,EAAE,GAAKpB,KAAKsnB,EAAElmB,EAAE,GAAIpB,KAAKoF,EAAEhE,EAAE,GAAKpB,KAAKsnB,EAAElmB,EAAE,GAAIpB,KAAKoF,EAAEhE,EAAE,GAAKpB,KAAKsnB,EAAElmB,EAAE,IAE9E,CAACpB,KAAKk4C,GAAG92C,EAAIpB,KAAKsnB,EAAElmB,EAAE,GAAIpB,KAAKm4C,GAAG/2C,EAAIpB,KAAKsnB,EAAElmB,EAAE,GAAIpB,KAAKo4C,GAAGh3C,EAAIpB,KAAKsnB,EAAElmB,EAAE,IAGvF,IAAOk2E,EAAG1rE,KAAK+S,KAAK/S,KAAK6S,IAAI44D,EAAW,GAAI,GAAKzrE,KAAK6S,IAAI44D,EAAW,GAAI,GAAKzrE,KAAK6S,IAAI44D,EAAW,GAAI,IAElGE,EAAU,CAACF,EAAW,GAAKC,EAAKD,EAAW,GAAKC,EAAKD,EAAW,GAAKC,KACpD1rE,KAAK+S,KAAK44D,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,MAC7D3rE,KAAKu6B,MAAMoxC,EAAQ,GAAIC,GAC1BC,EAAG7rE,KAAKu6B,MAAMoxC,EAAQ,IAAKA,EAAQ,IACjDv3E,KAAK04C,IAAIhK,QAAQ+oC,GAAYhpC,SAASipC,EACvC,CAED13E,KAAK04C,IAAIjK,SAASzuC,KAAKq4C,GAAGj3C,GAAGstC,SAAS1uC,KAAKs4C,GAAGl3C,GAAGutC,QAAQ3uC,KAAKu4C,GAAGn3C,GACjEpB,KAAK04C,IAAIjK,SAASzuC,KAAK2sC,GAAGvrC,EAAE,IAAIstC,SAAS1uC,KAAK2sC,GAAGvrC,EAAE,IAAIutC,QAAQ3uC,KAAK2sC,GAAGvrC,EAAE,IACzEpB,KAAK04C,IAAIxJ,UAAUlvC,KAAKmyB,WAAWm/B,SAASpN,EAAI,EAAGlkD,KAAKmyB,WAAWm/B,SAAS9/C,EAAI,EAAG,GACnFxR,KAAK04C,IAAIxJ,UAAU,EAAG,EAAGlvC,KAAKurE,GAAGnqE,GACjC,IAAoBu2E,GAAI33E,KAAKwrE,SAASl6B,OAAOtxC,KAAK04C,KAElD,IAAKi/B,GAAoB33E,KAAKurE,GAAGnkC,OAASpnC,KAAK+lB,KAAK4lD,eAAgB,CAElE,MACoBqL,EAChB9D,EAEJ,IALA33D,EAAMvb,KAAK+lB,KAAK4lD,eAAenrE,OAK1BqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAGxB,GAAkB,QAFlBke,EAAO/lB,KAAK+lB,KAAK4lD,eAAe9jE,IAEvB7E,KAAe,CACtB,GAAI20E,EAAkB,CACpB,IAAYC,EAAG53E,KAAK04C,IAAI/F,SACxBugC,EAAiBntD,EAAKjP,UAAUjV,OACjBwtC,UAAYuoC,EAC3B1E,EAAee,gBAAkB2D,CAClC,CAEG53E,KAAKurE,GAAGnkC,QACV4vC,EAAmBjxD,EAAKkxD,gBAAgBp1E,OACvBq1E,YAAcl3E,KAAKurE,GAAGnqE,EAAI,KAC3C41E,EAAiBG,kBAAoBn3E,KAAKurE,GAAGnqE,EAAI,KAEpD,CAGHpB,KAAK04C,IAAIzO,MAAMjqC,KAAKwrE,SACrB,CACF,CAEDxrE,KAAKynC,eAAgB,CACzB,EAEE6jC,eAAejsE,UAAUowB,aAAe,SAAU85B,GAChDvpD,KAAKivD,kBAAkB1F,GAAK,EAChC,EAEE+hB,eAAejsE,UAAUiuB,QAAU,aAEnCg+C,eAAejsE,UAAU+vD,eAAiB,WACxC,OAAW,IACf,EAOEj0C,gBAAgB,CAAC0vC,YAAaa,iBAAkBqf,aAAcC,cAAenV,iBAAkB7G,aAAcnG,mBAAoB4iB,eAEjIA,cAAcpsE,UAAU22D,cAAgB,WACtC,IAAIr5C,EAAY3c,KAAKmyB,WAAW3F,cAAcxsB,KAAK2rB,aACzC,UAEN3rB,KAAKuQ,KAAK0U,SACZjlB,KAAK63E,UAAYt0D,SAAS,SAC1BvjB,KAAK63E,UAAU31E,aAAa,QAASlC,KAAK2rB,UAAUu4B,EAAI,MACxDlkD,KAAK63E,UAAU31E,aAAa,SAAUlC,KAAK2rB,UAAUna,EAAI,MACzDxR,KAAK63E,UAAUlqD,eAAe,+BAAgC,OAAQhR,GACtE3c,KAAK6uD,aAAazsD,YAAYpC,KAAK63E,WACnC73E,KAAK4uD,YAAY1sD,aAAa,QAASlC,KAAK2rB,UAAUu4B,GACtDlkD,KAAK4uD,YAAY1sD,aAAa,SAAUlC,KAAK2rB,UAAUna,IAEvDxR,KAAK6uD,aAAazsD,YAAY6pB,GAGhCA,EAAIwB,YAAc,YAClBxB,EAAIpP,IAAMF,EAEN3c,KAAKuQ,KAAKkkD,IACZz0D,KAAK4uD,YAAY1sD,aAAa,KAAMlC,KAAKuQ,KAAKkkD,GAEpD,EA+BEt5C,gBAAgB,CAACswC,cAAeigB,oBAChCA,mBAAmBrsE,UAAUuwD,UAAY8X,YAAYroE,UAAUuwD,UAE/D8b,mBAAmBrsE,UAAUwwD,qBAAuB,WAClD,KAAO7vD,KAAKixD,gBAAgBzwD,QACZR,KAAKixD,gBAAgBla,MAC3Bgf,gBAEd,EAEE2V,mBAAmBrsE,UAAUouE,mBAAqB,SAAUj5D,EAAS00B,GACnE,IAAiB4uC,EAAGtjE,EAAQ46C,iBAE5B,GAAK0oB,EAAL,CAIA,IAAS/nB,EAAG/vD,KAAK4kB,OAAOskB,GAExB,GAAK6mB,EAAMgoB,KAAQ/3E,KAAKynE,WA4BtBznE,KAAKg4E,iBAAiBF,EAAe5uC,QA3BrC,GAAIlpC,KAAK2rE,eACP3rE,KAAKg4E,iBAAiBF,EAAe5uC,OAChC,CAML,IALA,IACkB+uC,EACLC,EAFTrwE,EAAI,EAKDA,EAAIqhC,GACLlpC,KAAKmY,SAAStQ,KAA2B,IAArB7H,KAAKmY,SAAStQ,IAAe7H,KAAKmY,SAAStQ,GAAGunD,iBACpE8oB,EAAYl4E,KAAKmY,SAAStQ,GAE1BowE,GADgBj4E,KAAK4kB,OAAO/c,GAAGkwE,IAAM/3E,KAAKm4E,wBAAwBtwE,GAAKqwE,EAAU9oB,mBAC/C6oB,GAGpCpwE,GAAK,EAGHowE,EACGloB,EAAMgoB,KAAQ/3E,KAAKynE,YACtBznE,KAAK6uD,aAAaj7C,aAAakkE,EAAeG,GAEtCloB,EAAMgoB,KAAQ/3E,KAAKynE,YAC7BznE,KAAK6uD,aAAazsD,YAAY01E,EAEjC,CA9BF,CAkCL,EAEEpM,mBAAmBrsE,UAAU+wD,YAAc,SAAU7/C,GACnD,OAAKvQ,KAAKynE,eAIc2M,cAAC7jE,EAAMvQ,KAAKmyB,WAAYnyB,MAHvC,oBAAoBuQ,EAAMvQ,KAAKmyB,WAAYnyB,KAIxD,EAEE0rE,mBAAmBrsE,UAAUgxD,WAAa,SAAU9/C,GAClD,OAAKvQ,KAAKynE,WAIH,iBAAiBl3D,EAAMvQ,KAAKmyB,WAAYnyB,UAHd+rE,qBAACx7D,EAAMvQ,KAAKmyB,WAAYnyB,KAI7D,EAEE0rE,mBAAmBrsE,UAAUixD,aAAe,SAAU//C,GAEpD,OADAvQ,KAAK4rE,OAAS,mBAAmBr7D,EAAMvQ,KAAKmyB,WAAYnyB,MACjDA,KAAK4rE,MAChB,EAEEF,mBAAmBrsE,UAAU2wD,YAAc,SAAUz/C,GACnD,OAAKvQ,KAAKynE,WAIH,kBAAkBl3D,EAAMvQ,KAAKmyB,WAAYnyB,UAHtBwzD,cAACjjD,EAAMvQ,KAAKmyB,WAAYnyB,KAItD,EAEE0rE,mBAAmBrsE,UAAU6wD,YAAc,SAAU3/C,GACnD,OAAKvQ,KAAKynE,WAICuD,IAAAA,cAAcz6D,EAAMvQ,KAAKmyB,WAAYnyB,MAHvC,kBAAkBuQ,EAAMvQ,KAAKmyB,WAAYnyB,KAItD,EAEE0rE,mBAAmBrsE,UAAU8wD,WAAauX,YAAYroE,UAAU8wD,WAEhEub,mBAAmBrsE,UAAU84E,wBAA0B,SAAUjvC,GAI/D,IAHA,IAAIrhC,EAAI,EACD0T,EAAGvb,KAAK2rE,eAAenrE,OAEvBqH,EAAI0T,GAAK,CACd,GAAIvb,KAAK2rE,eAAe9jE,GAAGuwE,UAAYlvC,GAAOlpC,KAAK2rE,eAAe9jE,GAAGwwE,QAAUnvC,EAC7E,YAAYyiC,eAAe9jE,GAAGovE,gBAGhCpvE,GAAK,CACN,CAED,WACJ,EAEE6jE,mBAAmBrsE,UAAUi5E,sBAAwB,SAAUpvC,EAAKlmC,GAClE,IACSnB,EACLqxE,EAFe+D,EAAGpsD,UAAU,OAGhC9K,SAASk3D,GACT,IAAangE,EAAG+T,UAAU,OAG1B,GAFA9K,SAASjJ,GAEI,OAAT9T,EAAe,EACjBnB,EAAQo1E,EAAgBp1E,OAClBipB,MAAQ9qB,KAAKmyB,WAAWm/B,SAASpN,EAAI,KAC3CriD,EAAMkpB,OAAS/qB,KAAKmyB,WAAWm/B,SAAS9/C,EAAI,KAC5C,IAAI8sC,EAAS,UACbz8C,EAAMwe,sBAAwBi+B,EAC9Bz8C,EAAMsxE,mBAAqB70B,EAC3Bz8C,EAAMue,gBAAkBk+B,EAExB,IAAU4B,EAAG,6CADbgzB,EAAiBp8D,EAAUjV,OAEZwtC,UAAY6Q,EAC3BgzB,EAAee,gBAAkB/zB,CAClC,CAED+2B,EAAgB70E,YAAY0U,GAE5B,IAAuByhE,EAAG,CACxBzhE,UAAWA,EACXmgE,gBAAiBA,EACjBmB,SAAUlvC,EACVmvC,OAAQnvC,EACRlmC,KAAMA,GAGR,OADAhD,KAAK2rE,eAAe3mE,KAAKuzE,GACCA,CAC9B,EAEE7M,mBAAmBrsE,UAAUm5E,kBAAoB,WAC/C,IAAK3wE,EAED4wE,EADAl9D,EAAMvb,KAAK4kB,OAAOpkB,OAEFk4E,EAAG,GAEvB,IAAK7wE,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACpB7H,KAAK4kB,OAAO/c,GAAGkwE,KAA6B,IAAtB/3E,KAAK4kB,OAAO/c,GAAG2d,IACd,OAArBkzD,IACFA,EAAmB,KACnBD,EAA0Bz4E,KAAKs4E,sBAAsBzwE,EAAG,OAG1D4wE,EAAwBJ,OAASzsE,KAAKmT,IAAI05D,EAAwBJ,OAAQxwE,KAEjD,OAArB6wE,IACFA,EAAmB,KACnBD,EAA0Bz4E,KAAKs4E,sBAAsBzwE,EAAG,OAG1D4wE,EAAwBJ,OAASzsE,KAAKmT,IAAI05D,EAAwBJ,OAAQxwE,IAM9E,IAAKA,GAFL0T,EAAMvb,KAAK2rE,eAAenrE,QAEX,EAAGqH,GAAK,EAAGA,GAAK,EAC7B7H,KAAK24E,YAAYv2E,YAAYpC,KAAK2rE,eAAe9jE,GAAGovE,gBAE1D,EAEEvL,mBAAmBrsE,UAAU24E,iBAAmB,SAAUhgD,EAAMkR,GAI9D,IAHA,MAAQ,EACD3tB,EAAGvb,KAAK2rE,eAAenrE,OAEvBqH,EAAI0T,GAAK,CACd,GAAI2tB,GAAOlpC,KAAK2rE,eAAe9jE,GAAGwwE,OAAQ,CAIxC,IAHA,IACIxK,EADC/oD,EAAG9kB,KAAK2rE,eAAe9jE,GAAGuwE,SAGxBtzD,EAAIokB,GACLlpC,KAAKmY,SAAS2M,IAAM9kB,KAAKmY,SAAS2M,GAAGsqC,iBACvCye,EAAc7tE,KAAKmY,SAAS2M,GAAGsqC,kBAGjCtqC,GAAK,EAGH+oD,EACF7tE,KAAK2rE,eAAe9jE,GAAGiP,UAAUlD,aAAaokB,EAAM61C,GAEpD7tE,KAAK2rE,eAAe9jE,GAAGiP,UAAU1U,YAAY41B,GAG/C,KACD,CAEDnwB,GAAK,CACN,CACL,EAEE6jE,mBAAmBrsE,UAAUoyB,gBAAkB,SAAUwC,GACvD,IAAI0kD,EAAc9tD,UAAU,OACxBkH,EAAU/xB,KAAKqxD,cAAct/B,QAC7BlwB,EAAQ82E,EAAY92E,MACxBA,EAAMipB,MAAQmJ,EAASiwB,EAAI,KAC3BriD,EAAMkpB,OAASkJ,EAASziB,EAAI,KAC5BxR,KAAK24E,YAAcA,EACnB54D,SAAS44D,GACT92E,EAAM2e,eAAiB,OACvB3e,EAAM6e,kBAAoB,OAC1B7e,EAAM4e,qBAAuB,OAEzBzgB,KAAK4pD,aAAa2e,WACpBoQ,EAAYz2E,aAAa,QAASlC,KAAK4pD,aAAa2e,WAGtDx2C,EAAQ3vB,YAAYu2E,GACpB92E,EAAM+2E,SAAW,SACjB,IAAIzrE,EAAMoW,SAAS,OACnBpW,EAAIjL,aAAa,QAAS,KAC1BiL,EAAIjL,aAAa,SAAU,KAC3B6d,SAAS5S,GACTnN,KAAK24E,YAAYv2E,YAAY+K,GAC7B,MAAWoW,SAAS,QACpBpW,EAAI/K,YAAYgwB,GAChBpyB,KAAKuQ,KAAO0jB,EAEZj0B,KAAKmxD,gBAAgBl9B,EAAU9mB,GAC/BnN,KAAKmyB,WAAWC,KAAOA,EACvBpyB,KAAK4kB,OAASqP,EAASrP,OACvB5kB,KAAK6uD,aAAe7uD,KAAK24E,YACzB34E,KAAKw4E,oBACLx4E,KAAK80B,qBACT,EAEE42C,mBAAmBrsE,UAAUiuB,QAAU,WAOrC,MANIttB,KAAKqxD,cAAct/B,UACrB/xB,KAAKqxD,cAAct/B,QAAQmH,UAAY,IAGzCl5B,KAAKqxD,cAAcv6C,UAAY,KAC/B9W,KAAKmyB,WAAWC,KAAO,KAEvB,MAAUpyB,KAAK4kB,OAAS5kB,KAAK4kB,OAAOpkB,OAAS,EAE7C,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAKmY,SAAStQ,GAAGylB,UAGnBttB,KAAKmY,SAAS3X,OAAS,EACvBR,KAAK2oE,WAAY,EACjB3oE,KAAKqxD,cAAgB,IACzB,EAEEqa,mBAAmBrsE,UAAUy1B,oBAAsB,WACjD,IAII+Z,EACAxC,EACA8C,EACA3pB,EAPY8tD,EAAGtzE,KAAKqxD,cAAct/B,QAAQ8yB,YAC1C0uB,EAAgBvzE,KAAKqxD,cAAct/B,QAAQ2hD,aACjCF,EAAGF,EAAeC,EACbvzE,KAAKmyB,WAAWm/B,SAASpN,EAAIlkD,KAAKmyB,WAAWm/B,SAAS9/C,EAMtDgiE,GACjB3kC,EAAKykC,EAAetzE,KAAKmyB,WAAWm/B,SAASpN,EAC7C7X,EAAKinC,EAAetzE,KAAKmyB,WAAWm/B,SAASpN,EAC7C/U,EAAK,EACL3pB,GAAM+tD,EAAgBvzE,KAAKmyB,WAAWm/B,SAAS9/C,GAAK8hE,EAAetzE,KAAKmyB,WAAWm/B,SAASpN,IAAM,IAElGrV,EAAK0kC,EAAgBvzE,KAAKmyB,WAAWm/B,SAAS9/C,EAC9C66B,EAAKknC,EAAgBvzE,KAAKmyB,WAAWm/B,SAAS9/C,EAC9C29B,GAAMmkC,EAAetzE,KAAKmyB,WAAWm/B,SAASpN,GAAKqvB,EAAgBvzE,KAAKmyB,WAAWm/B,SAAS9/C,IAAM,EAClGgU,EAAK,GAGP,IAAS3jB,EAAG7B,KAAK24E,YAAY92E,MAC7BA,EAAMoyE,gBAAkB,YAAcplC,EAAK,YAAcxC,EAAK,gBAAkB8C,EAAK,IAAM3pB,EAAK,QAChG3jB,EAAMwtC,UAAYxtC,EAAMoyE,eAC5B,EAEEvI,mBAAmBrsE,UAAU41B,YAAcyyC,YAAYroE,UAAU41B,YAEjEy2C,mBAAmBrsE,UAAU43B,KAAO,WAClCj3B,KAAK24E,YAAY92E,MAAMse,QAAU,MACrC,EAEEurD,mBAAmBrsE,UAAU63B,KAAO,WAClCl3B,KAAK24E,YAAY92E,MAAMse,QAAU,OACrC,EAEEurD,mBAAmBrsE,UAAUq1B,UAAY,WAGvC,GAFA10B,KAAKwwD,gBAEDxwD,KAAK4rE,OACP5rE,KAAK4rE,OAAOmL,YACP,CACL,IAEKlvE,EAFKgxE,EAAG74E,KAAKmyB,WAAWm/B,SAASpN,EAClC40B,EAAU94E,KAAKmyB,WAAWm/B,SAAS9/C,EAEhC+J,EAAGvb,KAAK2rE,eAAenrE,OAE9B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAAG,CAC3B,IAAIhG,EAAQ7B,KAAK2rE,eAAe9jE,GAAGovE,gBAAgBp1E,MACnDA,EAAMs1E,kBAAoBvrE,KAAK+S,KAAK/S,KAAK6S,IAAIo6D,EAAQ,GAAKjtE,KAAK6S,IAAIq6D,EAAS,IAAM,KAClFj3E,EAAMq1E,YAAcr1E,EAAMs1E,iBAC3B,CACF,CACL,EAEEzL,mBAAmBrsE,UAAU80B,wBAA0B,SAAUrN,GAC/D,IAAKjf,EACE0T,EAAGuL,EAAOtmB,OACbu4E,EAAoBluD,UAAU,OAElC,IAAKhjB,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,GAAIif,EAAOjf,GAAG6nB,GAAI,CAChB,IAAI3J,EAAO/lB,KAAKiwD,WAAWnpC,EAAOjf,GAAIkxE,EAAmB/4E,KAAKmyB,WAAWpM,KAAM,MAC/EA,EAAKyN,kBACLxzB,KAAKmyB,WAAWd,iBAAiB/B,oBAAoBvJ,EACtD,CAEP,EAcE5K,gBAAgB,CAACuwD,mBAAoBnE,aAAcwD,cAAec,cAClEA,aAAaxsE,UAAU25E,6BAA+BnN,aAAaxsE,UAAU00D,wBAE7E8X,aAAaxsE,UAAU00D,wBAA0B,WAC/C/zD,KAAKg5E,+BAGDh5E,KAAKuQ,KAAK0U,SACZjlB,KAAKiP,WAAW/M,aAAa,QAASlC,KAAKuQ,KAAK2zC,GAChDlkD,KAAKiP,WAAW/M,aAAa,SAAUlC,KAAKuQ,KAAKiB,GACjDxR,KAAKi0D,mBAAqBj0D,KAAK4uD,aAE/B5uD,KAAKi0D,mBAAqBj0D,KAAK6uD,YAErC,EAEEgd,aAAaxsE,UAAU24E,iBAAmB,SAAUhgD,EAAMkR,GAIxD,IAHA,IACI2kC,EADC/oD,EAAG,EAGDA,EAAIokB,GACLlpC,KAAKmY,SAAS2M,IAAM9kB,KAAKmY,SAAS2M,GAAGsqC,iBACvCye,EAAc7tE,KAAKmY,SAAS2M,GAAGsqC,kBAGjCtqC,GAAK,EAGH+oD,EACF7tE,KAAK6uD,aAAaj7C,aAAaokB,EAAM61C,GAErC7tE,KAAK6uD,aAAazsD,YAAY41B,EAEpC,EAEE6zC,aAAaxsE,UAAU4wD,WAAa,SAAU1/C,GAC5C,OAAKvQ,KAAKynE,WAICoE,IAAAA,aAAat7D,EAAMvQ,KAAKmyB,WAAYnyB,MAHtC,IAAkBwnE,eAACj3D,EAAMvQ,KAAKmyB,WAAYnyB,KAIvD,EAgCEmb,gBAAgB,CAACuwD,oBAAqBI,gBAEtCA,eAAezsE,UAAU4wD,WAAa,SAAU1/C,GAC9C,OAAKvQ,KAAKynE,WAIH,IAAgBoE,aAACt7D,EAAMvQ,KAAKmyB,WAAYnyB,MAHlCwnE,IAAAA,eAAej3D,EAAMvQ,KAAKmyB,WAAYnyB,KAIvD,EAEE,IAAIouD,wBACeroC,SAAAA,GACf,SAA2BkzD,EAACzzE,GAI1B,IAHA,IAAKqC,EAAG,EACJ0T,EAAMwK,EAAKnB,OAAOpkB,OAEfqH,EAAI0T,GAAK,CACd,GAAIwK,EAAKnB,OAAO/c,GAAG2nB,KAAOhqB,GAAQugB,EAAKnB,OAAO/c,GAAGk8B,MAAQv+B,EACvD,OAAOugB,EAAK5N,SAAStQ,GAAGimD,eAG1BjmD,GAAK,CACN,CAED,WACD,CAaD,OAXA3E,OAAO8C,eAAeizE,EAAoB,QAAS,CACjDn4E,MAAOilB,EAAKxV,KAAKif,KAEnBypD,EAAmBlpB,MAAQkpB,EAC3BA,EAAmBC,YAAc,EACjCD,EAAmBluD,OAAShF,EAAKxV,KAAKiB,GAAKuU,EAAKoM,WAAWm/B,SAAS9/C,EACpEynE,EAAmBnuD,MAAQ/E,EAAKxV,KAAK2zC,GAAKn+B,EAAKoM,WAAWm/B,SAASpN,EACnE+0B,EAAmBC,YAAc,EACjCD,EAAmBE,cAAgB,EAAIpzD,EAAKoM,WAAW9B,UACvD4oD,EAAmBG,iBAAmB,EACtCH,EAAmBI,UAAYtzD,EAAKnB,OAAOpkB,OACpCy4E,CACb,EAGiBK,YAAG,WAChB,MAAS,CACT5sD,gBAEA,SAAyB9C,GACvB,MAAiB,EACb2vD,EAAY,GA+BhB3vD,EAAUiH,SAASjB,cAAgBw+B,wBAAwBxkC,EAAUiH,UACrEjH,EAAUiH,SAASsB,WAAWd,iBAAiB/B,oBAAoB1F,EAAUiH,UAC7EjH,EAAUiH,SAASsB,WAAWqnD,eA/B9B,WACEC,GAAc,CACf,EA8BD7vD,EAAUiH,SAASsB,WAAWunD,cA5B9B,WAGqB,IAFnBD,GAAc,IAahB,WACE,QACUF,EAAU/4E,OAEpB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB0xE,EAAU1xE,GAAG+0B,UAGf28C,EAAU/4E,OAAS,CACpB,CAnBGm5E,EAEH,EAuBD/vD,EAAUiH,SAASsB,WAAWynD,2BArB9B,SAAoCC,IACK,IAAnCN,EAAU/wE,QAAQqxE,IACpBN,EAAUv0E,KAAK60E,EAElB,CAkBF,GAED,QACJ,CA7CoB,wBA+CS,WACzB,SAASC,EAAcltB,EAAMr8C,GAC3BvQ,KAAK+5E,MAAQntB,EACb5sD,KAAKg6E,MAAQzpE,CACd,CAgDD,OA9CArN,OAAO8C,eAAe8zE,EAAcz6E,UAAW,WAAY,CACzDoB,IAAK,WAKH,OAJIT,KAAK+5E,MAAMr+D,KAAKvQ,GAClBnL,KAAK+5E,MAAMr+D,KAAKusB,WAGPjoC,KAAC+5E,MAAMr+D,IACnB,IAEHxY,OAAO8C,eAAe8zE,EAAcz6E,UAAW,cAAe,CAC5DoB,IAAK,WAKH,OAJIT,KAAK+5E,MAAM5yD,GAAGhc,GAChBnL,KAAK+5E,MAAM5yD,GAAG8gB,WAGS,SAAb8xC,MAAM5yD,GAAG/lB,CACtB,IAGe,SAAqB2sD,GACrC,IAEIlmD,EAFAoyE,EAAmBj8D,iBAAiB+vC,EAAYlC,SAASrrD,QAGzD+a,EAAMwyC,EAAYlC,SAASrrD,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBoyE,EAAiBpyE,GAAK,IAAIiyE,EAAc/rB,EAAYlC,SAAShkD,GAAIkmD,EAAY7oC,gBAAgBrd,IAiB/F,OAdmB,SAAsBrC,GAGvC,IAFAqC,EAAI,EAEGA,EAAI0T,GAAK,CACd,GAAIwyC,EAAY7oC,gBAAgBrd,GAAG2nB,KAAOhqB,EACxC,OAAuBy0E,EAACpyE,GAG1BA,GAAK,CACN,CAED,WACR,CAGA,CAGA,CArD6B,GAuDvBqyE,4BAA8B,WAChC,IAAIC,EAA6B,CAC/Bz3C,GAAI,EACJthC,EAAG,EACH+lC,KAAM,GAEwBizC,EAAG,CACjC13C,GAAI,CAAC,EAAG,EAAG,GACXthC,EAAG,CAAC,EAAG,EAAG,GACV+lC,KAAM,GAGR,SAASkzC,EAAiBC,EAAiB9hE,EAAUxV,GACnDE,OAAO8C,eAAes0E,EAAiB,WAAY,CACjD75E,IAAK,WACH,OAAO+X,EAAS+hE,kBAAkB/hE,EAASuN,KAAK4J,aACjD,IAEH2qD,EAAgBE,QAAUhiE,EAASqqB,UAAYrqB,EAASqqB,UAAUriC,OAAS,EAE3E85E,EAAgBz0E,IAAM,SAAUqjC,GAC9B,IAAKoxC,EAAgBE,QACnB,OAAQ,EAGV,MAAY,GAGV15E,EADE,MAAe0X,EAACqqB,UAAUqG,EAAM,GAC1B1wB,EAASqqB,UAAUqG,EAAM,GAAGvnC,EAC3B,MAAO6W,EAASqqB,UAAUqG,EAAM,GACjC1wB,EAASqqB,UAAUqG,EAAM,GAAGxlC,EAE5B8U,EAASqqB,UAAUqG,EAAM,GAAGvnC,EAGtC,IAAI84E,EAAqB,mBAATz3E,EAA4B,WAAWlC,GAASoC,OAAO8V,OAAO,CAAE,EAAElY,GAIlF,OAFA25E,EAAU3rD,KAAOtW,EAASqqB,UAAUqG,EAAM,GAAG7gC,EAAImQ,EAASwf,KAAKjS,KAAKoM,WAAW9B,UAC/EoqD,EAAU35E,MAAiB,mBAATkC,EAA4BlC,EAAM,GAAKA,EACzC25E,CACxB,EAEMH,EAAgBI,YAAcliE,EAASsgC,eACvCwhC,EAAgBK,YAAcniE,EAASoiE,eACvCN,EAAgBO,eAAiBriE,EAAS+hE,kBAC1CD,EAAgBQ,cAAgBtiE,EAASsiE,aAC1C,CAyDD,aACE,OAAOX,CACR,CAED,OAAiB3hE,SAAAA,GACf,OAAKA,EAIqB,mBAAtBA,EAASiqB,SAhEf,SAAyCjqB,GAClCA,GAAc,OAAgBA,IACjCA,EAAW2hE,GAGb,IAAQhzC,EAAG,EAAI3uB,EAAS2uB,KACpB7nB,EAAM9G,EAASkqB,GAAKyE,EACLmzC,EAAG,IAAI92E,OAAO8b,GAIjC,OAFAg7D,EAAgBx5E,MAAQwe,EACxB+6D,EAAiBC,EAAiB9hE,EAAU,kBACzB,WAcjB,OAbIA,EAASrN,GACXqN,EAASyvB,WAGX3oB,EAAM9G,EAASpX,EAAI+lC,EAEfmzC,EAAgBx5E,QAAUwe,KAC5Bg7D,EAAkB,IAAU92E,OAAC8b,IAEbxe,MAAQwe,EACxB+6D,EAAiBC,EAAiB9hE,EAAU,oBAItD,CACK,CAsCUuiE,CAAgCviE,GApC3C,SAA2CA,GACpCA,GAAc,WACjBA,EAAW4hE,GAGb,IAAIjzC,EAAO,EAAI3uB,EAAS2uB,KACjB5rB,EAAG/C,EAASjI,MAAQiI,EAASjI,KAAK3C,GAAK4K,EAASkqB,GAAGliC,OACvC85E,EAAG58D,iBAAiB,UAAWnC,GAC9Cy/D,EAAWt9D,iBAAiB,UAAWnC,GAG3C,OAFA++D,EAAgBx5E,MAAQk6E,EACxBX,EAAiBC,EAAiB9hE,EAAU,oBACzB,WACbA,EAASrN,GACXqN,EAASyvB,WAGX,IAAK,IAAKpgC,EAAG,EAAGA,EAAI0T,EAAK1T,GAAK,EAC5BmzE,EAASnzE,GAAK2Q,EAASpX,EAAEyG,GAAKs/B,EAC9BmzC,EAAgBzyE,GAAKmzE,EAASnzE,GAGhC,QACR,CACK,EAgB0C2Q,GAPhCyiE,CAQf,CACA,CAtHoC,GAwHFC,6BACb7rC,SAAAA,GACf,WAAuB7pC,GACrB,OAAQA,GACN,IAAK,QACL,IAAK,QACL,IAAK,aACL,KAAK,EACH,OAAO21E,EAAcnoC,MAEvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,KAAO,GACL,OAAoBmoC,EAACC,SAEvB,IAAK,gBACH,OAAoBD,EAACE,UAEvB,IAAK,gBACH,OAAoBF,EAACG,UAEvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,KAAM,EACJ,OAAOH,EAAcn7D,SAEvB,IAAK,kBACH,OAAOm7D,EAAcI,UAEvB,IAAK,kBACH,OAAOJ,EAAcK,UAEvB,IAAK,kBACH,OAAoBL,EAACM,UAEvB,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,mBACL,KAAK,EACH,SAAqBC,YAEvB,IAAK,UACL,IAAK,UACL,QACE,OAAoBP,EAACxL,QAEvB,QACE,OAAW,KAEhB,CAkBD,IAAIgM,EAEAC,EAEAC,EAEAC,EA8CJ,OApEA54E,OAAO8C,eAAem1E,EAAe,WAAY,CAC/C16E,IAAKy5E,4BAA4B7qC,EAAUh+B,GAAKg+B,EAAUkJ,MAE5Dr1C,OAAO8C,eAAem1E,EAAe,YAAa,CAChD16E,IAAKy5E,4BAA4B7qC,EAAUkJ,IAAMlJ,EAAUh+B,KAE7DnO,OAAO8C,eAAem1E,EAAe,YAAa,CAChD16E,IAAKy5E,4BAA4B7qC,EAAUgJ,MAE7Cn1C,OAAO8C,eAAem1E,EAAe,YAAa,CAChD16E,IAAKy5E,4BAA4B7qC,EAAUiJ,MAE7Cp1C,OAAO8C,eAAem1E,EAAe,QAAS,CAC5C16E,IAAKy5E,4BAA4B7qC,EAAU1tC,KAWzC0tC,EAAUjqC,EACZ02E,EAAoB5B,4BAA4B7qC,EAAUjqC,IAE1Du2E,EAAMzB,4BAA4B7qC,EAAU6I,IAC5C0jC,EAAM1B,4BAA4B7qC,EAAU8I,IAExC9I,EAAU+I,KACZyjC,EAAM3B,4BAA4B7qC,EAAU+I,MAIhDl1C,OAAO8C,eAAem1E,EAAe,WAAY,CAC/C16E,IAAK,WACH,OAAI4uC,EAAUjqC,EACL02E,IAGF,CAACH,IAAOC,IAAOC,EAAMA,IAAQ,EACrC,IAEH34E,OAAO8C,eAAem1E,EAAe,YAAa,CAChD16E,IAAKy5E,4BAA4B7qC,EAAU6I,MAE7Ch1C,OAAO8C,eAAem1E,EAAe,YAAa,CAChD16E,IAAKy5E,4BAA4B7qC,EAAU8I,MAE7Cj1C,OAAO8C,eAAem1E,EAAe,YAAa,CAChD16E,IAAKy5E,4BAA4B7qC,EAAU+I,MAE7Cl1C,OAAO8C,eAAem1E,EAAe,cAAe,CAClD16E,IAAKy5E,4BAA4B7qC,EAAU/nB,KAE7CpkB,OAAO8C,eAAem1E,EAAe,UAAW,CAC9C16E,IAAKy5E,4BAA4B7qC,EAAUhkC,KAE7CnI,OAAO8C,eAAem1E,EAAe,OAAQ,CAC3C16E,IAAKy5E,4BAA4B7qC,EAAU9nB,MAE7CrkB,OAAO8C,eAAem1E,EAAe,WAAY,CAC/C16E,IAAKy5E,4BAA4B7qC,EAAU7nB,MAE7CtkB,OAAO8C,eAAem1E,EAAe,cAAe,CAClD16E,IAAKy5E,4BAA4B7qC,EAAU1C,MAEzBwuC,CAC1B,EAG8BztB,yBAAG,WAC7B,WAAmB5+B,GACjB,IAAcitD,EAAG,IAAU9tC,OAW3B,YATa1tC,IAATuuB,EACe9uB,KAAK6jE,MAAMna,eAAeC,MAAM7Q,eAAehqB,GAErDmb,MAAM8xC,GAEE/7E,KAAK6jE,MAAMna,eAAeC,MAChClR,cAAcsjC,IAI9B,CAED,SAAmBC,EAACp+D,EAAKkR,GACvB,IAAcitD,EAAG/7E,KAAKi8E,UAAUntD,GAIhC,OAHAitD,EAAWv1E,MAAM,IAAM,EACvBu1E,EAAWv1E,MAAM,IAAM,EACvBu1E,EAAWv1E,MAAM,IAAM,EACZxG,KAACk8E,WAAWH,EAAYn+D,EACpC,CAED,SAAgBu+D,EAACv+D,EAAKkR,GACpB,MAAiB9uB,KAAKi8E,UAAUntD,GAChC,YAAYotD,WAAWH,EAAYn+D,EACpC,CAED,WAAsBA,EAAKkR,GACzB,MAAiB9uB,KAAKi8E,UAAUntD,GAIhC,OAHAitD,EAAWv1E,MAAM,IAAM,EACvBu1E,EAAWv1E,MAAM,IAAM,EACvBu1E,EAAWv1E,MAAM,IAAM,EAChBxG,KAAKo8E,YAAYL,EAAYn+D,EACrC,CAED,SAASy+D,EAAUz+D,EAAKkR,GACtB,IAAIitD,EAAa/7E,KAAKi8E,UAAUntD,GAChC,OAAO9uB,KAAKo8E,YAAYL,EAAYn+D,EACrC,CAED,SAASs+D,EAAWh8B,EAAQtiC,GAC1B,GAAI5d,KAAK6jE,MAAMhT,WAAa7wD,KAAK6jE,MAAMhT,UAAUrwD,OAAQ,CACvD,IAAKqH,EACD0T,EAAMvb,KAAK6jE,MAAMhT,UAAUrwD,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK6jE,MAAMhT,UAAUhpD,GAAG6hD,eAAeC,MAAMlR,cAAcyH,EAE9D,CAED,OAAaA,EAACjO,kBAAkBr0B,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAM,EAC3D,CAED,SAAoBw+D,EAACl8B,EAAQtiC,GAC3B,GAAI5d,KAAK6jE,MAAMhT,WAAa7wD,KAAK6jE,MAAMhT,UAAUrwD,OAAQ,CACvD,IAAKqH,EACD0T,EAAMvb,KAAK6jE,MAAMhT,UAAUrwD,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK6jE,MAAMhT,UAAUhpD,GAAG6hD,eAAeC,MAAMlR,cAAcyH,EAE9D,CAED,OAAaA,EAAClO,aAAap0B,EAC5B,CAED,SAAS0+D,EAAS1+D,GAChB,IAAIm+D,EAAa,IAAI9tC,OAKrB,GAJA8tC,EAAWvwC,QAEXxrC,KAAK6jE,MAAMna,eAAeC,MAAMlR,cAAcsjC,GAE1C/7E,KAAK6jE,MAAMhT,WAAa7wD,KAAK6jE,MAAMhT,UAAUrwD,OAAQ,CACvD,QACUR,KAAK6jE,MAAMhT,UAAUrwD,OAE/B,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB7H,KAAK6jE,MAAMhT,UAAUhpD,GAAG6hD,eAAeC,MAAMlR,cAAcsjC,GAG7D,OAAiBA,EAAC/pC,aAAap0B,EAChC,CAED,OAAOm+D,EAAW/pC,aAAap0B,EAChC,CAED,SAAoB2+D,IAClB,MAAO,CAAC,EAAG,EAAG,EAAG,EAClB,CAED,OAAiBvkD,SAAAA,GACf,MAUA,WAA4BxyB,GAC1B,OAAQA,GACN,IAAK,0BACL,IAAK,WACL,KAAK,EACH,OAAOyzE,EAAmB5qB,eAE5B,KAAM,EACN,KAAK,EACL,IAAK,YACL,IAAK,YACL,IAAK,uBACH,OAAyBmuB,EAE3B,KAAM,EACN,IAAK,qBACL,IAAK,UACL,IAAK,UACH,OAAOvD,EAAmB/lB,OAE5B,IAAK,uBACH,OAAO+lB,EAAmBzqB,cAE5B,QACE,OAAO,KAEZ,CAEDyqB,EAAmBgD,UAAYA,EAC/BhD,EAAmBmD,YAAcA,EACjCnD,EAAmBiD,WAAaA,EAChCjD,EAAmBkD,QAAUA,EAC7BlD,EAAmB+C,WAAaA,EAChC/C,EAAmBoD,UAAYA,EAC/BpD,EAAmBwD,aAAeA,EAClCxD,EAAmByD,OAASP,EAC5BlD,EAAmBqD,SAAWA,EAC9BrD,EAAmBsD,YAAcA,EACjCtD,EAAmBlvB,iBAAmB/xB,EAAK+xB,iBAAiBx9B,KAAKyL,GACjEihD,EAAmBpV,MAAQ7rC,EAE3B,IAAyB2kD,EAAGnhE,cAD5BghE,EAAqBtB,6BAA6BljD,EAAK0xB,eAAeC,OACR,eAuC9D,OAtCAzmD,OAAO05E,iBAAiB3D,EAAoB,CAC1C4D,UAAW,CACTp8E,IAAK,WACH,SAAYowD,UAAUrwD,MACvB,GAEHqQ,OAAQ,CACNpQ,IAAK,WACH,OAAWu3B,EAAC64B,UAAU,GAAG/C,cAC1B,GAEHstB,SAAU5/D,cAAcghE,EAAoB,YAC5CxpC,MAAOx3B,cAAcghE,EAAoB,SACzCx8D,SAAUxE,cAAcghE,EAAoB,YAC5C7M,QAASn0D,cAAcghE,EAAoB,WAC3Cd,YAAaiB,EACbG,aAAcH,EACdttC,UAAW,CACT5uC,IAAK,WACH,OAAO+7E,CACR,GAEHO,OAAQ,CACNt8E,IAAK,WACH,OAAWu3B,EAAC+wB,SACb,KAGLkwB,EAAmB+D,UAAYhlD,EAAKznB,KAAK6W,GACzC6xD,EAAmBhpE,MAAQ+nB,EAAKznB,KAAKwzB,IACrCk1C,EAAmB7lB,OAASp7B,EAAKznB,KAAKmV,MACtCuzD,EAAmBluD,OAA0B,IAAjBiN,EAAKznB,KAAKiV,GAAWwS,EAAKznB,KAAKiB,EAAI,IAC/DynE,EAAmBnuD,MAAyB,IAAjBkN,EAAKznB,KAAKiV,GAAWwS,EAAKznB,KAAK2zC,EAAI,IAC9D+0B,EAAmBgE,QAAUjlD,EAAKznB,KAAK2W,GAAK8Q,EAAKjS,KAAKoM,WAAW9B,UACjE4oD,EAAmBiE,SAAWllD,EAAKznB,KAAK4W,GAAK6Q,EAAKjS,KAAKoM,WAAW9B,UAClE4oD,EAAmB5/D,MAAQ2e,EAAKznB,KAAKif,GACrCypD,EAAmBjrB,sBAtFnB,SAAgCD,GAC9BkrB,EAAmBrsB,KAAO,IAAIuwB,qBAAqBpvB,EAAa/1B,EACjE,EAqFDihD,EAAmB9qB,yBAnFnB,SAAmC3D,GACjCyuB,EAAmB/lB,OAAS1I,CAC7B,EAkFMyuB,CACb,CACA,CAzLiC,GA2L3BmE,qBACeC,SAAAA,EAAmBC,GAClC,gBAAiBh+D,GAGf,OAFAA,OAAc/e,IAAR+e,EAAoB,EAAIA,IAEnB,IAIeg+D,EAACh+D,EAAM,EACzC,CACA,EAGMi+D,kBACK,SAAUC,EAAc1C,GAC7B,IAAqBuC,EAAG,CACtBhkE,MAAOmkE,GAaT,OAVA,SAAwBl+D,GAGtB,OAFAA,OAAc/e,IAAR+e,EAAoB,EAAIA,IAEnB,EACF+9D,EAGWvC,EAACx7D,EAAM,EAC5B,CAGP,EAGMquC,2BAA6B,WAC/B,IAAIjhC,EAAK,CACPwhC,uBAGF,SAAgCl2B,EAAM8iD,GACpC,GAAI9iD,EAAK82B,eAAgB,CACvB,IAEKjnD,IAFgB,GACjB41E,EAAczlD,EAAKznB,KAAKk6C,GAExBlvC,EAAMyc,EAAK82B,eAAepE,eAAelqD,OAE7C,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB6iD,EAAe1lD,KAAK04E,EAAqBD,EAAY51E,GAAImwB,EAAK82B,eAAepE,eAAe7iD,GAAIizE,EAAe9iD,IAGjH,IAAIwyB,EAAUxyB,EAAKznB,KAAKk6C,IAAM,GAE1BkzB,EAAiB,SAAwBn4E,GAI3C,IAHAqC,EAAI,EACJ0T,EAAMivC,EAAQhqD,OAEPqH,EAAI0T,GAAK,CACd,GAAI/V,IAASglD,EAAQ3iD,GAAG2nB,IAAMhqB,IAASglD,EAAQ3iD,GAAG+1E,IAAMp4E,IAASglD,EAAQ3iD,GAAG45C,GAC1E,OAAOiJ,EAAe7iD,GAGxBA,GAAK,CACN,CAED,OAAO,IACjB,EAOQ,OALA3E,OAAO8C,eAAe23E,EAAgB,gBAAiB,CACrDl9E,IAAK,WACH,OAAO+pD,EAAQhqD,MAChB,KAGJ,CAED,OAAO,IACR,GAED,SAA6Bk9E,EAACntE,EAAM4H,EAAU2iE,EAAe9iD,GAC3D,SAAS2lD,EAAen4E,GAKtB,IAJA,MAAc+K,EAAKk6C,GACd5iD,EAAG,EACD0T,EAAGivC,EAAQhqD,OAEXqH,EAAI0T,GAAK,CACd,GAAI/V,IAASglD,EAAQ3iD,GAAG2nB,IAAMhqB,IAASglD,EAAQ3iD,GAAG+1E,IAAMp4E,IAASglD,EAAQ3iD,GAAG45C,GAC1E,OAAsB,IAAlB+I,EAAQ3iD,GAAG2d,KACS3d,GAGjB6iD,EAAe7iD,KAGxBA,GAAK,CACN,CAED,MAAM,SACP,CAED,IAGKA,EAHDg2E,EAAiBT,qBAAqBO,EAAgB7C,GAExCpwB,EAAG,GAEdnvC,EAAGhL,EAAKk6C,GAAGjqD,OAElB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACF,IAAlB0I,EAAKk6C,GAAG5iD,GAAG2d,GACbklC,EAAe1lD,KAAK04E,EAAqBntE,EAAKk6C,GAAG5iD,GAAIsQ,EAASuyC,eAAe7iD,GAAIsQ,EAASuyC,eAAe7iD,GAAGizE,cAAe9iD,IAE3H0yB,EAAe1lD,KAAK84E,EAAqB3lE,EAASuyC,eAAe7iD,GAAI0I,EAAKk6C,GAAG5iD,GAAG2d,GAAIwS,EAAM6lD,IA2B9F,MAvBgB,uBAAZttE,EAAKqtE,IACP16E,OAAO8C,eAAe23E,EAAgB,QAAS,CAC7Cl9E,IAAK,WACH,OAAOiqD,EAAe,IACvB,IAILxnD,OAAO05E,iBAAiBe,EAAgB,CACtCI,cAAe,CACbt9E,IAAK,WACH,OAAW8P,EAACytE,EACb,GAEH3kE,MAAO,CACLvY,MAAOyP,EAAKif,IAEdsrD,cAAe,CACbh6E,MAAO+8E,KAGXF,EAAeM,QAAsB,IAAZ1tE,EAAK2tE,GAC9BP,EAAeZ,OAASY,EAAeM,QAClBN,CACtB,CAED,WAA8BnpE,EAASxR,EAAMg1B,EAAM8iD,GACjD,IAAsBqD,EAAGjE,4BAA4B1lE,EAAQpP,GAc7D,OAJIoP,EAAQpP,EAAEg5E,kBACZ5pE,EAAQpP,EAAEg5E,iBAAiBb,kBAAkB,GAAIzC,IATnD,WACE,OAAa,KAAT93E,IACU+iB,KAAK6J,cAAcpb,EAAQpP,EAAEhE,GAGlB+8E,GAC1B,CAOF,CAED,OAASzxD,CACb,CA5HmC,GA8H7B2xD,mBACcC,SAAqBp0C,EAAOq0C,EAAMzD,GAChD,IAAIp/D,EAAO6iE,EAAKx5C,GAEhB,SAA0Bs4C,EAAC/9D,GACzB,MAAY,UAARA,GAA2B,UAARA,GAA2B,SAARA,GAA0B,SAARA,GAA0B,sBAARA,GAAuC,IAARA,IAClFyE,KAGhB,IACZ,CAED,MAAqBq5D,qBAAqBC,EAAmBvC,GAsC7D,OApCAp/D,EAAK0iE,iBAAiBb,kBAAkB,OAAQM,IAChD36E,OAAO05E,iBAAiBS,EAAmB,CACzCt5D,KAAM,CACJtjB,IAAK,WAKH,OAJIib,EAAKvQ,GACPuQ,EAAKusB,WAGIvsB,CACZ,GAEHwuB,MAAO,CACLzpC,IAAK,WAKH,OAJIib,EAAKvQ,GACPuQ,EAAKusB,WAGIvsB,CACZ,GAEHrC,MAAO,CACLvY,MAAOopC,EAAM1a,IAEfiyB,GAAI,CACF3gD,MAAOopC,EAAMuX,IAEf+8B,cAAe,CACb19E,MAAOopC,EAAMuX,IAEfm8B,GAAI,CACF98E,MAAOopC,EAAM0zC,IAEf9C,cAAe,CACbh6E,MAAOg6E,KAGauC,CAC9B,EAG8BzvB,yBAAG,WAC7B,WAAyBhoC,EAAQ24D,EAAMzD,GACrC,IACIjzE,EADA+V,EAAM,GAENrC,EAAMqK,EAASA,EAAOplB,OAAS,EAEnC,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACH,OAAjB+d,EAAO/d,GAAG2d,GACZ5H,EAAI5Y,KAAKy5E,EAAsB74D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IACzB,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAK05E,EAAqB94D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IACxB,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAK25E,EAAuB/4D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IAC1B,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAK45E,EAAqBh5D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IACxB,OAAjBl1D,EAAO/d,GAAG2d,KACO,OAAjBI,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAK65E,EAAwBj5D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IAC3B,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAK85E,EAAqBl5D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IACxB,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAKq5E,mBAAmBz4D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IACtB,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAK+5E,EAAqBn5D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IACxB,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAKg6E,EAAwBp5D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IAC3B,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAKi6E,EAAyBr5D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IAC5B,OAAjBl1D,EAAO/d,GAAG2d,GACnB5H,EAAI5Y,KAAKk6E,EAA6Bt5D,EAAO/d,GAAI02E,EAAK12E,GAAIizE,IAE1Dl9D,EAAI5Y,MAA6B4gB,EAAO/d,GAAI02E,EAAK12E,GAuJrD,WACE,OAAW,IACZ,KArJD,OAAU+V,CACX,CAkCD,SAAS6gE,EAAsBv0C,EAAOq0C,EAAMzD,GAC1C,IAAIuC,EAAoB,SAA4Bv8E,GAClD,OAAQA,GACN,IAAK,qBACL,IAAK,WACL,KAAK,EACH,OAAwBu8E,EAACruE,QAK3B,QACE,SAAyBqgC,UAErC,EAEMguC,EAAkBvC,cAAgBsC,qBAAqBC,EAAmBvC,GAC1E,IAAI9rE,EAjDN,SAAkCk7B,EAAOq0C,EAAMzD,GAC7C,IAAcqE,EAEV9B,EAAoB,SAA4Bv8E,GAIlD,IAHA,IAAK+G,EAAG,EACJ0T,EAAM4jE,EAAW3+E,OAEdqH,EAAI0T,GAAK,CACd,GAAI4jE,EAAWt3E,GAAGwR,QAAUvY,GAASq+E,EAAWt3E,GAAG+1E,KAAO98E,GAASq+E,EAAWt3E,GAAG22E,gBAAkB19E,GAASq+E,EAAWt3E,GAAG45C,KAAO3gD,GAASq+E,EAAWt3E,GAAGk8B,MAAQjjC,EAC9J,OAAOq+E,EAAWt3E,GAGpBA,GAAK,CACN,CAED,MAAqB,iBAAL/G,EACGq+E,EAACr+E,EAAQ,GAGrB,IACf,EAEMu8E,EAAkBvC,cAAgBsC,qBAAqBC,EAAmBvC,GAC1EqE,EAAaC,EAAgBl1C,EAAM/jB,GAAIo4D,EAAKp4D,GAAIk3D,EAAkBvC,eAClEuC,EAAkBU,cAAgBoB,EAAW3+E,OAC7C,IAAIg8E,EAAqB6C,EAA0Bn1C,EAAM/jB,GAAG+jB,EAAM/jB,GAAG3lB,OAAS,GAAI+9E,EAAKp4D,GAAGo4D,EAAKp4D,GAAG3lB,OAAS,GAAI68E,EAAkBvC,eAIjI,OAHAuC,EAAkBhuC,UAAYmtC,EAC9Ba,EAAkBmB,cAAgBt0C,EAAMo1C,IACxCjC,EAAkBhkE,MAAQ6wB,EAAM1a,GACzB6tD,CACR,CAmBekC,CAAyBr1C,EAAOq0C,EAAMlB,EAAkBvC,eAChD0B,EAAG6C,EAA0Bn1C,EAAM/jB,GAAG+jB,EAAM/jB,GAAG3lB,OAAS,GAAI+9E,EAAKp4D,GAAGo4D,EAAKp4D,GAAG3lB,OAAS,GAAI68E,EAAkBvC,eAajI,OAZAuC,EAAkBruE,QAAUA,EAC5BquE,EAAkBhuC,UAAYmtC,EAC9Bt5E,OAAO8C,eAAeq3E,EAAmB,QAAS,CAChD58E,IAAK,WACH,OAAYypC,EAAC1a,EACd,IAGH6tD,EAAkBU,cAAgB7zC,EAAM8zC,GACxCX,EAAkBmB,cAAgBt0C,EAAMuX,GACxC47B,EAAkB7tD,GAAK0a,EAAM1a,GAC7B6tD,EAAkBO,GAAK1zC,EAAM0zC,IAE9B,CAED,SAA6Bc,EAACx0C,EAAOq0C,EAAMzD,GACzC,SAA0BuC,EAAC/9D,GACzB,MAAY,UAARA,GAA2B,UAARA,EACG+9D,EAACh7D,MAGf,YAAR/C,GAA6B,YAARA,IACEqwD,QAGhB,IACZ,CAkBD,OAhBAzsE,OAAO05E,iBAAiBS,EAAmB,CACzCh7D,MAAO,CACL5hB,IAAKy5E,4BAA4BqE,EAAKv1E,IAExC2mE,QAAS,CACPlvE,IAAKy5E,4BAA4BqE,EAAKlzE,IAExCgO,MAAO,CACLvY,MAAOopC,EAAM1a,IAEfouD,GAAI,CACF98E,MAAOopC,EAAM0zC,MAGjBW,EAAKv1E,EAAEo1E,iBAAiBb,kBAAkB,QAASzC,IACnDyD,EAAKlzE,EAAE+yE,iBAAiBb,kBAAkB,UAAWzC,IAC7BuC,CACzB,CAED,SAAS6B,EAA6Bh1C,EAAOq0C,EAAMzD,GACjD,SAASuC,EAAkB/9D,GACzB,MAAY,gBAARA,GAAiC,gBAARA,EACH+9D,EAACmC,WAGf,cAARlgE,GAA+B,cAARA,EACD+9D,EAACoC,SAGf,YAARngE,GAA6B,YAARA,IACEqwD,QAGhB,IACZ,CA2BD,OAzBAzsE,OAAO05E,iBAAiBS,EAAmB,CACzCmC,WAAY,CACV/+E,IAAKy5E,4BAA4BqE,EAAK58E,IAExC89E,SAAU,CACRh/E,IAAKy5E,4BAA4BqE,EAAK76E,IAExCisE,QAAS,CACPlvE,IAAKy5E,4BAA4BqE,EAAKlzE,IAExCrI,KAAM,CACJvC,IAAK,WACH,MAAO,GACR,GAEH4Y,MAAO,CACLvY,MAAOopC,EAAM1a,IAEfouD,GAAI,CACF98E,MAAOopC,EAAM0zC,MAGjBW,EAAK58E,EAAEy8E,iBAAiBb,kBAAkB,cAAezC,IACzDyD,EAAK76E,EAAE06E,iBAAiBb,kBAAkB,YAAazC,IACvDyD,EAAKlzE,EAAE+yE,iBAAiBb,kBAAkB,UAAWzC,KAEtD,CAUD,SAA+B6D,EAACz0C,EAAOq0C,EAAMzD,GAC3C,IAUKjzE,EAVDg2E,EAAiBT,qBAAqBC,EAAmBvC,GAEvC4E,EAAGtC,qBAAqBuC,EAAQ9B,GAEtD,WAA6Bh2E,GAC3B3E,OAAO8C,eAAe25E,EAAQz1C,EAAMj+B,EAAEpE,GAAG2nB,GAAI,CAC3C/uB,IAAKy5E,4BAA4BqE,EAAKtyE,EAAEurD,UAAU3vD,GAAGzC,IAExD,CAGD,IAAOmW,EAAG2uB,EAAMj+B,EAAIi+B,EAAMj+B,EAAEzL,OAAS,IACxB,CAAA,EAEb,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+3E,EAAoB/3E,GACpB02E,EAAKtyE,EAAEurD,UAAU3vD,GAAGzC,EAAEg5E,iBAAiBsB,GAGzC,SAA0BrC,EAAC/9D,GACzB,MAAY,UAARA,GAA2B,UAARA,EACG+9D,EAACh7D,MAGf,YAAR/C,GAA6B,YAARA,EACC+9D,EAAC1N,QAGf,iBAARrwD,GAAkC,iBAARA,IACH22D,YAGhB,IACZ,CA2BD,OAzBA/yE,OAAO05E,iBAAiBS,EAAmB,CACzCh7D,MAAO,CACL5hB,IAAKy5E,4BAA4BqE,EAAKv1E,IAExC2mE,QAAS,CACPlvE,IAAKy5E,4BAA4BqE,EAAKlzE,IAExC4qE,YAAa,CACXx1E,IAAKy5E,4BAA4BqE,EAAKr6B,IAExC27B,KAAM,CACJp/E,IAAK,WACH,QACD,GAEH4Y,MAAO,CACLvY,MAAOopC,EAAM1a,IAEfouD,GAAI,CACF98E,MAAOopC,EAAM0zC,MAGjBW,EAAKv1E,EAAEo1E,iBAAiBb,kBAAkB,QAASM,IACnDU,EAAKlzE,EAAE+yE,iBAAiBb,kBAAkB,UAAWM,IACrDU,EAAKr6B,EAAEk6B,iBAAiBb,kBAAkB,eAAgBM,IACnDR,CACR,CAED,SAA6BuB,EAAC10C,EAAOq0C,EAAMzD,GACzC,WAA2Bx7D,GACzB,OAAIA,IAAQ4qB,EAAMxmC,EAAE+9C,IAAc,QAARniC,GAAyB,QAARA,EAClC+9D,EAAkBhvE,IAGvBiR,IAAQ4qB,EAAMvoC,EAAE8/C,GACX47B,EAAkBhpE,MAGvBiL,IAAQ4qB,EAAM7+B,EAAEo2C,GACX47B,EAAkB/6D,OAGpB,IACR,CAED,IAAkBu7D,EAAGT,qBAAqBC,EAAmBvC,GAuB7D,OArBAuC,EAAkBmB,cAAgBt0C,EAAMuX,GACxC88B,EAAK58E,EAAEy8E,iBAAiBb,kBAAkB,QAASM,IACnDU,EAAK76E,EAAE06E,iBAAiBb,kBAAkB,MAAOM,IACjDU,EAAKlzE,EAAE+yE,iBAAiBb,kBAAkB,SAAUM,IACpDR,EAAkBmB,cAAgBt0C,EAAMuX,GACxC47B,EAAkBvC,cAAgBA,EAClC53E,OAAO05E,iBAAiBS,EAAmB,CACzChpE,MAAO,CACL5T,IAAKy5E,4BAA4BqE,EAAK58E,IAExC0M,IAAK,CACH5N,IAAKy5E,4BAA4BqE,EAAK76E,IAExC4e,OAAQ,CACN7hB,IAAKy5E,4BAA4BqE,EAAKlzE,IAExCgO,MAAO,CACLvY,MAAOopC,EAAM1a,MAGjB6tD,EAAkBO,GAAK1zC,EAAM0zC,IAE9B,CAED,SAAkCyB,EAACn1C,EAAOq0C,EAAMzD,GAC9C,WAA2Bh6E,GACzB,OAAIopC,EAAM5iB,EAAEm6B,KAAO3gD,GAAmB,iBAAVA,EACFu8E,EAAC3B,YAGvBxxC,EAAM7+B,EAAEo2C,KAAO3gD,GAAmB,YAAVA,IACD6uE,QAGvBzlC,EAAM9kC,EAAEq8C,KAAO3gD,GAAmB,aAAVA,EACFu8E,EAACr9D,SAGvBkqB,EAAM74B,EAAEowC,KAAO3gD,GAAmB,aAAVA,GAAkC,yBAAVA,IACzBs6E,SAGvBlxC,EAAMvoC,EAAE8/C,KAAO3gD,GAAmB,UAAVA,EACFu8E,EAACrqC,MAGvB9I,EAAM3iB,IAAM2iB,EAAM3iB,GAAGk6B,KAAO3gD,GAAmB,SAAVA,EACfu8E,EAACvuC,KAGvB5E,EAAM1iB,IAAM0iB,EAAM1iB,GAAGi6B,KAAO3gD,GAAmB,cAAVA,IACdg/E,SAGhB,IACZ,CAED,IAAIjC,EAAiBT,qBAAqBC,EAAmBvC,GA2C7D,OAzCAyD,EAAKlvC,UAAU8S,OAAO92C,EAAE+yE,iBAAiBb,kBAAkB,UAAWM,IACtEU,EAAKlvC,UAAU8S,OAAO/8C,EAAEg5E,iBAAiBb,kBAAkB,WAAYM,IACvEU,EAAKlvC,UAAU8S,OAAO76B,EAAE82D,iBAAiBb,kBAAkB,eAAgBM,IAC3EU,EAAKlvC,UAAU8S,OAAOxgD,EAAEy8E,iBAAiBb,kBAAkB,QAASM,IACpEU,EAAKlvC,UAAU8S,OAAO9wC,EAAE+sE,iBAAiBb,kBAAkB,WAAYM,IAEnEU,EAAKlvC,UAAU8S,OAAO56B,KACxBg3D,EAAKlvC,UAAU8S,OAAO56B,GAAG62D,iBAAiBb,kBAAkB,OAAQM,IACpEU,EAAKlvC,UAAU8S,OAAO36B,GAAG42D,iBAAiBb,kBAAkB,aAAcM,KAG5EU,EAAKlvC,UAAUloB,GAAGi3D,iBAAiBb,kBAAkB,UAAWM,IAChE36E,OAAO05E,iBAAiBS,EAAmB,CACzC1N,QAAS,CACPlvE,IAAKy5E,4BAA4BqE,EAAKlvC,UAAU8S,OAAO92C,IAEzD2U,SAAU,CACRvf,IAAKy5E,4BAA4BqE,EAAKlvC,UAAU8S,OAAO/8C,IAEzDs2E,YAAa,CACXj7E,IAAKy5E,4BAA4BqE,EAAKlvC,UAAU8S,OAAO76B,IAEzD0rB,MAAO,CACLvyC,IAAKy5E,4BAA4BqE,EAAKlvC,UAAU8S,OAAOxgD,IAEzDy5E,SAAU,CACR36E,IAAKy5E,4BAA4BqE,EAAKlvC,UAAU8S,OAAO9wC,IAEzDy9B,KAAM,CACJruC,IAAKy5E,4BAA4BqE,EAAKlvC,UAAU8S,OAAO56B,KAEzDu4D,SAAU,CACRr/E,IAAKy5E,4BAA4BqE,EAAKlvC,UAAU8S,OAAO36B,KAEzDnO,MAAO,CACLvY,MAAOopC,EAAM1a,MAGjB6tD,EAAkB73D,GAAK,KACvB63D,EAAkBO,GAAK1zC,EAAM0zC,GAC7BP,EAAkBvC,cAAgBA,EAC3BuC,CACR,CAED,SAAgCwB,EAAC30C,EAAOq0C,EAAMzD,GAC5C,WAA2Bh6E,GACzB,OAAIopC,EAAM9kC,EAAEq8C,KAAO3gD,IACQkf,SAGvBkqB,EAAMvoC,EAAE8/C,KAAO3gD,IACQqjD,SAI5B,CAED,IAAI05B,EAAiBT,qBAAqBC,EAAmBvC,GAE7DuC,EAAkBmB,cAAgBt0C,EAAMuX,GACxC,IAAQ/lC,EAAkB,OAAf6iE,EAAKx5C,GAAGvf,GAAc+4D,EAAKx5C,GAAGrpB,KAAO6iE,EAAKx5C,GAerD,OAdArpB,EAAK/Z,EAAEy8E,iBAAiBb,kBAAkB,OAAQM,IAClDniE,EAAKtW,EAAEg5E,iBAAiBb,kBAAkB,WAAYM,IACtD36E,OAAO05E,iBAAiBS,EAAmB,CACzCl5B,KAAM,CACJ1jD,IAAKy5E,4BAA4Bx+D,EAAK/Z,IAExCqe,SAAU,CACRvf,IAAKy5E,4BAA4Bx+D,EAAKtW,IAExCiU,MAAO,CACLvY,MAAOopC,EAAM1a,MAGjB6tD,EAAkBO,GAAK1zC,EAAM0zC,IAE9B,CAED,SAA6BkB,EAAC50C,EAAOq0C,EAAMzD,GACzC,WAA2Bh6E,GACzB,OAAIopC,EAAM9kC,EAAEq8C,KAAO3gD,EACVu8E,EAAkBr9D,SAGvBkqB,EAAM74B,EAAEowC,KAAO3gD,EACVu8E,EAAkBjC,SAGvBlxC,EAAM7kB,GAAGo8B,KAAO3gD,EACXu8E,EAAkB9iD,OAGvB2P,EAAMyC,GAAG8U,KAAO3gD,GAAmB,kCAAVA,IACFi/E,YAGvB71C,EAAM0C,GAAG6U,KAAO3gD,IACOk/E,gBAGvB91C,EAAMoC,IAAOpC,EAAMoC,GAAGmV,KAAO3gD,GAAmB,kCAAVA,EAItCopC,EAAMqC,IAAMrC,EAAMqC,GAAGkV,KAAO3gD,EACNu8E,EAAC4C,eAGpB,OAPoBC,WAQ5B,CAED,IAAkBrC,EAAGT,qBAAqBC,EAAmBvC,KAEnC,OAAfyD,EAAKx5C,GAAGvf,GAAc+4D,EAAKx5C,GAAGrpB,KAAO6iE,EAAKx5C,GAwCrD,OAvCAs4C,EAAkBmB,cAAgBt0C,EAAMuX,GACxC/lC,EAAKixB,GAAGyxC,iBAAiBb,kBAAkB,eAAgBM,IAC3DniE,EAAKkxB,GAAGwxC,iBAAiBb,kBAAkB,kBAAmBM,IAC9DniE,EAAK2J,GAAG+4D,iBAAiBb,kBAAkB,SAAUM,IACrDniE,EAAKtW,EAAEg5E,iBAAiBb,kBAAkB,WAAYM,IACtDniE,EAAKrK,EAAE+sE,iBAAiBb,kBAAkB,WAAYM,IAElD3zC,EAAMoC,KACR5wB,EAAK4wB,GAAG8xC,iBAAiBb,kBAAkB,eAAgBM,IAC3DniE,EAAK6wB,GAAG6xC,iBAAiBb,kBAAkB,kBAAmBM,KAGhE36E,OAAO05E,iBAAiBS,EAAmB,CACzCr9D,SAAU,CACRvf,IAAKy5E,4BAA4Bx+D,EAAKtW,IAExCg2E,SAAU,CACR36E,IAAKy5E,4BAA4Bx+D,EAAKrK,IAExCkpB,OAAQ,CACN95B,IAAKy5E,4BAA4Bx+D,EAAK2J,KAExC06D,YAAa,CACXt/E,IAAKy5E,4BAA4Bx+D,EAAKixB,KAExCqzC,eAAgB,CACdv/E,IAAKy5E,4BAA4Bx+D,EAAKkxB,KAExCszC,YAAa,CACXz/E,IAAKy5E,4BAA4Bx+D,EAAK4wB,KAExC2zC,eAAgB,CACdx/E,IAAKy5E,4BAA4Bx+D,EAAK6wB,KAExClzB,MAAO,CACLvY,MAAOopC,EAAM1a,MAGjB6tD,EAAkBO,GAAK1zC,EAAM0zC,GACtBP,CACR,CAED,WAA8BnzC,EAAOq0C,EAAMzD,GACzC,SAASuC,EAAkBv8E,GACzB,OAAIopC,EAAM9kC,EAAEq8C,KAAO3gD,EACVu8E,EAAkBr9D,SAGvBkqB,EAAM74B,EAAEowC,KAAO3gD,EACOu8E,EAACxwC,UAGvB3C,EAAMvoC,EAAE8/C,KAAO3gD,GAAmB,SAAVA,GAA8B,0BAAVA,IACrBqjD,KAGhB,IACZ,CAED,MAAqBi5B,qBAAqBC,EAAmBvC,GAEzDp/D,EAAsB,OAAf6iE,EAAKx5C,GAAGvf,GAAc+4D,EAAKx5C,GAAGrpB,KAAO6iE,EAAKx5C,GAoBrD,OAnBAs4C,EAAkBmB,cAAgBt0C,EAAMuX,GACxC/lC,EAAKtW,EAAEg5E,iBAAiBb,kBAAkB,WAAYM,IACtDniE,EAAK/Z,EAAEy8E,iBAAiBb,kBAAkB,OAAQM,IAClDniE,EAAKrK,EAAE+sE,iBAAiBb,kBAAkB,WAAYM,IACtD36E,OAAO05E,iBAAiBS,EAAmB,CACzCr9D,SAAU,CACRvf,IAAKy5E,4BAA4Bx+D,EAAKtW,IAExCynC,UAAW,CACTpsC,IAAKy5E,4BAA4Bx+D,EAAKrK,IAExC8yC,KAAM,CACJ1jD,IAAKy5E,4BAA4Bx+D,EAAK/Z,IAExC0X,MAAO,CACLvY,MAAOopC,EAAM1a,MAGjB6tD,EAAkBO,GAAK1zC,EAAM0zC,IAE9B,CAED,SAAgCoB,EAAC90C,EAAOq0C,EAAMzD,GAC5C,WAA2Bh6E,GACzB,OAAIopC,EAAM74B,EAAEowC,KAAO3gD,GAAmB,oBAAVA,EACnBu8E,EAAkB9+B,OAGpB,IACR,CAED,IAAkBs/B,EAAGT,qBAAqBC,EAAmBvC,KAElDyD,EAYX,OAXAlB,EAAkBmB,cAAgBt0C,EAAMuX,GACxC/lC,EAAK0mC,GAAGg8B,iBAAiBb,kBAAkB,SAAUM,IACrD36E,OAAO05E,iBAAiBS,EAAmB,CACzC9+B,OAAQ,CACN99C,IAAKy5E,4BAA4Bx+D,EAAK0mC,KAExC/oC,MAAO,CACLvY,MAAOopC,EAAM1a,MAGjB6tD,EAAkBO,GAAK1zC,EAAM0zC,GACtBP,CACR,CAED,WAAkCnzC,EAAOq0C,EAAMzD,GAC7C,SAASuC,EAAkBv8E,GACzB,OAAIopC,EAAMlhC,EAAEy4C,KAAO3gD,GAAmB,WAAVA,IACDwgD,OAGvBpX,EAAM7+B,EAAEo2C,KAAO3gD,GAAmB,WAAVA,EACFu8E,EAAC/6D,OAGhB,IACZ,CAED,MAAqB86D,qBAAqBC,EAAmBvC,GAEzDp/D,EAAO6iE,EAgBX,OAfAlB,EAAkBmB,cAAgBt0C,EAAMuX,GACxC/lC,EAAK1S,EAAEo1E,iBAAiBb,kBAAkB,SAAUM,IACpDniE,EAAKrQ,EAAE+yE,iBAAiBb,kBAAkB,SAAUM,IACpD36E,OAAO05E,iBAAiBS,EAAmB,CACzC/7B,OAAQ,CACN7gD,IAAKy5E,4BAA4Bx+D,EAAK1S,IAExCsZ,OAAQ,CACN7hB,IAAKy5E,4BAA4Bx+D,EAAKrQ,IAExCgO,MAAO,CACLvY,MAAOopC,EAAM1a,MAGjB6tD,EAAkBO,GAAK1zC,EAAM0zC,GACLP,CACzB,CAED,gBAAiBz3D,EAAQ24D,EAAMzD,GAC7B,IAAcqE,EAEd,SAA2BgB,EAACr/E,GAC1B,GAAqB,iBAAVA,EAGT,OAAc,KAFdA,OAAkBP,IAAVO,EAAsB,EAAIA,GAGzBg6E,EAGQqE,EAACr+E,EAAQ,GAM5B,IAHA,IAAI+G,EAAI,EACD0T,EAAG4jE,EAAW3+E,OAEdqH,EAAI0T,GAAK,CACd,GAAI4jE,EAAWt3E,GAAGwR,QAAUvY,EAC1B,OAAiBq+E,EAACt3E,GAGpBA,GAAK,CACN,CAED,OAAO,IACR,CAUD,OAJAs4E,EAAmBrF,cAAgBsC,qBAAqB+C,GAJxD,WACE,OAAOrF,CACR,IAGDqE,EAAaC,EAAgBx5D,EAAQ24D,EAAM4B,EAAmBrF,eAC9DqF,EAAmBpC,cAAgBoB,EAAW3+E,OAC9C2/E,EAAmB9mE,MAAQ,YAEjC,CACA,CAnnBiC,2BAsnBtB,SAAU2e,GACf,IAAIooD,EAEAC,EAEJ,WAA4B76E,GAC1B,MACO,uBADCA,EAEqByzE,EAACqH,WAGnB,IAEZ,CAkBD,OAhBAp9E,OAAO8C,eAAeizE,EAAoB,aAAc,CACtDx4E,IAAK,WACHu3B,EAAK4qC,aAAa36B,WAClB,IAAes4C,EAAGvoD,EAAK4qC,aAAavG,YAAYh0D,EAUhD,OARIk4E,IAAgBH,IAClBpoD,EAAK4qC,aAAavG,YAAYh0D,EAAI+3E,GAClCC,EAAc,WAAWE,IAGbz/E,MAAQy/E,GAAe,IAAUx/E,OAACw/E,IAG9BF,CACnB,IAEIpH,CACb,EAGE,SAAkBuH,UAACriE,GAAuV,OAA1OqiE,UAArD,mBAAXhhF,QAAoD,iBAApBA,OAAO+M,SAAqC,SAAiB4R,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAUA,GAAsB,mBAAX3e,QAAyB2e,EAAIve,cAAgBJ,QAAU2e,IAAQ3e,OAAOH,UAAY,gBAAkB8e,CAAI,EAAsBqiE,UAACriE,EAAO,CAElY,IAAIkxC,kBA0CEoxB,qBAAuB,SAA8BzoD,GACvD,SAASqlD,EAAkBv8E,GACzB,MAAc,YAAVA,EACsBu8E,EAACqD,mBAGpB,IACR,CAID,OAFArD,EAAkBhkE,MAAQ,UAC1BgkE,EAAkBqD,iBAnDU,SAAiC1oD,GAC7D,IAAI2oD,EAAsB,GACPC,EAAG5oD,EAAKs3B,iBAQ3B,SAASgO,EAAex8D,GACtB,GAAI8/E,EAAgB9/E,GAIlB,OAHA6/E,EAAsB7/E,EAGa,WAA/B0/E,UAFJI,EAAkBA,EAAgB9/E,IAGXw8D,EAGhBsjB,EAGT,IAAIC,EAAoB//E,EAAM0H,QAAQm4E,GAEtC,IAA2B,IAAvBE,EAA0B,CAC5B,IAAI5wE,EAAQqiB,SAASxxB,EAAM6xB,OAAOkuD,EAAoBF,EAAoBngF,QAAS,IAGnF,MAAmC,WAA/BggF,UAFJI,EAAkBA,EAAgB3wE,IAGzBqtD,EAGasjB,CACvB,CAED,MAAO,EACR,CAED,OAlCA,WAGE,OAFAD,EAAsB,GACtBC,EAAkB5oD,EAAKs3B,iBAChBgO,CACR,CA+BP,CAY2CwjB,CAAwB9oD,GACrCqlD,CAC9B,EAEW,SAAUrlD,GACf,SAA2BmoD,EAACr/E,GAC1B,MAAc,SAAVA,EACKq/E,EAAmBY,cAGrB,IACR,CAID,OAFAZ,EAAmB9mE,MAAQ,OAC3B8mE,EAAmBY,cAAgBN,qBAAqBzoD,GACjDmoD,CACb,GA1BQM,qBA6BFtB,WAAa,CACfpvB,MAAOrC,yBACPlD,QAASmD,2BACT5nC,KAAMqoC,wBACNlkB,MAAO0jB,yBACPhI,KAAMiI,wBACNmzB,QAAS3xB,kBAGX,SAAqB4xB,aAACj+E,GACpB,kBAAkBA,IAAS,IAC5B,CAED,SAAkBk+E,UAAC/iE,GAAuV,OAA1O+iE,UAArD,mBAAX1hF,QAAoD,iBAAdA,OAAC+M,SAAqC,SAAiB4R,GAAO,cAAiBA,GAA0B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAL3e,QAAmB2e,EAAIve,cAAgBJ,QAAU2e,IAAQ3e,OAAOH,UAAY,gBAAqB8e,CAAC,EAAsB+iE,UAAC/iE,EAAO,CA2BlY,SAAmBgjE,WAACzkD,EAAMqE,GAIxB,MAAa/gC,KACT8qB,EAAQ,IAQZs2D,EAAargD,EAAKtiB,IAAIqM,EANb,GAOLu2D,EAAetgD,EAAKtiB,IAAI,EALnB,IAMLm6D,EAA0B,EAAfyI,EACXz0B,EAAO9hC,IA6FX,WAAcjlB,GACZ,MACIy7E,EAASz7E,EAAIrF,OACb+gF,EAAKvhF,KACL6H,EAAI,EACJid,EAAIy8D,EAAG15E,EAAI05E,EAAGz8D,EAAI,EAClBnjB,EAAI4/E,EAAGC,EAAI,GAOf,IALKF,IACHz7E,EAAM,CAACy7E,MAIFz5E,EAAIijB,GACTnpB,EAAEkG,GAAKA,IAGT,IAAKA,EAAI,EAAGA,EAAIijB,EAAOjjB,IACrBlG,EAAEkG,GAAKlG,EAAEmjB,EAAI8nC,EAAO9nC,EAAIjf,EAAIgC,EAAIy5E,IAAWj5E,EAAI1G,EAAEkG,KACjDlG,EAAEmjB,GAAKzc,EAITk5E,EAAGx/D,EAAI,SAAU0hC,GAQf,IANA,IAAIp7C,EACAgJ,EAAI,EACJxJ,EAAI05E,EAAG15E,EACPid,EAAIy8D,EAAGz8D,EACPnjB,EAAI4/E,EAAGC,EAEJ/9B,KACLp7C,EAAI1G,EAAEkG,EAAI+kD,EAAO/kD,EAAI,GACrBwJ,EAAIA,EAAIyZ,EAAQnpB,EAAEirD,GAAQjrD,EAAEkG,GAAKlG,EAAEmjB,EAAI8nC,EAAO9nC,EAAIzc,KAAO1G,EAAEmjB,GAAKzc,IAKlE,OAFAk5E,EAAG15E,EAAIA,EACP05E,EAAGz8D,EAAIA,EACAzT,CAGf,CACK,CAMD,WAAc6Q,EAAG7Z,GAIf,OAHAA,EAAER,EAAIqa,EAAEra,EACRQ,EAAEyc,EAAI5C,EAAE4C,EACRzc,EAAEm5E,EAAIt/D,EAAEs/D,EAAE11E,QACHzD,CACR,CAMD,WAAiB8V,EAAKy8B,GACpB,IAEIl/B,EAFMvR,EAAG,GACTs3E,EAAMP,UAAU/iE,GAGpB,GAAIy8B,GAAgB,UAAP6mC,EACX,IAAK/lE,KAAQyC,EACX,IACEhU,EAAOnF,KAAKuV,EAAQ4D,EAAIzC,GAAOk/B,EAAQ,GAC7B,CAAV,MAAOl3C,GAAG,CAIhB,OAAayG,EAAC3J,OAAS2J,EAAgB,UAAPs3E,EAAkBtjE,EAAMA,EAAM,IAC/D,CAOD,SAAeujE,EAACC,EAAM97E,GAKpB,IAJA,IACI+7E,EADUC,EAAGF,EAAO,GAEpB78D,EAAI,EAEDA,EAAI+8D,EAAWrhF,QACpBqF,EAAI+mD,EAAO9nC,GAAK8nC,GAAQg1B,GAAyB,GAAhB/7E,EAAI+mD,EAAO9nC,IAAW+8D,EAAW35B,WAAWpjC,KAG/E,OAAeg9D,EAACj8E,EACjB,CA2BD,WAAkByhB,GAChB,OAAavmB,OAACsrE,aAAapuD,MAAM,EAAGqJ,EACrC,CAlIDyZ,EAAqB,WA3ErB,SAAoB4gD,EAAMl8E,EAASqjB,GACjC,IAAOjjB,EAAG,GAKGk8E,EAAGL,EAAOnnE,GAJvB9U,GAAsB,IAAZA,EAAmB,CAC3Bu8E,SAAS,GACPv8E,GAAW,IAEwBu8E,QAAU,CAACL,EAAMG,EAASplD,IAAkB,OAATilD,EAiL5E,WACE,IAKE,MAAU,eAAe72D,GAEzB,OADChsB,EAAOmjF,QAAUnjF,EAAOojF,UAAUC,gBAAgBj/C,GAC5C4+C,EAAS5+C,EAKjB,CAJC,MAAOx/B,GACP,IAAW0+E,EAAGtjF,EAAO4b,UACjB2nE,EAAUD,GAAWA,EAAQC,QACjC,MAAO,EAAE,IAAQp8B,KAAInnD,EAAQujF,EAASvjF,EAAOwjF,OAAQR,EAASplD,GAC/D,CACF,CA/L2F6lD,GAAaZ,EAAM,GAAI97E,KAEtG,MAASA,GAGZ28E,EAAG,WAOT,IANA,IAAKpxE,EAAGqxE,EAAK1gE,EA5BR,GA8BL9V,EAAIm1E,EAEJzmD,EAAI,EAEGvpB,EAAIiwE,GAETjwE,GAAKA,EAAIupB,GAAK7P,EAEd7e,GAAK6e,EAEL6P,EAAI8nD,EAAK1gE,EAAE,GAGb,KAAO3Q,GAAKwnE,GAEVxnE,GAAK,EAELnF,GAAK,EAEL0uB,KAAO,EAGT,OAAQvpB,EAAIupB,GAAK1uB,CACzB,EAcM,OAZAu2E,EAAKE,MAAQ,WACX,OAAmB,EAAZD,EAAK1gE,EAAE,EACtB,EAEMygE,EAAKG,MAAQ,WACX,OAAOF,EAAK1gE,EAAE,GAAK,UAC3B,EAEMygE,EAAa,OAAIA,EAEjBd,EAAOI,EAASW,EAAKjB,GAAI9kD,IAEjBj3B,EAAQm9E,MAAQ95D,GAAY,SAAU05D,EAAMb,EAAMkB,EAAcn9E,GAetE,OAdIA,IAEEA,EAAM87E,GACRsB,EAAKp9E,EAAO+8E,GAIdD,EAAK98E,MAAQ,WACX,OAAWo9E,EAACL,EAAM,CAAE,EAChC,GAKYI,GACF9hD,EAAY,OAAIyhD,EACTb,GAGGa,CACb,GAAEA,EAAMT,EAAW,WAAYt8E,EAAUA,EAAQ3G,OAASkB,MAAQ+gC,EAAMt7B,EAAQC,MAClF,EA6IDg8E,EAAO3gD,EAAKl1B,SAAU6wB,EAKvB,CAID,SAAqBqmD,aAAC7jE,GACpBiiE,WAAW,GAAIjiE,EAChB,CAED,IAAI8jE,UAAY,CACdC,MAAO,SAGT,SAAgBC,QAAC/kE,GAAmV,OAAtO+kE,QAArD,mBAAX1jF,QAAoD,iBAApBA,OAAO+M,SAAmC,SAAiB4R,GAAO,iBAAyC,SAAiBA,GAAO,OAAUA,GAAsB,mBAAX3e,QAAyB2e,EAAIve,cAAgBJ,QAAU2e,IAAQ3e,OAAOH,UAAY,gBAAkB8e,CAAI,EAAoB+kE,QAAC/kE,EAAO,CAE1X,IAAIglE,kBAAoB,WAGtB,IAAIz2D,GAAK,CAAE,EACP9gB,KAAOsT,OACPngB,OAAS,KACT+C,SAAW,KACGknB,eAAG,KACjBo6D,MAAQ,KACFC,OAAG,KAGb,SAA8BC,sBAAC1lE,GAC7B,OAAUA,EAAChe,cAAgBuD,OAASya,EAAIhe,cAAgBie,YACzD,CAED,SAAS0lE,YAAYC,EAAMpiF,GACzB,MAAgB,cAAqB,YAAToiF,GAA+B,WAATA,GAAqBpiF,aAAaoC,MACrF,CAED,SAAgBigF,QAACn8D,GACf,MAAW47D,QAAQ57D,GAEnB,GAAa,WAATo8D,GAA8B,YAATA,GAAsBp8D,aAAa9jB,OAC1D,OAAQ8jB,EAGV,GAAIg8D,sBAAsBh8D,GAAI,CAC5B,IAAIzf,EACI87E,EAAGr8D,EAAE9mB,OACTojF,EAAS,GAEb,IAAK/7E,EAAI,EAAGA,EAAI87E,EAAM97E,GAAK,EACzB+7E,EAAO/7E,IAAMyf,EAAEzf,GAGjB,OAAO+7E,CACR,CAED,OAAIt8D,EAAEmb,SACInb,EAAClmB,GAGHkmB,CACT,CAlCDy7D,aAAa7jE,QAoCb,IAAa2kE,UAAGrqD,cAAcyK,gBAAgB,KAAO,EAAG,KAAO,KAAO,UAAUxjC,IAClEqjF,WAAGtqD,cAAcyK,gBAAgB,KAAO,KAAO,KAAO,EAAG,WAAWxjC,IAC9EsjF,aAAevqD,cAAcyK,gBAAgB,IAAM,EAAG,KAAO,EAAG,aAAaxjC,IAEjF,SAASimD,IAAIp/B,EAAGtF,GACd,IAAQ0hE,EAAGR,QAAQ57D,GAEf08D,EAAOd,QAAQlhE,GAEnB,GAAa,WAAT0hE,GAA8B,WAATM,EACvB,OAAQ18D,EAAGtF,EAGb,GAAIuhE,YAAYG,EAAMp8D,IAAMi8D,YAAYS,EAAMhiE,GAC5C,OAAOsF,EAAItF,EAGb,GAAIshE,sBAAsBh8D,IAAMi8D,YAAYS,EAAMhiE,GAGhD,OAFAsF,EAAIA,EAAExb,MAAM,IACV,IAAMkW,EACDsF,EAGT,GAAIi8D,YAAYG,EAAMp8D,IAAMg8D,sBAAsBthE,GAGhD,OAFAA,EAAIA,EAAElW,MAAM,IACV,GAAKwb,EAAItF,EAAE,GACNA,EAGT,GAAIshE,sBAAsBh8D,IAAMg8D,sBAAsBthE,GAAI,CAMxD,IALA,IAAIna,EAAI,IACGyf,EAAE9mB,SACFwhB,EAAExhB,OACHojF,EAAG,GAEN/7E,EAAI87E,GAAQ97E,EAAIo8E,IACA,iBAAR38D,EAACzf,IAAmByf,EAAEzf,aAAcrE,UAA4B,mBAAPqE,IAAmBma,EAAEna,aAAcrE,QACvGogF,EAAO/7E,GAAKyf,EAAEzf,GAAKma,EAAEna,GAErB+7E,EAAO/7E,QAActH,IAATyhB,EAAEna,GAAmByf,EAAEzf,GAAKyf,EAAEzf,IAAMma,EAAEna,GAGpDA,GAAK,EAGP,OAAO+7E,CACR,CAED,QACD,CAED,IAAIljB,IAAMha,IAEV,SAASw9B,IAAI58D,EAAGtF,GACd,IAAI0hE,EAAOR,QAAQ57D,GAEf08D,EAAOd,QAAQlhE,GAEnB,GAAIuhE,YAAYG,EAAMp8D,IAAMi8D,YAAYS,EAAMhiE,GAS5C,MARa,WAAT0hE,IACFp8D,EAAIgL,SAAShL,EAAG,KAGL,WAAT08D,IACFhiE,EAAIsQ,SAAStQ,EAAG,KAGVsF,EAAGtF,EAGb,GAAIshE,sBAAsBh8D,IAAMi8D,YAAYS,EAAMhiE,GAGhD,OAFAsF,EAAIA,EAAExb,MAAM,IACV,IAAMkW,EACDsF,EAGT,GAAIi8D,YAAYG,EAAMp8D,IAAMg8D,sBAAsBthE,GAGhD,OAFAA,EAAIA,EAAElW,MAAM,IACV,GAAKwb,EAAItF,EAAE,GACNA,EAGT,GAAIshE,sBAAsBh8D,IAAMg8D,sBAAsBthE,GAAI,CAMxD,IALA,IAAIna,EAAI,IACGyf,EAAE9mB,OACLyjF,EAAGjiE,EAAExhB,OACHojF,EAAG,GAEN/7E,EAAI87E,GAAQ97E,EAAIo8E,IACA,iBAAR38D,EAACzf,IAAmByf,EAAEzf,uBAA0C,mBAAPA,IAAmBma,EAAEna,aAAcrE,QACvGogF,EAAO/7E,GAAKyf,EAAEzf,GAAKma,EAAEna,GAErB+7E,EAAO/7E,QAActH,IAATyhB,EAAEna,GAAmByf,EAAEzf,GAAKyf,EAAEzf,IAAMma,EAAEna,GAGpDA,GAAK,EAGP,OAAa+7E,CACd,CAED,QACD,CAED,SAASO,IAAI78D,EAAGtF,GACd,IAIOpE,MAJC8lE,EAAGR,QAAQ57D,KAER47D,QAAQlhE,GAInB,GAAIuhE,YAAYG,EAAMp8D,IAAMi8D,YAAYS,EAAMhiE,GAC5C,OAAQsF,EAAGtF,EAMb,GAAIshE,sBAAsBh8D,IAAMi8D,YAAYS,EAAMhiE,GAAI,CAIpD,IAHAzG,EAAM+L,EAAE9mB,OACRod,EAAMF,iBAAiB,UAAWnC,GAE7B1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+V,EAAI/V,GAAKyf,EAAEzf,GAAKma,EAGlB,OAAUpE,CACX,CAED,GAAI2lE,YAAYG,EAAMp8D,IAAMg8D,sBAAsBthE,GAAI,CAIpD,IAHAzG,EAAMyG,EAAExhB,OACRod,EAAMF,iBAAiB,UAAWnC,GAE7B1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+V,EAAI/V,GAAKyf,EAAItF,EAAEna,GAGjB,OAAU+V,CACX,CAED,OAAO,CACR,CAED,SAASub,IAAI7R,EAAGtF,GACd,IAIIpE,EAMA/V,EACG0T,EAXCmoE,EAAGR,QAAQ57D,GAEf08D,EAAOd,QAAQlhE,GAInB,GAAIuhE,YAAYG,EAAMp8D,IAAMi8D,YAAYS,EAAMhiE,GAC5C,OAAOsF,EAAItF,EAMb,GAAIshE,sBAAsBh8D,IAAMi8D,YAAYS,EAAMhiE,GAAI,CAIpD,IAHAzG,EAAM+L,EAAE9mB,OACRod,EAAMF,iBAAiB,UAAWnC,GAE7B1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+V,EAAI/V,GAAKyf,EAAEzf,GAAKma,EAGlB,OAAOpE,CACR,CAED,GAAI2lE,YAAYG,EAAMp8D,IAAMg8D,sBAAsBthE,GAAI,CAIpD,IAHAzG,EAAMyG,EAAExhB,OACRod,EAAMF,iBAAiB,UAAWnC,GAE7B1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+V,EAAI/V,GAAKyf,EAAItF,EAAEna,GAGjB,OAAO+V,CACR,CAED,QACD,CAED,SAAYwmE,IAAC98D,EAAGtF,GASd,MARiB,qBACfsF,EAAIgL,SAAShL,EAAG,KAGD,iBAALtF,IACVA,EAAIsQ,SAAStQ,EAAG,KAGXsF,EAAItF,CACZ,CAED,YAAc0kC,IACV29B,QAAUH,YACAC,IACHG,QAAGnrD,IACHorD,QAAGH,IAEd,SAAcI,MAACj7B,EAAKtqC,EAAKF,GACvB,GAAIE,EAAMF,EAAK,CACb,IAAM0lE,EAAG1lE,EACTA,EAAME,EACNA,EAAMwlE,CACP,CAED,OAAO74E,KAAKqT,IAAIrT,KAAKmT,IAAIwqC,EAAKtqC,GAAMF,EACrC,CAED,SAAS2lE,iBAAiBplE,GACxB,SAAaG,SACd,CAED,IAAsBklE,mBAAGD,iBAEzB,SAAyBE,iBAACtlE,GACxB,OAAUA,EAAGG,SACd,CAED,uBAAyBilE,iBACrBG,kBAAoB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAExC,SAASrkF,OAAOskF,EAAMC,GACpB,GAAoB,iBAALD,GAAiBA,aAAgBthF,OAE9C,OADAuhF,EAAOA,GAAQ,EACJn5E,KAACyT,IAAIylE,EAAOC,GAOzB,IAAIl9E,EAJCk9E,IACHA,EAAOF,mBAIT,IAAItpE,EAAM3P,KAAKqT,IAAI6lE,EAAKtkF,OAAQukF,EAAKvkF,QACjCu8B,EAAc,EAElB,IAAKl1B,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBk1B,GAAenxB,KAAK6S,IAAIsmE,EAAKl9E,GAAKi9E,EAAKj9E,GAAI,GAG7C,OAAW+D,KAAC+S,KAAKoe,EAClB,CAED,mBAAmBioD,GACjB,OAAU7rD,IAAC6rD,EAAKxkF,OAAOwkF,GACxB,CAED,SAASC,SAAS3lE,GAChB,IAKK9N,EACA7P,EANA0P,EAAGiO,EAAI,GACPyC,EAAGzC,EAAI,GACP0C,EAAG1C,EAAI,GACRP,EAAMnT,KAAKmT,IAAI1N,EAAG0Q,EAAGC,KACfpW,KAAKqT,IAAI5N,EAAG0Q,EAAGC,GAGpBpU,GAAImR,EAAME,GAAO,EAEtB,GAAIF,IAAQE,EACVzN,EAAI,EAEJ7P,EAAI,MACC,CACL,IAAKsK,EAAG8S,EAAME,EAGd,OAFAtd,EAAIiM,EAAI,GAAM3B,GAAK,EAAI8S,EAAME,GAAOhT,GAAK8S,EAAME,GAEvCF,GACN,KAAM1N,EACJG,GAAKuQ,EAAIC,GAAK/V,GAAK8V,EAAIC,EAAI,EAAI,GAC/B,MAEF,KAAMD,EACJvQ,GAAKwQ,EAAI3Q,GAAKpF,EAAI,EAClB,MAEF,KAAM+V,EACJxQ,GAAKH,EAAI0Q,GAAK9V,EAAI,EAOtBuF,GAAK,CACN,CAED,MAAO,CAACA,EAAG7P,EAAGiM,EAAG0R,EAAI,GACtB,CAED,SAAS4lE,QAAQ9/E,EAAG6c,EAAG5Z,GAGrB,OAFIA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAI,EAAWjD,EAAa,GAAT6c,EAAI7c,GAASiD,EACpCA,EAAI,GAAe4Z,EACnB5Z,EAAI,EAAI,EAAWjD,GAAI6c,EAAI7c,IAAM,EAAI,EAAIiD,GAAK,EAC1CjD,CACT,CAED,SAAiB+/E,SAAC7lE,GAChB,IAGIjO,EACC0Q,EACDC,EALCxQ,EAAG8N,EAAI,GACP3d,EAAG2d,EAAI,GACR1R,EAAI0R,EAAI,GAKZ,GAAU,IAAN3d,EACF0P,EAAIzD,EAEJoU,EAAIpU,EAEJmU,EAAInU,MACC,CACL,IAAIqU,EAAIrU,EAAI,GAAMA,GAAK,EAAIjM,GAAKiM,EAAIjM,EAAIiM,EAAIjM,EACvCyD,EAAG,EAAIwI,EAAIqU,EAChB5Q,EAAI6zE,QAAQ9/E,EAAG6c,EAAGzQ,EAAI,EAAI,GAC1BuQ,EAAImjE,QAAQ9/E,EAAG6c,EAAGzQ,GAClBwQ,EAAIkjE,QAAQ9/E,EAAG6c,EAAGzQ,EAAI,EAAI,EAC3B,CAED,MAAO,CAACH,EAAG0Q,EAAGC,EAAG1C,EAAI,GACtB,CAED,SAAS8lE,OAAO/8E,EAAGg9E,EAAMC,EAAMC,EAAQC,GAQrC,QAPejlF,IAAXglF,QAAmChlF,IAAXilF,IAC1BD,EAASF,EACTG,EAASF,EACTD,EAAO,EACPC,EAAO,GAGLA,EAAOD,EAAM,CACf,IAASI,EAAGH,EACZA,EAAOD,EACPA,EAAOI,CACR,CAED,GAAIp9E,GAAKg9E,EACP,OAAOE,EAGT,GAAIl9E,GAAKi9E,EACP,OAAOE,EAGT,IAMI39E,EANI22B,EAAG8mD,IAASD,EAAO,GAAKh9E,EAAIg9E,IAASC,EAAOD,GAEpD,IAAKE,EAAO/kF,OACV,OAAa+kF,GAAIC,EAASD,GAAU/mD,EAItC,IAAIjjB,EAAMgqE,EAAO/kF,OACbod,EAAMF,iBAAiB,UAAWnC,GAEtC,IAAK1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+V,EAAI/V,GAAK09E,EAAO19E,IAAM29E,EAAO39E,GAAK09E,EAAO19E,IAAM22B,EAGjD,OAAU5gB,CACX,CAED,SAAS/R,OAAOoT,EAAKF,GAWnB,QAVYxe,IAARwe,SACUxe,IAAR0e,GACFA,EAAM,EACNF,EAAM,IAENA,EAAME,EACNA,OAAM1e,IAINwe,EAAIve,OAAQ,CACd,MACO+a,EAAGwD,EAAIve,OAETye,IACHA,EAAMvB,iBAAiB,UAAWnC,IAGpC,MAAUmC,iBAAiB,UAAWnC,GAC/BmqE,EAAGxmE,OAAOrT,SAEjB,IAAKhE,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB+V,EAAI/V,GAAKoX,EAAIpX,GAAK69E,GAAO3mE,EAAIlX,GAAKoX,EAAIpX,IAGxC,OAAU+V,CACX,CAOD,YALYrd,IAAR0e,IACFA,EAAM,GAIEA,EADCC,OAAOrT,UACGkT,EAAME,EAC5B,CAED,SAAS0mE,WAAWprD,EAAQqrD,EAAYC,EAAa99D,GACnD,IAAIlgB,EACA0T,EAAMgf,EAAO/5B,OACbujB,EAAOgmB,UAAUpN,aACrB5Y,EAAK+kB,cAAc/gB,EAAQxM,GAC3B,IACiBuqE,EACCC,EAFdC,EAAiB,CAAC,EAAG,GAIzB,IAAKn+E,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxBi+E,EAAgBF,GAAcA,EAAW/9E,GAAK+9E,EAAW/9E,GAAKm+E,EAC9DD,EAAiBF,GAAeA,EAAYh+E,GAAKg+E,EAAYh+E,GAAKm+E,EAClEjiE,EAAKolB,YAAY5O,EAAO1yB,GAAG,GAAI0yB,EAAO1yB,GAAG,GAAIk+E,EAAe,GAAKxrD,EAAO1yB,GAAG,GAAIk+E,EAAe,GAAKxrD,EAAO1yB,GAAG,GAAIi+E,EAAc,GAAKvrD,EAAO1yB,GAAG,GAAIi+E,EAAc,GAAKvrD,EAAO1yB,GAAG,GAAIA,GAAG,GAGxL,OAAOkc,CACR,CAED,SAA2BkiE,mBAACjuD,KAAMznB,KAAMiI,UAEtC,SAAa0tE,KAACC,GACZ,OAAaA,CACd,CAED,IAAKnuD,KAAK7F,WAAWy3B,aAAa8e,eAChC,OAAWwd,KAGb,IAAO5mE,IAAG/O,KAAKoqB,EACEyrD,cAAG,qBAAqBh4E,KAAKkR,KAE9B+mE,cAA8B,IAA3B/mE,IAAI9W,QAAQ,mBAEhBwvB,KAAKznB,KAAKiV,aAER8gE,cACbt3E,QACMkkD,OACNqzB,aAAe/tE,SACnB+tE,aAAa7L,YAAc6L,aAAaztC,eACxC51C,OAAO8C,eAAeugF,aAAc,QAAS,CAC3C9lF,IAAK,WACH,OAAO8lF,aAAanlF,CACrB,IAEH42B,KAAKjS,KAAKozD,cAAgB,EAAInhD,KAAKjS,KAAKoM,WAAW9B,UACnD2H,KAAKjS,KAAKqzD,iBAAmB,EAC7B,IAAI6D,QAAUjlD,KAAKznB,KAAK2W,GAAK8Q,KAAKjS,KAAKoM,WAAW9B,UAC9C6sD,SAAWllD,KAAKznB,KAAK4W,GAAK6Q,KAAKjS,KAAKoM,WAAW9B,UAC/CvF,MAAQkN,KAAKznB,KAAKurD,GAAK9jC,KAAKznB,KAAKurD,GAAK,EACtC/wC,OAASiN,KAAKznB,KAAKw0B,GAAK/M,KAAKznB,KAAKw0B,GAAK,EACnCv/B,KAAGwyB,KAAKznB,KAAKif,GACjBg3D,OACOC,QACAC,QACPC,SACMC,OACNzK,QACSE,UACTC,SACAI,OACiBmK,kBACjB7mE,SACQo7D,SACRM,kBAESoL,UACTC,cAEWrM,YACXG,4BAGmBmM,oBAAGC,KAAK,oCAAsC3nE,IAAM,0BAA0B,GAEjGk7D,QAAUhiE,SAASmvB,GAAKp3B,KAAKpF,EAAE3K,OAAS,EAClCu8E,QAAI/8E,KAAKuQ,OAAyB,IAAjBvQ,KAAKuQ,KAAKmkD,GAE3BwyB,OAAG,SAAgBC,EAAMC,GACjC,IAAWC,EACNviE,EACDwiE,EAAYtnF,KAAK0iC,GAAGliC,OAASR,KAAK0iC,GAAGliC,OAAS,EACrC+mF,EAAG7pE,iBAAiB,UAAW4pE,GAE9BzsB,EAAGjvD,KAAKiT,MADf,EACqBiQ,MAI5B,IAHAu4D,EAAU,EACVviE,EAAI,EAEGuiE,EAAUxsB,GAAY,CAE3B,IAAK/1C,EAAI,EAAGA,EAAIwiE,EAAWxiE,GAAK,EAC9ByiE,EAAUziE,KAAOsiE,EAAY,EAANA,EAAUloE,OAAOrT,SAG1Cw7E,GAAW,CACZ,CAGD,MAfO,EAeOv4D,KACV0P,EAAOgpD,EAAU57E,KAAKiT,MAAM2oE,GAC5B5pE,EAAMF,iBAAiB,UAAW4pE,GAEtC,GAAIA,EAAY,EAAG,CACjB,IAAKxiE,EAAI,EAAGA,EAAIwiE,EAAWxiE,GAAK,EAC9BlH,EAAIkH,GAAK9kB,KAAK0iC,GAAG5d,GAAKyiE,EAAUziE,KAAOsiE,EAAY,EAANA,EAAUloE,OAAOrT,UAAY2yB,EAI5E,OAAU5gB,CACX,CAED,YAAY8kB,GAAK6kD,EAAU,KAAOH,EAAY,EAANA,EAAUloE,OAAOrT,UAAY2yB,CAC7E,EAAQjS,KAAKvsB,MAgBP,SAASynF,eAAezkF,EAAMgsB,GAC5B,cAAchsB,EAAMgsB,GAAU,EAC/B,CAED,yBAAyBhsB,EAAMgsB,GAC7B,OAAc03D,QAAC1jF,EAAMgsB,GAAU,EAChC,CApBGu3D,aAAaC,SACfA,OAASD,aAAaC,OAAOj6D,KAAKg6D,cAClCE,QAAUD,QAGRD,aAAaG,UACfA,QAAUH,aAAaG,QAAQn6D,KAAKg6D,cACpCI,SAAWD,SAGTH,aAAaK,SACfA,OAASL,aAAaK,OAAOr6D,KAAKg6D,eAWhCvmF,KAAK84C,iBACP4hC,YAAc16E,KAAK84C,eAAevsB,KAAKvsB,OAGrCA,KAAKu6E,oBACPM,eAAiB76E,KAAKu6E,kBAAkBhuD,KAAKvsB,OAG/C,IAAQ+lB,KAAGiS,KAAKjS,KAAKoM,WAAWd,iBAAiB9E,KAAKyL,KAAKjS,KAAKoM,WAAWd,kBAsLvEvC,KACA44D,eAEI9hC,KACK+hC,UACTC,UACAC,cA1LJ,gBAAgBC,EAAOC,GACrB,IAAIC,EAAO,CAACD,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,IAC9DG,EAAGr8E,KAAKu6B,MAAM6hD,EAAK,GAAIp8E,KAAK+S,KAAKqpE,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,KAAOvoE,UAEpF,MAAO,EADI7T,KAAKu6B,MAAM6hD,EAAK,GAAIA,EAAK,IAAMvoE,UAC7BwoE,EAAO,EACrB,CAED,SAASC,QAAQ7/E,EAAGg9E,EAAMC,EAAM6C,EAAMC,GACpC,iBAAiBtE,WAAYz7E,EAAGg9E,EAAMC,EAAM6C,EAAMC,EACnD,CAED,SAASC,OAAOhgF,EAAGg9E,EAAMC,EAAM6C,EAAMC,GACnC,OAAgBE,UAACzE,UAAWx7E,EAAGg9E,EAAMC,EAAM6C,EAAMC,EAClD,CAED,SAASG,KAAKlgF,EAAGg9E,EAAMC,EAAM6C,EAAMC,GACjC,iBAAiBrE,aAAc17E,EAAGg9E,EAAMC,EAAM6C,EAAMC,EACrD,CAED,SAASE,UAAUnkE,EAAI9b,EAAGg9E,EAAMC,EAAM6C,EAAMC,QAC7B7nF,IAAT4nF,GACFA,EAAO9C,EACP+C,EAAO9C,GAEPj9E,GAAKA,EAAIg9E,IAASC,EAAOD,GAGvBh9E,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAGN,MAAW8b,EAAG9b,GAEd,GAAIi7E,sBAAsB6E,GAAO,CAC/B,QACaA,EAAK3nF,OACdod,EAAMF,iBAAiB,UAAW8qE,GAEtC,IAAKC,EAAO,EAAGA,EAAOD,EAAQC,GAAQ,EACpC7qE,EAAI6qE,IAASL,EAAKK,GAAQN,EAAKM,IAASthD,EAAOghD,EAAKM,GAGtD,OAAU7qE,CACX,CAED,OAAQwqE,EAAOD,GAAQhhD,EAAOghD,CAC/B,CAED,oBAAoBr5D,GAClB,IAAQ25D,EAEJx4E,IADAu4E,EAASj4E,KAAKpF,EAAE3K,OAIpB,GAAK+P,KAAKpF,EAAE3K,QAA+B,iBAAV+P,KAACpF,EAAE,GAOlC,GAHA8E,GAAS,GACT6e,GAAQkJ,KAAKjS,KAAKoM,WAAW9B,WAElB9f,KAAKpF,EAAE,GAAG9C,EACnB4H,EAAQ,EACR2zB,EAAUrzB,KAAKpF,EAAE,GAAG9C,MACf,CACL,IAAKogF,EAAO,EAAGA,EAAOD,EAAS,EAAGC,GAAQ,EAAG,CAC3C,GAAI35D,IAASve,KAAKpF,EAAEs9E,GAAMpgF,EAAG,CAC3B4H,EAAQw4E,EAAO,EACf7kD,EAAUrzB,KAAKpF,EAAEs9E,GAAMpgF,EACvB,KACD,CAAUymB,GAAAA,EAAOve,KAAKpF,EAAEs9E,GAAMpgF,GAAKymB,EAAOve,KAAKpF,EAAEs9E,EAAO,GAAGpgF,EAAG,CACzDymB,EAAOve,KAAKpF,EAAEs9E,GAAMpgF,EAAIkI,KAAKpF,EAAEs9E,EAAO,GAAGpgF,EAAIymB,GAC/C7e,EAAQw4E,EAAO,EACf7kD,EAAUrzB,KAAKpF,EAAEs9E,EAAO,GAAGpgF,IAE3B4H,EAAQw4E,EAAO,EACf7kD,EAAUrzB,KAAKpF,EAAEs9E,GAAMpgF,GAGzB,KACD,CACF,EAEc,IAAX4H,IACFA,EAAQw4E,EAAO,EACf7kD,EAAUrzB,KAAKpF,EAAEs9E,GAAMpgF,EAE1B,MAhCD4H,EAAQ,EACR2zB,EAAU,EAkCZ,IAAI8kD,EAAQ,GAGZ,OAFAA,EAAMz4E,MAAQA,EACdy4E,EAAM55D,KAAO8U,EAAU5L,KAAKjS,KAAKoM,WAAW9B,UAChCq4D,CACb,CAED,SAAS7iF,IAAIk+B,GACX,IAAI2kD,IAEMF,EAEV,IAAKj4E,KAAKpF,EAAE3K,QAA+B,iBAAV+P,KAACpF,EAAE,GAClC,MAAM,UAAU,yCAA2C44B,GAG7DA,GAAO,EACP2kD,EAAQ,CACN55D,KAAMve,KAAKpF,EAAE44B,GAAK17B,EAAI2vB,KAAKjS,KAAKoM,WAAW9B,UAC3CvvB,MAAO,IAET,IAAI8c,EAAM1a,OAAO7D,UAAUuG,eAAewC,KAAKmI,KAAKpF,EAAE44B,GAAM,KAAOxzB,KAAKpF,EAAE44B,GAAKpiC,EAAI4O,KAAKpF,EAAE44B,EAAM,GAAGrgC,EAGnG,IAFA8kF,EAAS5qE,EAAIpd,OAERioF,EAAO,EAAGA,EAAOD,EAAQC,GAAQ,EACpCC,EAAMD,GAAQ7qE,EAAI6qE,GAClBC,EAAM5nF,MAAM2nF,GAAQ7qE,EAAI6qE,GAG1B,QACD,CAED,SAASE,aAAaz0D,EAAI00D,GAKxB,OAJKA,IACHA,EAAM5wD,KAAKjS,KAAKoM,WAAW9B,WAGtB6D,EAAK00D,CACb,CAED,SAASC,aAAaxgF,EAAGugF,GASvB,OARKvgF,GAAW,IAANA,IACRA,EAAIymB,MAGD85D,IACHA,EAAM5wD,KAAKjS,KAAKoM,WAAW9B,WAGtBhoB,EAAIugF,CACZ,CAED,oBAAoBjH,GAClBziE,OAAO4pE,WAAWC,SAAWpH,EAC9B,CAED,4BACE,OAAO3pD,KAAK+xB,kBACb,CAED,SAAkBi/B,UAACzyD,EAAMloB,GACvB,MAAqB,iBAAVvN,WACGP,IAAR8N,EACUvN,MAACkoF,UAAUzyD,GAGlBz1B,MAAMkoF,UAAUzyD,EAAMloB,GAGxB,EACR,CAED,SAASskB,OAAO4D,EAAMloB,GACpB,MAAqB,iBAALvN,WACFP,IAAR8N,QACWskB,OAAO4D,GAGVz1B,MAAC6xB,OAAO4D,EAAMloB,GAGrB,EACR,CAED,uBAAuB46E,GACrBn6D,KAA2B,IAApBm6D,EAAwB,EAAIr9E,KAAKiT,MAAMiQ,KAAOm6D,GAAmBA,EACxEnoF,MAAQ45E,YAAY5rD,KACrB,CASD,UAAYkJ,KAAKznB,KAAKwzB,IACT84C,aAAM7kD,KAAK64B,YAAa74B,KAAK64B,UAAUrwD,QAChDqQ,OACAk4E,SAAWn9E,KAAKiT,MAAsB,IAAhBjT,KAAKC,UACjBsmB,WAAG6F,KAAK7F,WAEtB,2BAA2Bg0D,GAIzB,OAFArlF,MAAQqlF,EAEJnmF,KAAKkpF,oBAAsBlxD,KAAK7F,WAAWmV,SAA6B,iBAAlBtnC,KAAKyiC,gBAIzC,iBAAlBziC,KAAKyiC,WACPklD,UAAY3nF,KAAK2nF,UACjBC,UAAY5nF,KAAK4nF,UACjBC,cAAgB7nF,KAAK6nF,eAGlBf,YACHlhC,KAAO5tB,KAAK81B,eAAelI,KAC3BkhC,UAAY9uD,KAAK81B,eACjBi5B,SAAW/uD,KAAKjS,KAAK6J,cACrBusD,QAAU2K,UAAU3K,QAAQ5vD,KAAKu6D,WACjCzK,UAAYyK,UAAUzK,UAAU9vD,KAAKu6D,WACrCxK,SAAWwK,UAAUxK,SAAS/vD,KAAKu6D,WACnCpK,OAASoK,UAAUpK,OAAOnwD,KAAKu6D,WAC/Bl6B,KAAOk6B,UAAUl6B,KAAOk6B,UAAUl6B,KAAKrgC,KAAKu6D,WAAa,KACzDD,kBAAoBvK,UAGjBjtC,YACHA,UAAYrX,KAAK81B,eAAe,wBAChCw4B,cAAgBj3C,UAEZA,YACFqsC,YAAcrsC,UAAUqsC,cAOX,IAAbyN,UAAmBn6E,UACrBA,QAAU83E,UAAU,4BAGjB5zB,SACHA,OAAS4zB,UAAU,KAGrBjK,aAAe7kD,KAAK64B,YAAa74B,KAAK64B,UAAUrwD,WAE9BqQ,SAChBA,OAASmnB,KAAK64B,UAAU,GAAG/C,gBAG7Bh/B,KAAO9uB,KAAK+lB,KAAK8gB,cAAgB7mC,KAAK+lB,KAAKoM,WAAW9B,UAElDg2D,cACFlF,WAAW4H,SAAWj6D,MAGpBs3D,gBACFsB,SAAW7M,eAAe/rD,OAG5Bk4D,sBACAhnF,KAAKkpF,kBAAoBlxD,KAAK7F,WAAWmV,QAGzC8hD,aAAeA,aAAa3mD,WAAaugD,UAAUC,MAAQmG,aAAahoF,EAAIgoF,aAE7E,CAID,OADAC,kBAAkBC,yBAA2B,CAAChD,cAAe5K,YAAa5sD,KAAM44D,SAAUzK,QAASC,SAAUpyD,MAAOC,OAAQvlB,KAAMihF,QAASE,SAAUC,OAAQlK,OAAQmK,kBAAmB1K,QAASE,UAAWzvB,KAAM5sC,SAAUo7D,SAAUpoC,MAAO+zC,SAAUvM,QAASuC,OAAQmK,OAAQO,eAAgB8B,gBAAiBxjE,KAAMyjE,OAAQtB,QAASG,OAAQE,KAAMkB,WAAY5jF,IAAK+/C,KAAM+hC,UAAWC,UAAWC,cAAec,aAAcE,aAAc9+B,iBAAkBi/B,UAAWr2D,OAAQ+2D,cAAez5E,MAAOkiB,6BAE1e,CAID,OAFAzF,GAAGu5D,mBAAqBA,mBACxBv5D,GAAG48D,yBAA2B,CAACvqF,OAAQ+C,SAAUknB,eAAgBo6D,MAAOC,OAAQI,QAAS/iB,IAAKipB,QAAStF,QAASuF,QAAStF,QAASC,QAASC,MAAOG,mBAAoBC,iBAAkBiF,mBAAoBC,UAAW7E,SAAUE,SAAUC,OAAQv5E,OAAQ85E,YACpPj5D,EACX,CA91B0B,GAg2BHq9D,kBAgFZ,CACLC,kBAhFF,SAA2BhyD,EAAMznB,EAAMmL,GACjCnL,EAAKoqB,IACPjf,EAAKvQ,GAAI,EACTuQ,EAAKif,GAAI,EACTjf,EAAKuqE,mBAAqB9C,kBAAkB8C,mBAC5CvqE,EAAK6rB,gBAAgBviC,KAAK0W,EAAKuqE,mBAAmBjuD,EAAMznB,EAAMmL,GAAM6Q,KAAK7Q,IAE5E,EA0ECk/D,eA3DF,SAAwBv4C,GACtB,IACM2L,EAAGhuC,KAAK84C,eAAezW,GACzB0W,EAAK/4C,KAAK84C,eAAezW,GAFhB,OAGD,EAEZ,GAAI2L,EAAGxtC,OAAQ,CACb,IAAIqH,EAEJ,IAAKA,EAAI,EAAGA,EAAImmC,EAAGxtC,OAAQqH,GAAK,EAC9BoiF,GAASr+E,KAAK6S,IAAIs6B,EAAGlxC,GAAKmmC,EAAGnmC,GAAI,GAGnCoiF,EAA2B,IAAnBr+E,KAAK+S,KAAKsrE,EAC1B,MACQA,EAAQ,EAGV,OAAOA,CACR,EAyCC1P,kBAvCF,SAA2Bl4C,GACzB,QAAiB9hC,IAAbP,KAAKgoC,IACP,OAAWhoC,KAACgoC,IAGd,IAII0/C,EAIE7/E,EARG4xC,GAAI,KAETzL,EAAKhuC,KAAK84C,eAAezW,GACzB0W,EAAK/4C,KAAK84C,eAAezW,EAAWoX,GAGxC,GAAIzL,EAAGxtC,OAIL,IAHAknF,EAAWhqE,iBAAiB,UAAWswB,EAAGxtC,QAGrCqH,EAAI,EAAGA,EAAImmC,EAAGxtC,OAAQqH,GAAK,EAI9B6/E,EAAS7/E,IAAMkxC,EAAGlxC,GAAKmmC,EAAGnmC,IAAM4xC,OAGlCiuC,GAAY3uC,EAAK/K,GAAMyL,EAGzB,OAAOiuC,CACR,EAcC5uC,eA1EF,SAAwBzW,GAUtB,OATAA,GAAYriC,KAAKg4B,KAAK7F,WAAW9B,WACjCgS,GAAYriC,KAAKwiC,cAEAxiC,KAAKkqF,eAAe7lD,YACnCrkC,KAAKkqF,eAAeh8E,UAAYlO,KAAKkqF,eAAe7lD,UAAYhC,EAAWriC,KAAKkqF,eAAeh8E,UAAY,EAC3GlO,KAAKkqF,eAAeppF,MAAQd,KAAKoiC,iBAAiBC,EAAUriC,KAAKkqF,gBACjElqF,KAAKkqF,eAAe7lD,UAAYhC,GAGvBriC,KAACkqF,eAAeppF,KAC5B,EAgECqpF,qBAbF,WACE,OAAWnqF,KAAC0iC,EACb,EAYC07C,iBAVF,SAA0BtD,GACxB96E,KAAK86E,cAAgBA,CACtB,GAYH,SAA6BsP,uBAC3B,SAAS1D,EAAQ1jF,EAAMgsB,EAAUq7D,GAC/B,IAAKrqF,KAAKmL,IAAMnL,KAAK6iC,UACnB,OAAO7iC,KAAK0iC,GAGd1/B,EAAOA,EAAOA,EAAKsE,cAAgB,GACnC,IAQIgjF,IAoBAziF,EACA0T,EACAgvE,IA9BevqF,KAAK+lB,KAAK8gB,cAChBhE,EAAG7iC,KAAK6iC,UACjB2nD,EAAe3nD,EAAUA,EAAUriC,OAAS,GAAG6H,EAEnD,GAAIsnB,GAAgB66D,EAClB,OAAOxqF,KAAK0iC,GA2Bd,GArBK2nD,EAcHI,EAAgBD,GAHdF,EAHGt7D,EAGapjB,KAAKyT,IAAImrE,EAAexqF,KAAKg4B,KAAKjS,KAAKoM,WAAW9B,UAAYrB,GAF9DpjB,KAAKmT,IAAI,EAAGyrE,EAAexqF,KAAKg4B,KAAKznB,KAAK2W,QARvD8H,GAAYA,EAAW6T,EAAUriC,OAAS,KAC7CwuB,EAAW6T,EAAUriC,OAAS,GAIhC8pF,EAAgBE,GADhBC,EAAgB5nD,EAAUA,EAAUriC,OAAS,EAAIwuB,GAAU3mB,IAgBhD,aAATrF,GAGF,GAFiB4I,KAAKiT,OAAO8Q,EAAe86D,GAAiBH,GAE5C,GAAM,EACrB,OAAWtqF,KAAC84C,gBAAgBwxC,GAAiB36D,EAAe86D,GAAiBH,EAAgBG,GAAiBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,OAEvIrtB,IAAS,WAATA,EAAmB,CAC5B,MAAYhD,KAAK84C,eAAe2xC,EAAgBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,KACrErwB,KAAK84C,eAAe0xC,EAAexqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,KAChErwB,KAAK84C,iBAAiBnpB,EAAe86D,GAAiBH,EAAgBG,GAAiBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,GAEjIq6D,EAAU9+E,KAAKiT,OAAO8Q,EAAe86D,GAAiBH,GAE1D,GAAItqF,KAAK0iC,GAAGliC,OAAQ,CAIlB,IAFA+a,GADAgvE,EAAM,UAAUI,EAAMnqF,SACZA,OAELqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB0iF,EAAI1iF,IAAM+iF,EAAK/iF,GAAK8iF,EAAM9iF,IAAM6iF,EAAUG,EAAQhjF,GAGpD,OAAU0iF,CACX,CAED,OAAQK,EAAOD,GAASD,EAAUG,CAC1C,CAAa,GAAa,aAAT7nF,EAAqB,CAC9B,IAAI8nF,EAAY9qF,KAAK84C,eAAe0xC,EAAexqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,GAC/E06D,EAAgB/qF,KAAK84C,gBAAgB0xC,EAAe,MAASxqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,GAEjG,GAAIrwB,KAAK0iC,GAAGliC,OAAQ,CAIlB,IAFA+a,GADAgvE,EAAM,IAAIpnF,MAAM2nF,EAAUtqF,SAChBA,OAELqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB0iF,EAAI1iF,GAAKijF,EAAUjjF,IAAMijF,EAAUjjF,GAAKkjF,EAAcljF,MAAQ8nB,EAAe66D,GAAgBxqF,KAAK+lB,KAAKoM,WAAW9B,WAAa,KAGjI,QACD,CAED,OAAgBy6D,GAAmCn7D,EAAe66D,GAAgB,MAA9DM,EAAYC,EACjC,EAED,OAAO/qF,KAAK84C,iBAAiBnpB,EAAe86D,GAAiBH,EAAgBG,GAAiBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,EAC/H,CAED,SAAem2D,EAACxjF,EAAMgsB,EAAUq7D,GAC9B,IAAKrqF,KAAKmL,EACR,OAAWnL,KAAC0iC,GAGd1/B,EAAOA,EAAOA,EAAKsE,cAAgB,GACnC,IAQIgjF,EACAE,EAmBA3iF,IAEG0iF,EA9BS56D,EAAG3vB,KAAK+lB,KAAK8gB,cACzBhE,EAAY7iC,KAAK6iC,UACJ4nD,EAAG5nD,EAAU,GAAGx6B,EAEjC,GAAIsnB,GAAgB86D,EAClB,OAAOzqF,KAAK0iC,GA2Bd,GArBK2nD,EAcHG,EAAeC,GAHbH,EAHGt7D,EAGapjB,KAAKyT,IAAIrf,KAAKg4B,KAAKjS,KAAKoM,WAAW9B,UAAYrB,GAF/CpjB,KAAKmT,IAAI,EAAG/e,KAAKg4B,KAAKznB,KAAK4W,GAAKsjE,OAR7Cz7D,GAAYA,EAAW6T,EAAUriC,OAAS,KAC7CwuB,EAAW6T,EAAUriC,OAAS,GAIhC8pF,GADAE,EAAe3nD,EAAU7T,GAAU3mB,GACJoiF,GAepB,aAATznF,GAGF,GAFiB4I,KAAKiT,OAAO4rE,EAAgB96D,GAAgB26D,GAE5C,GAAM,EACrB,OAAWtqF,KAAC84C,iBAAiB2xC,EAAgB96D,GAAgB26D,EAAgBG,GAAiBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,OAE3H,IAAa,WAATrtB,EAAmB,CAC5B,IAAI2nF,EAAQ3qF,KAAK84C,eAAe2xC,EAAgBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,GACxEu6D,EAAG5qF,KAAK84C,eAAe0xC,EAAexqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,GAC1Ew6D,EAAU7qF,KAAK84C,gBAAgBwxC,GAAiBG,EAAgB96D,GAAgB26D,EAAgBG,GAAiBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,GACjJq6D,EAAU9+E,KAAKiT,OAAO4rE,EAAgB96D,GAAgB26D,GAAiB,EAE3E,GAAItqF,KAAK0iC,GAAGliC,OAAQ,CAIlB,IAFA+a,GADAgvE,EAAM,UAAUI,EAAMnqF,SACZA,OAELqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB0iF,EAAI1iF,GAAKgjF,EAAQhjF,IAAM+iF,EAAK/iF,GAAK8iF,EAAM9iF,IAAM6iF,EAG/C,OAAOH,CACR,CAED,UAAkBK,EAAOD,GAASD,CAC1C,CAAiB1nF,GAAS,aAATA,EAAqB,CAC9B,MAAiBhD,KAAK84C,eAAe2xC,EAAgBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,GACjF26D,EAAiBhrF,KAAK84C,gBAAgB2xC,EAAgB,MAASzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,GAEnG,GAAIrwB,KAAK0iC,GAAGliC,OAAQ,CAIlB,IAFA+a,GADAgvE,EAAM,UAAUU,EAAWzqF,SACjBA,OAELqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB0iF,EAAI1iF,GAAKojF,EAAWpjF,IAAMojF,EAAWpjF,GAAKmjF,EAAenjF,KAAO4iF,EAAgB96D,GAAgB,KAGlG,QACD,CAED,OAAiBs7D,GAAIA,EAAaD,IAAmBP,EAAgB96D,GAAgB,IACtF,EAED,OAAO3vB,KAAK84C,gBAAgBwxC,IAAkBG,EAAgB96D,GAAgB26D,EAAgBG,IAAkBzqF,KAAK+lB,KAAKoM,WAAW9B,UAAW,EACjJ,CAED,SAASu2D,EAAO97D,EAAOogE,GACrB,IAAKlrF,KAAKmL,EACR,OAAWnL,KAAC0iC,GAMd,GAHA5X,EAAyB,IAAhBA,GAAS,KAClBogE,EAAUt/E,KAAKiT,MAAMqsE,GAAW,KAEjB,EACb,OAAOlrF,KAAK0iC,GAGd,IAMS5hC,EAQMqqF,EAdAvqE,EAAG5gB,KAAK+lB,KAAK8gB,cAAgB7mC,KAAK+lB,KAAKoM,WAAW9B,UACpD6R,EAAGthB,EAAckK,EAE1BsgE,EAAkBF,EAAU,GADjBtqE,EAAckK,EACmBoX,IAAcgpD,EAAU,GAAK,IACrE,EACHpmE,EAAG,EAWR,IAPEhkB,EADEd,KAAK0iC,GAAGliC,OACFkd,iBAAiB,UAAW1d,KAAK0iC,GAAGliC,QAEpC,EAKHqH,EAAIqjF,GAAS,CAGlB,GAFAC,EAAcnrF,KAAK84C,eAAe5W,EAAYr6B,EAAIujF,GAE9CprF,KAAK0iC,GAAGliC,OACV,IAAKskB,EAAI,EAAGA,EAAI9kB,KAAK0iC,GAAGliC,OAAQskB,GAAK,EACnChkB,EAAMgkB,IAAMqmE,EAAYrmE,QAG1BhkB,GAASqqF,EAGXtjF,GAAK,CACN,CAED,GAAI7H,KAAK0iC,GAAGliC,OACV,IAAKskB,EAAI,EAAGA,EAAI9kB,KAAK0iC,GAAGliC,OAAQskB,GAAK,EACnChkB,EAAMgkB,IAAMomE,OAGdpqF,GAASoqF,EAGX,OAAYpqF,CACb,CAED,SAAgCuqF,EAACv8D,GAC1B9uB,KAAKsrF,0BACRtrF,KAAKsrF,wBAA0B,CAC7BlqF,EAAG,IAAI6sC,SAKX,IAAUiS,EAAGlgD,KAAKsrF,wBAAwBlqF,EAG1C,GAFA8+C,EAAO1O,eAAexxC,KAAKg4C,IAAIxxC,OAE3BxG,KAAKi4C,uBAAyB,EAAG,CACnC,IAAIszC,EAASvrF,KAAKsnB,EAAEwxB,eAAehqB,GACnCoxB,EAAOhR,WAAWq8C,EAAO,GAAKvrF,KAAKsnB,EAAE6f,MAAOokD,EAAO,GAAKvrF,KAAKsnB,EAAE6f,KAAMokD,EAAO,GAAKvrF,KAAKsnB,EAAE6f,KACzF,CAED,GAAInnC,KAAKi4C,uBAAyB,EAAG,CACnC,IAAIjF,EAAQhzC,KAAK2B,EAAEm3C,eAAehqB,GAClCoxB,EAAOlN,MAAMA,EAAM,GAAKhzC,KAAK2B,EAAEwlC,KAAM6L,EAAM,GAAKhzC,KAAK2B,EAAEwlC,KAAM6L,EAAM,GAAKhzC,KAAK2B,EAAEwlC,KAChF,CAED,GAAInnC,KAAKunB,IAAMvnB,KAAKi4C,uBAAyB,EAAG,CAC9C,IAAQnJ,EAAG9uC,KAAKunB,GAAGuxB,eAAehqB,GAC9BgxD,EAAW9/E,KAAKwnB,GAAGsxB,eAAehqB,GACtCoxB,EAAOlR,cAAcF,EAAO9uC,KAAKunB,GAAG4f,KAAM24C,EAAW9/E,KAAKwnB,GAAG2f,KAC9D,CAED,GAAInnC,KAAKqR,GAAKrR,KAAKi4C,uBAAyB,EAAG,CAC7C,IAAYmjC,EAAGp7E,KAAKqR,EAAEynC,eAAehqB,GACrCoxB,EAAOnN,QAAQqoC,EAAWp7E,KAAKqR,EAAE81B,KACzC,MAAa,IAAKnnC,KAAKqR,GAAKrR,KAAKi4C,uBAAyB,EAAG,CACrD,IAAauzC,EAAGxrF,KAAKu4C,GAAGO,eAAehqB,GACnC28D,EAAYzrF,KAAKs4C,GAAGQ,eAAehqB,GACnC48D,EAAY1rF,KAAKq4C,GAAGS,eAAehqB,GACnC68D,EAAc3rF,KAAK2sC,GAAGmM,eAAehqB,GACzCoxB,EAAOvR,SAAS68C,EAAYxrF,KAAKu4C,GAAGpR,MAAMuH,QAAQ+8C,EAAYzrF,KAAKs4C,GAAGnR,MAAMsH,QAAQi9C,EAAY1rF,KAAKq4C,GAAGlR,MAAMwH,SAASg9C,EAAY,GAAK3rF,KAAK2sC,GAAGxF,MAAMuH,QAAQi9C,EAAY,GAAK3rF,KAAK2sC,GAAGxF,MAAMsH,QAAQk9C,EAAY,GAAK3rF,KAAK2sC,GAAGxF,KAC/N,CAED,GAAInnC,KAAKuQ,KAAKnL,GAAKpF,KAAKuQ,KAAKnL,EAAEzD,EAAG,CAChC,MAAgB3B,KAAKk4C,GAAGY,eAAehqB,GAC1B88D,EAAG5rF,KAAKm4C,GAAGW,eAAehqB,GAEvC,GAAI9uB,KAAKuQ,KAAKnL,EAAEqsC,EAAG,CACjB,IAAIo6C,EAAY7rF,KAAKo4C,GAAGU,eAAehqB,GACvCoxB,EAAOhR,UAAU48C,EAAY9rF,KAAKk4C,GAAG/Q,KAAMykD,EAAY5rF,KAAKm4C,GAAGhR,MAAO0kD,EAAY7rF,KAAKo4C,GAAGjR,KACpG,MACU+Y,EAAOhR,UAAU48C,EAAY9rF,KAAKk4C,GAAG/Q,KAAMykD,EAAY5rF,KAAKm4C,GAAGhR,KAAM,EAE/E,KAAa,CACL,IAAYnnB,EAAGhgB,KAAKoF,EAAE0zC,eAAehqB,GACrCoxB,EAAOhR,UAAUlvB,EAAS,GAAKhgB,KAAKoF,EAAE+hC,KAAMnnB,EAAS,GAAKhgB,KAAKoF,EAAE+hC,MAAOnnB,EAAS,GAAKhgB,KAAKoF,EAAE+hC,KAC9F,CAED,QACD,CAED,SAAS4kD,IACP,OAAO/rF,KAAKoB,EAAE6oC,MAAM,WACrB,CAED,IAAIiP,EAAuBrB,yBAAyBqB,qBAEpDrB,yBAAyBqB,qBAAuB,SAAUlhB,EAAMznB,EAAMuG,GACpE,IAAI4E,EAAOw9B,EAAqBlhB,EAAMznB,EAAMuG,GAS5C,OAPI4E,EAAK8sB,kBAAkBhoC,OACzBkb,EAAKo9B,eAAiBuyC,EAAwB9+D,KAAK7Q,GAEnDA,EAAKo9B,eAAiBizC,EAA8Bx/D,KAAK7Q,GAG3DA,EAAK0iE,iBAAmB2L,kBAAkB3L,iBAC/B1iE,CACjB,EAEI,IAAIswE,EAAkB/pD,gBAAgBqG,QAEtCrG,gBAAgBqG,QAAU,SAAUtQ,EAAMznB,EAAMvN,EAAMmkC,EAAMrwB,GAC1D,IAAQ4E,EAAGswE,EAAgBh0D,EAAMznB,EAAMvN,EAAMmkC,EAAMrwB,GAI/C4E,EAAKisB,GACPjsB,EAAKo9B,eAAiBixC,kBAAkBjxC,eAAevsB,KAAK7Q,GAE5DA,EAAKo9B,eAAiBixC,kBAAkBI,qBAAqB59D,KAAK7Q,GAGpEA,EAAK0iE,iBAAmB2L,kBAAkB3L,iBAC1C1iE,EAAKgrE,QAAUA,EACfhrE,EAAK8qE,OAASA,EACd9qE,EAAKkrE,OAASA,EACdlrE,EAAK6+D,kBAAoBwP,kBAAkBxP,kBAAkBhuD,KAAK7Q,GAClEA,EAAKk/D,eAAiBmP,kBAAkBnP,eAAeruD,KAAK7Q,GAC5DA,EAAK8+D,QAAqB,IAAXjqE,EAAK+W,EAAU/W,EAAKpF,EAAE3K,OAAS,EAC9Ckb,EAAK8iE,cAAgBjuE,EAAKkxC,GAC1B,IAAI3gD,EAAQ,EAiBZ,OAfa,IAATkC,IACFlC,EAAQ4c,iBAAiB,UAAsB,IAAXnN,EAAK+W,EAAU/W,EAAKpF,EAAE,GAAGxJ,EAAEnB,OAAS+P,EAAKpF,EAAE3K,SAGjFkb,EAAKwuE,eAAiB,CACpB7lD,UAAWvpB,oBACX5M,UAAW,EACXpN,MAAOA,GAETipF,kBAAkBC,kBAAkBhyD,EAAMznB,EAAMmL,GAE5CA,EAAKvQ,GACP2L,EAAUgxB,mBAAmBpsB,GAGpBA,CACjB,EAwBI,IAAIuwE,EAAmCvhD,qBAAqBwhD,yBACxDC,EAA4CzhD,qBAAqB0hD,kCAErE,SAASC,IAAmB,CAE5BA,EAAiBhtF,UAAY,CAC3BsqC,SAAU,SAAkBjuB,EAAMoT,GAC5B9uB,KAAKmL,GACPnL,KAAKioC,WAGP,MAAI+B,EAAYhqC,KAAKoB,OAERb,IAATuuB,IACFkb,EAAYhqC,KAAK84C,eAAehqB,EAAM,IAIxC,IAAOvT,EAAGyuB,EAAUxN,QAChBmN,EAAWK,EAAUtuB,GACrB6e,EAASyP,EAAU5oC,EAChBwc,EAAGI,iBAAiBzC,GAE3B,IAAK1T,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EAEtB+V,EAAI/V,GADO,MAAT6T,GAAyB,MAATA,EACT,CAACiuB,EAAS9hC,GAAG,GAAK0yB,EAAO1yB,GAAG,GAAI8hC,EAAS9hC,GAAG,GAAK0yB,EAAO1yB,GAAG,IAE3D,CAAC8hC,EAAS9hC,GAAG,GAAI8hC,EAAS9hC,GAAG,IAI1C,QACD,EACD0yB,OAAQ,SAAgBzL,GACtB,OAAO9uB,KAAK2pC,SAAS,IAAK7a,EAC3B,EACD82D,WAAY,SAAoB92D,GAC9B,YAAY6a,SAAS,IAAK7a,EAC3B,EACD+2D,YAAa,SAAqB/2D,GAChC,OAAO9uB,KAAK2pC,SAAS,IAAK7a,EAC3B,EACDw9D,SAAU,WACR,YAAYlrF,EAAE4H,CACf,EACDujF,YAAa,SAAqB/tD,EAAM1P,GACtC,IAAakb,EAAGhqC,KAAKoB,OAERb,IAATuuB,IACFkb,EAAYhqC,KAAK84C,eAAehqB,EAAM,IAGnC9uB,KAAKwsF,kBACRxsF,KAAKwsF,gBAAkBxqD,IAAIzC,kBAAkByK,IAW/C,IARA,IAMM3kB,EANFoa,EAAiBz/B,KAAKwsF,gBACfvvD,EAAGwC,EAAexC,QACzBmC,EAAYK,EAAetC,YAAcqB,IACrC,IACEvB,EAAQz8B,OACGisF,EAAG,EAGjB5kF,EAAI0T,GAAK,CACd,GAAIkxE,EAAoBxvD,EAAQp1B,GAAGk1B,YAAcqC,EAAW,CAC1D,IAAastD,EAAG7kF,IACDmiC,EAAUhhC,GAAKnB,IAAM0T,EAAM,EAAI,EAAI1T,EAAI,EACvCs8B,GAAI/E,EAAYqtD,GAAqBxvD,EAAQp1B,GAAGk1B,YAC/D1X,EAAK2c,IAAIV,kBAAkB0I,EAAU5oC,EAAEsrF,GAAY1iD,EAAU5oC,EAAEurF,GAAW3iD,EAAU3+B,EAAEqhF,GAAY1iD,EAAUniC,EAAE8kF,GAAWxoD,EAAalH,EAAQp1B,IAC9I,KACZ,CACY4kF,GAAqBxvD,EAAQp1B,GAAGk1B,YAGlCl1B,GAAK,CACN,CAMD,OAJKwd,IACHA,EAAK2kB,EAAUhhC,EAAI,CAACghC,EAAU5oC,EAAE,GAAG,GAAI4oC,EAAU5oC,EAAE,GAAG,IAAM,CAAC4oC,EAAU5oC,EAAE4oC,EAAUxN,QAAU,GAAG,GAAIwN,EAAU5oC,EAAE4oC,EAAUxN,QAAU,GAAG,MAI1I,EACDowD,aAAc,SAAsBpuD,EAAM1P,EAAM+9D,GAElC,GAARruD,EAEFA,EAAOx+B,KAAKoB,EAAE4H,EACG,GAARw1B,IAETA,EAAO,MAGT,MAAUx+B,KAAKusF,YAAY/tD,EAAM1P,GAC1BiP,EAAG/9B,KAAKusF,YAAY/tD,EAAO,KAAO1P,KAC3BiP,EAAI,GAAKD,EAAI,GACvBgvD,EAAU/uD,EAAI,GAAKD,EAAI,GACvBivD,EAAYnhF,KAAK+S,KAAK/S,KAAK6S,IAAIuuE,EAAS,GAAKphF,KAAK6S,IAAIquE,EAAS,IAEnE,OAAkB,IAAdC,EACK,CAAC,EAAG,GAGmB,YAAfF,EAA2B,CAACG,EAAUD,EAAWD,EAAUC,GAAa,EAAED,EAAUC,EAAWC,EAAUD,EAE3H,EACDE,cAAe,SAAuBzuD,EAAM1P,GAC1C,OAAW9uB,KAAC4sF,aAAapuD,EAAM1P,EAAM,UACtC,EACDo+D,aAAc,SAAsB1uD,EAAM1P,GACxC,OAAW9uB,KAAC4sF,aAAapuD,EAAM1P,EAAM,SACtC,EACDsvD,iBAAkB2L,kBAAkB3L,iBACpCtlC,eAAgBixC,kBAAkBI,sBAEpChvE,gBAAgB,CAACkxE,GAAmBJ,GACpC9wE,gBAAgB,CAACkxE,GAAmBF,GACpCA,EAA0C9sF,UAAUy5C,eA5IpD,SAA6BzW,GAmB3B,OAjBKriC,KAAKkqF,iBACRlqF,KAAKkqF,eAAiB,CACpBiD,WAAYpjD,UAAUE,MAAMjqC,KAAK0iC,IACjCx0B,UAAW,EACXk/E,SAAUtyE,sBAIdunB,GAAYriC,KAAKg4B,KAAK7F,WAAW9B,WACjCgS,GAAYriC,KAAKwiC,cAEAxiC,KAAKkqF,eAAekD,WACnCptF,KAAKkqF,eAAeh8E,UAAYlO,KAAKkqF,eAAekD,SAAW/qD,EAAWriC,KAAK+mC,SAAS74B,UAAY,EACpGlO,KAAKkqF,eAAekD,SAAW/qD,EAC/BriC,KAAK2qC,iBAAiBtI,EAAUriC,KAAKkqF,eAAeiD,WAAYntF,KAAKkqF,sBAG3DA,eAAeiD,UAC5B,EAyHDhB,EAA0C9sF,UAAU4mF,mBAAqB9C,kBAAkB8C,mBAC3F,IAAwBoH,EAAG3iD,qBAAqByhB,aAEhDzhB,qBAAqByhB,aAAe,SAAUn0B,EAAMznB,EAAMvN,EAAM4a,EAAK0vE,GACnE,IAAQ5xE,EAAG2xE,EAAqBr1D,EAAMznB,EAAMvN,EAAM4a,EAAK0vE,GAcvD,OAbA5xE,EAAK8iE,cAAgBjuE,EAAKkxC,GAC1B/lC,EAAK8rB,MAAO,EAEC,IAATxkC,EACF+mF,kBAAkBC,kBAAkBhyD,EAAMznB,EAAK8U,GAAI3J,GACjC,IAAT1Y,GACT+mF,kBAAkBC,kBAAkBhyD,EAAMznB,EAAK2V,GAAIxK,GAGjDA,EAAKvQ,GACP6sB,EAAK8P,mBAAmBpsB,GAGnBA,CACb,CACG,CAED,wBACE0uE,sBACD,CAED,wBAWEpuB,aAAa38D,UAAUkuF,mBAAqB,SAAUluB,EAAczZ,GAClE,IAAIrjB,EAAWviC,KAAKwtF,oBAAoB5nC,GAExC,GAAIyZ,EAAah3D,IAAMk6B,EAAU,CAC/B,IAAIq/B,EAAU,CAAE,EAIhB,OAHA5hE,KAAKq9D,SAASuE,EAASvC,GACvBuC,EAAQv5D,EAAIk6B,EAAS3hC,WACrBghE,EAAQ15C,YAAa,GAEtB,CAED,OAAmBm3C,CACzB,EAEIrD,aAAa38D,UAAUi+D,eAAiB,WACtC,IAAImwB,EAAcztF,KAAKk/D,kBACLwuB,EAAG1tF,KAAKgqF,oBAE1B,OADAhqF,KAAK2nC,GAAK8lD,GAAeC,EAClB1tF,KAAK2nC,EAClB,EAEIq0B,aAAa38D,UAAU2qF,kBA/BvB,WACE,OAAIhqF,KAAKuQ,KAAKtE,EAAE0uB,GACd36B,KAAKwtF,oBAAsBrK,kBAAkB8C,mBAAmB15D,KAAKvsB,KAA1CmjF,CAAgDnjF,KAAKg4B,KAAMh4B,KAAKuQ,KAAKtE,EAAGjM,MACnGA,KAAK4nC,UAAU5nC,KAAKutF,mBAAmBhhE,KAAKvsB,QACjC,GAGN,IACR,CAwBF,CAED,SAAS2tF,aACPC,cACD,CAED,SAASC,uBAoBT,SAASC,cAAch0E,EAAQi5C,EAAe/6B,EAAMlS,EAAIstC,GACtDpzD,KAAK+yD,cAAgBA,EACrB,IAAiBJ,EAAGpvC,SAAS,iBAC7BovC,EAAczwD,aAAa,OAAQ,UACnCywD,EAAczwD,aAAa,8BAA+B,aAC1DywD,EAAczwD,aAAa,SAAU,wFACrCywD,EAAczwD,aAAa,SAAU4jB,EAAK,WAC1ChM,EAAO1X,YAAYuwD,IACnBA,EAAgBpvC,SAAS,kBACXrhB,aAAa,OAAQ,UACnCywD,EAAczwD,aAAa,8BAA+B,QAC1DywD,EAAczwD,aAAa,SAAU,2CACrCywD,EAAczwD,aAAa,SAAU4jB,EAAK,WAC1ChM,EAAO1X,YAAYuwD,GACnB3yD,KAAK+tF,aAAep7B,EACpB,IAAWq7B,EAAGhuF,KAAKiuF,gBAAgBnoE,EAAI,CAACstC,EAAQttC,EAAK,UAAWA,EAAK,YACrEhM,EAAO1X,YAAY4rF,EACpB,CAaD,SAASE,cAAcp0E,EAAQi5C,EAAe/6B,EAAMlS,GAClD9lB,KAAK+yD,cAAgBA,EACrB,IAAiBJ,EAAGpvC,SAAS,iBAC7BovC,EAAczwD,aAAa,OAAQ,UACnCywD,EAAczwD,aAAa,8BAA+B,QAC1DywD,EAAczwD,aAAa,SAAU,2CACrCywD,EAAczwD,aAAa,SAAU4jB,GACrChM,EAAO1X,YAAYuwD,GACnB3yD,KAAK+tF,aAAep7B,CACrB,CAUD,SAAwBw7B,gBAACz7B,EAAKK,EAAe/6B,GAC3Ch4B,KAAKouF,aAAc,EACnBpuF,KAAK+yD,cAAgBA,EACrB/yD,KAAKg4B,KAAOA,EACZh4B,KAAKkrC,MAAQ,EACd,CAgID,SAAyBmjD,iBAACv0E,EAAQi5C,EAAe/6B,EAAMlS,GACrD9lB,KAAK+yD,cAAgBA,EACrB,MAAoBxvC,SAAS,iBAC7BovC,EAAczwD,aAAa,OAAQ,UACnCywD,EAAczwD,aAAa,8BAA+B,aAC1DywD,EAAczwD,aAAa,SAAU,wFACrC4X,EAAO1X,YAAYuwD,GACnB,MAA0BpvC,SAAS,uBACnC+qE,EAAoBpsF,aAAa,8BAA+B,QAChEosF,EAAoBpsF,aAAa,SAAU4jB,GAC3C9lB,KAAK+tF,aAAeO,EACpB,IAAWC,EAAGhrE,SAAS,WACvBgrE,EAAQrsF,aAAa,OAAQ,SAC7BosF,EAAoBlsF,YAAYmsF,GAChCvuF,KAAKuuF,QAAUA,EACf,IAAIC,EAAUjrE,SAAS,WACvBirE,EAAQtsF,aAAa,OAAQ,SAC7BosF,EAAoBlsF,YAAYosF,GAChCxuF,KAAKwuF,QAAUA,EACf,IAAWC,EAAGlrE,SAAS,WACvBkrE,EAAQvsF,aAAa,OAAQ,SAC7BosF,EAAoBlsF,YAAYqsF,GAChCzuF,KAAKyuF,QAAUA,EACf30E,EAAO1X,YAAYksF,EACpB,CAgBD,SAA2BI,mBAAC50E,EAAQi5C,EAAe/6B,EAAMlS,GACvD9lB,KAAK+yD,cAAgBA,EACrB,MAAqB/yD,KAAK+yD,cAAcrI,eACjB4jC,EAAG/qE,SAAS,wBAE/BmnC,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,KACzRpB,KAAKuuF,QAAUvuF,KAAK2uF,aAAa,UAAWL,KAI1C5jC,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,KACzRpB,KAAKwuF,QAAUxuF,KAAK2uF,aAAa,UAAWL,KAI1C5jC,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,KACzRpB,KAAKyuF,QAAUzuF,KAAK2uF,aAAa,UAAWL,KAI1C5jC,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,GAAWspD,EAAe,IAAItlD,EAAE+F,GAAgC,IAA3Bu/C,EAAe,IAAItlD,EAAEhE,KACzRpB,KAAK4uF,QAAU5uF,KAAK2uF,aAAa,UAAWL,KAI1CtuF,KAAKuuF,SAAWvuF,KAAKwuF,SAAWxuF,KAAKyuF,SAAWzuF,KAAK4uF,WACvDN,EAAoBpsF,aAAa,8BAA+B,QAChE4X,EAAO1X,YAAYksF,KAGjB5jC,EAAe,GAAGtlD,EAAE+F,GAA+B,IAA1Bu/C,EAAe,GAAGtlD,EAAEhE,GAAWspD,EAAe,GAAGtlD,EAAE+F,GAA+B,IAA1Bu/C,EAAe,GAAGtlD,EAAEhE,GAAWspD,EAAe,GAAGtlD,EAAE+F,GAA+B,IAA1Bu/C,EAAe,GAAGtlD,EAAEhE,GAAWspD,EAAe,GAAGtlD,EAAE+F,GAA+B,IAA1Bu/C,EAAe,GAAGtlD,EAAEhE,GAAWspD,EAAe,GAAGtlD,EAAE+F,GAA+B,IAA1Bu/C,EAAe,GAAGtlD,EAAEhE,MAC/QktF,EAAsB/qE,SAAS,wBACXrhB,aAAa,8BAA+B,QAChEosF,EAAoBpsF,aAAa,SAAU4jB,GAC3ChM,EAAO1X,YAAYksF,GACnBtuF,KAAK6uF,gBAAkB7uF,KAAK2uF,aAAa,UAAWL,GACpDtuF,KAAK8uF,gBAAkB9uF,KAAK2uF,aAAa,UAAWL,GACpDtuF,KAAK+uF,gBAAkB/uF,KAAK2uF,aAAa,UAAWL,GAEvD,CA4ED,SAA4BU,oBAACl1E,EAAQi5C,EAAe/6B,EAAMlS,EAAIstC,GAC5D,IAAoB67B,EAAGl8B,EAAcj8C,UAAUqb,WAAWy3B,aAAa6e,WACnEA,EAAa1V,EAAcxiD,KAAK8wD,IAAM4tB,EAC1Cn1E,EAAO5X,aAAa,IAAKumE,EAAW9tC,GAAKs0D,EAAiBt0D,GAC1D7gB,EAAO5X,aAAa,IAAKumE,EAAWvkC,GAAK+qD,EAAiB/qD,GAC1DpqB,EAAO5X,aAAa,QAASumE,EAAW39C,OAASmkE,EAAiBnkE,OAClEhR,EAAO5X,aAAa,SAAUumE,EAAW19C,QAAUkkE,EAAiBlkE,QACpE/qB,KAAK+yD,cAAgBA,EACrB,IAAkBm8B,EAAG3rE,SAAS,kBAC9B2rE,EAAehtF,aAAa,KAAM,eAClCgtF,EAAehtF,aAAa,SAAU4jB,EAAK,kBAC3CopE,EAAehtF,aAAa,eAAgB,KAC5ClC,KAAKkvF,eAAiBA,EACtBp1E,EAAO1X,YAAY8sF,GACnB,MAAe3rE,SAAS,YACxB4rE,EAASjtF,aAAa,KAAM,MAC5BitF,EAASjtF,aAAa,KAAM,KAC5BitF,EAASjtF,aAAa,KAAM4jB,EAAK,kBACjCqpE,EAASjtF,aAAa,SAAU4jB,EAAK,kBACrC9lB,KAAKmvF,SAAWA,EAChBr1E,EAAO1X,YAAY+sF,GACnB,IAAIC,EAAU7rE,SAAS,WACvB6rE,EAAQltF,aAAa,cAAe,WACpCktF,EAAQltF,aAAa,gBAAiB,KACtCktF,EAAQltF,aAAa,SAAU4jB,EAAK,kBACpC9lB,KAAKovF,QAAUA,EACft1E,EAAO1X,YAAYgtF,GACnB,IAAeC,EAAG9rE,SAAS,eAC3B8rE,EAAYntF,aAAa,KAAM4jB,EAAK,kBACpCupE,EAAYntF,aAAa,MAAO4jB,EAAK,kBACrCupE,EAAYntF,aAAa,WAAY,MACrCmtF,EAAYntF,aAAa,SAAU4jB,EAAK,kBACxChM,EAAO1X,YAAYitF,GACnB,IAAWrB,EAAGhuF,KAAKiuF,gBAAgBnoE,EAAI,CAACA,EAAK,iBAAkBstC,IAC/Dt5C,EAAO1X,YAAY4rF,EACpB,CAtYDH,oBAAoBxuF,UAAY,CAC9B4uF,gBAAiB,SAAyBqB,EAAUC,GAClD,QAAWvB,EAAGzqE,SAAS,WAKvB,IAJAyqE,EAAQ9rF,aAAa,SAAUotF,GAI1BznF,EAAI,EAAGA,EAAI0nF,EAAI/uF,OAAQqH,GAAK,GAC/B2nF,EAAcjsE,SAAS,gBACXrhB,aAAa,KAAMqtF,EAAI1nF,IACnCmmF,EAAQ5rF,YAAYotF,GACpBxB,EAAQ5rF,YAAYotF,GAGtB,OAAcxB,CACf,GAsBH7yE,gBAAgB,CAAC0yE,qBAAsBC,eAEvCA,cAAczuF,UAAU41B,YAAc,SAAU0jB,GAC9C,GAAIA,GAAe34C,KAAK+yD,cAAc3rB,KAAM,CAC1C,MAAiBpnC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,IACvCpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,IAC1CpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAI,IACzDpB,KAAK+tF,aAAa7rF,aAAa,SAAUutF,EAAW,GAAKC,EAAW,GAAK,UAAYA,EAAW,GAAK,KAAOD,EAAW,GAAKC,EAAW,IAAM,UAAYA,EAAW,GAAK,KAAOD,EAAW,GAAKC,EAAW,IAAM,UAAYA,EAAW,GAAK,UAAY/f,EAAU,KACpQ,CACL,EAaEue,cAAc7uF,UAAU41B,YAAc,SAAU0jB,GAC9C,GAAIA,GAAe34C,KAAK+yD,cAAc3rB,KAAM,CAC1C,MAAYpnC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,IACrCpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EACrDpB,KAAK+tF,aAAa7rF,aAAa,SAAU,WAAamgB,EAAM,GAAK,YAAcA,EAAM,GAAK,YAAcA,EAAM,GAAK,UAAYstD,EAAU,KAC1I,CACL,EASEwe,gBAAgB9uF,UAAUsuF,WAAa,WACrC,IACI5pE,QADA4rE,EAAe3vF,KAAKg4B,KAAK62B,aAAawnB,UAAYr2E,KAAKg4B,KAAK62B,aAAax/C,WAmB7E,IAbiD,IAA7CrP,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,GACzCma,EAAMvb,KAAKg4B,KAAK+1B,YAAY7oC,gBAAgB1kB,OAC5CqH,EAAI,GAGJ0T,EAAU,GADV1T,EAAI7H,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAI,IAIjDwuF,EAAYrsE,SAAS,MACXrhB,aAAa,OAAQ,QAC/B0tF,EAAU1tF,aAAa,iBAAkB,SACzC0tF,EAAU1tF,aAAa,oBAAqB,GAEpC2F,EAAI0T,EAAK1T,GAAK,EACpBkc,EAAOR,SAAS,QAChBqsE,EAAUxtF,YAAY2hB,GACtB/jB,KAAKkrC,MAAMlmC,KAAK,CACdI,EAAG2e,EACH/T,EAAGnI,IAIP,GAAkD,IAA9C7H,KAAK+yD,cAAcrI,eAAe,IAAItlD,EAAEhE,EAAS,CACnD,MAAWmiB,SAAS,UACX5B,kBACTirC,EAAK1qD,aAAa,KAAM4jB,GACxB8mC,EAAK1qD,aAAa,YAAa,SAC/B0qD,EAAKxqD,YAAYwtF,GACjB5vF,KAAKg4B,KAAK7F,WAAWC,KAAKhwB,YAAYwqD,GACtC,IAAI7qC,EAAIwB,SAAS,KAGjB,IAFAxB,EAAE7f,aAAa,OAAQ,OAAS4qD,kBAAoB,IAAMhnC,EAAK,KAExD6pE,EAAa,IAClB5tE,EAAE3f,YAAYutF,EAAa,IAG7B3vF,KAAKg4B,KAAK62B,aAAazsD,YAAY2f,GACnC/hB,KAAKq1D,OAASzI,EACdgjC,EAAU1tF,aAAa,SAAU,OACvC,MAAW,GAAkD,IAA9ClC,KAAK+yD,cAAcrI,eAAe,IAAItlD,EAAEhE,GAAyD,IAA9CpB,KAAK+yD,cAAcrI,eAAe,IAAItlD,EAAEhE,EAAS,CAC7G,GAAkD,IAA9CpB,KAAK+yD,cAAcrI,eAAe,IAAItlD,EAAEhE,EAG1C,IAFAuuF,EAAe3vF,KAAKg4B,KAAK62B,aAAawnB,UAAYr2E,KAAKg4B,KAAK62B,aAAax/C,WAElEsgF,EAAanvF,QAClBR,KAAKg4B,KAAK62B,aAAajG,YAAY+mC,EAAa,IAIpD3vF,KAAKg4B,KAAK62B,aAAazsD,YAAYwtF,GACnC5vF,KAAKg4B,KAAK62B,aAAaplD,gBAAgB,QACvCmmF,EAAU1tF,aAAa,SAAU,OAClC,CAEDlC,KAAKouF,aAAc,EACnBpuF,KAAK6vF,WAAaD,CACtB,EAEEzB,gBAAgB9uF,UAAU41B,YAAc,SAAU0jB,GAKhD,IAAK9wC,EAJA7H,KAAKouF,aACRpuF,KAAK2tF,aAIP,MAEQ5pE,EAFDxI,EAAGvb,KAAKkrC,MAAM1qC,OAIrB,IAAKqH,EAAI,EAAGA,EAAI0T,EAAK1T,GAAK,EACxB,IAAyB,IAArB7H,KAAKkrC,MAAMrjC,GAAGmI,IAChB48C,EAAO5sD,KAAKg4B,KAAK+1B,YAAYlC,SAAS7rD,KAAKkrC,MAAMrjC,GAAGmI,GACpD+T,EAAO/jB,KAAKkrC,MAAMrjC,GAAGzC,GAEjBuzC,GAAe34C,KAAK+yD,cAAc3rB,MAAQwlB,EAAKlxC,KAAK0rB,OACtDrjB,EAAK7hB,aAAa,IAAK0qD,EAAKR,UAG1BzT,GAAe34C,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,MAAQpnC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,MAAQpnC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,MAAQpnC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,MAAQwlB,EAAKlxC,KAAK0rB,MAAM,CAC7N,MAEA,GAAiD,IAA7CpnC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,GAAwD,MAA7CpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAW,CACtG,IAAKO,EAAkG,IAA/FiK,KAAKqT,IAAIjf,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAGpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,KACK,IAA/FwK,KAAKmT,IAAI/e,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAGpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,GAC9FwM,EAAImW,EAAK+rE,iBACbC,EAAiB,SAAWniF,EAAIjM,EAAI,IACpC,IAGKmjB,EAHDkrE,EAAapiF,GAAKlK,EAAI/B,GACf+xB,EAAG,EAA+C,EAA3C1zB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAQpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAI,IACxG6uF,EAAQrkF,KAAKiT,MAAMmxE,EAAat8D,GAGpC,IAAK5O,EAAI,EAAGA,EAAImrE,EAAOnrE,GAAK,EAC1BirE,GAAkB,KAAkD,EAA3C/vF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAQpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAI,IAAO,IAG5H2uF,GAAkB,KAAW,GAAJniF,EAAS,MAC9C,MACYmiF,EAAiB,KAAkD,EAA3C/vF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAQpB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAI,IAGpH2iB,EAAK7hB,aAAa,mBAAoB6tF,EACvC,CAYL,IARIp3C,GAAe34C,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,OACxDpnC,KAAK6vF,WAAW3tF,aAAa,eAA2D,EAA3ClC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,IAGlFu3C,GAAe34C,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,OACxDpnC,KAAK6vF,WAAW3tF,aAAa,UAAWlC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,IAG/B,IAA9CpB,KAAK+yD,cAAcrI,eAAe,IAAItlD,EAAEhE,GAAyD,IAA9CpB,KAAK+yD,cAAcrI,eAAe,IAAItlD,EAAEhE,KACzFu3C,GAAe34C,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,MAAM,CAC9D,IAAI/kB,EAAQriB,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EACnDpB,KAAK6vF,WAAW3tF,aAAa,SAAU,OAAS0c,QAAmB,IAAXyD,EAAM,IAAY,IAAMzD,QAAmB,IAAXyD,EAAM,IAAY,IAAMzD,QAAmB,IAAXyD,EAAM,IAAY,IAC3I,CAEP,EA4BEgsE,iBAAiBhvF,UAAU41B,YAAc,SAAU0jB,GACjD,GAAIA,GAAe34C,KAAK+yD,cAAc3rB,KAAM,CAC1C,IAAU8oD,EAAGlwF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAC1C+uF,EAAGnwF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAC1CgvF,EAAGpwF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAChDivF,EAASD,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,KAC3CE,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GAC9CI,EAAGF,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACxDlwF,KAAKuuF,QAAQrsF,aAAa,cAAemuF,GACzCrwF,KAAKwuF,QAAQtsF,aAAa,cAAequF,GACzCvwF,KAAKyuF,QAAQvsF,aAAa,cAAeouF,EAC1C,CACL,EA2CE5B,mBAAmBrvF,UAAUsvF,aAAe,SAAU3rF,EAAMsrF,GAC1D,IAAI54B,EAASnyC,SAASvgB,GAGtB,OAFA0yD,EAAOxzD,aAAa,OAAQ,SAC5BosF,EAAoBlsF,YAAYszD,GACzBA,CACX,EAEEg5B,mBAAmBrvF,UAAUmxF,cAAgB,SAAUC,EAAYC,EAAYC,EAAOC,EAAaC,GAcjG,IAbA,IAEQryD,EAMMsyD,EARVhnD,EAAM,EAGH7qB,EAAGrT,KAAKqT,IAAIwxE,EAAYC,GAC3B3xE,EAAMnT,KAAKmT,IAAI0xE,EAAYC,GAC3BK,EAAQ5tF,MAAMiF,KAAK,KAAM,CAC3B5H,OALa,MAQX0oC,EAAM,EACK8nD,EAAGH,EAAcD,IACfF,EAAaD,EAEvB3mD,GAAO,KAIVgnD,GAHFtyD,EAAOsL,EAAM,MAED7qB,EACGgyE,EAAa,EAAIJ,EAAcD,EACnCpyD,GAAQzf,EACJkyE,EAAa,EAAIL,EAAcC,EAE/BD,EAAcI,EAAcplF,KAAK6S,KAAK+f,EAAOiyD,GAAcQ,EAAY,EAAIN,GAG1FI,EAAM7nD,GAAO4nD,EACb5nD,GAAO,EACPY,GAAO,IAAG,IAGZ,OAAYinD,EAACxnE,KAAK,IACtB,EAEEmlE,mBAAmBrvF,UAAU41B,YAAc,SAAU0jB,GACnD,GAAIA,GAAe34C,KAAK+yD,cAAc3rB,KAAM,CAC1C,MACkBsjB,EAAG1qD,KAAK+yD,cAAcrI,eAEpC1qD,KAAK6uF,kBAAoBl2C,GAAe+R,EAAe,GAAGtlD,EAAEgiC,MAAQsjB,EAAe,GAAGtlD,EAAEgiC,MAAQsjB,EAAe,GAAGtlD,EAAEgiC,MAAQsjB,EAAe,GAAGtlD,EAAEgiC,MAAQsjB,EAAe,GAAGtlD,EAAEgiC,QAC9K9nB,EAAMtf,KAAKwwF,cAAc9lC,EAAe,GAAGtlD,EAAEhE,EAAGspD,EAAe,GAAGtlD,EAAEhE,EAAGspD,EAAe,GAAGtlD,EAAEhE,EAAGspD,EAAe,GAAGtlD,EAAEhE,EAAGspD,EAAe,GAAGtlD,EAAEhE,GACzIpB,KAAK6uF,gBAAgB3sF,aAAa,cAAeod,GACjDtf,KAAK8uF,gBAAgB5sF,aAAa,cAAeod,GACjDtf,KAAK+uF,gBAAgB7sF,aAAa,cAAeod,IAG/Ctf,KAAKuuF,UAAY51C,GAAe+R,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,QAC3K9nB,EAAMtf,KAAKwwF,cAAc9lC,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,GAC9IpB,KAAKuuF,QAAQrsF,aAAa,cAAeod,IAGvCtf,KAAKwuF,UAAY71C,GAAe+R,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,QAC3K9nB,EAAMtf,KAAKwwF,cAAc9lC,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,GAC9IpB,KAAKwuF,QAAQtsF,aAAa,cAAeod,IAGvCtf,KAAKyuF,UAAY91C,GAAe+R,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,QAC3K9nB,EAAMtf,KAAKwwF,cAAc9lC,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,GAC9IpB,KAAKyuF,QAAQvsF,aAAa,cAAeod,IAGvCtf,KAAK4uF,UAAYj2C,GAAe+R,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,MAAQsjB,EAAe,IAAItlD,EAAEgiC,QAC3K9nB,EAAMtf,KAAKwwF,cAAc9lC,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,EAAGspD,EAAe,IAAItlD,EAAEhE,GAC9IpB,KAAK4uF,QAAQ1sF,aAAa,cAAeod,GAE5C,CACL,EAuCEnE,gBAAgB,CAAC0yE,qBAAsBmB,qBAEvCA,oBAAoB3vF,UAAU41B,YAAc,SAAU0jB,GACpD,GAAIA,GAAe34C,KAAK+yD,cAAc3rB,KAAM,CAK1C,IAJIuR,GAAe34C,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,OACxDpnC,KAAKkvF,eAAehtF,aAAa,eAAgBlC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAI,GAG1Fu3C,GAAe34C,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,KAAM,CAC9D,IAAO8pD,EAAGlxF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EACjDpB,KAAKovF,QAAQltF,aAAa,cAAewgB,SAAS9W,KAAKkU,MAAe,IAAToxE,EAAI,IAAWtlF,KAAKkU,MAAe,IAAToxE,EAAI,IAAWtlF,KAAKkU,MAAe,IAAToxE,EAAI,KACtH,CAMD,IAJIv4C,GAAe34C,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,OACxDpnC,KAAKovF,QAAQltF,aAAa,gBAAiBlC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAI,KAGpFu3C,GAAe34C,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,MAAQpnC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEgiC,KAAM,CAC7G,MAAepnC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAClD4rC,GAAShtC,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAI,IAAMqe,UAC1Dkb,EAAI6nB,EAAW52C,KAAK06B,IAAI0G,KACpBwV,EAAW52C,KAAKq6B,IAAI+G,GAC5BhtC,KAAKmvF,SAASjtF,aAAa,KAAMy4B,GACjC36B,KAAKmvF,SAASjtF,aAAa,KAAMgiC,EAClC,CACF,CACL,EAEE,IAAoBitD,iBAAG,GAEvB,SAAwBC,gBAACC,EAAYt+B,EAAe/6B,GAClDh4B,KAAKouF,aAAc,EACnBpuF,KAAK+yD,cAAgBA,EACrB/yD,KAAKqxF,WAAaA,EAClBrxF,KAAKg4B,KAAOA,EACZA,EAAKg8B,aAAezwC,SAAS,KAC7ByU,EAAKg8B,aAAa5xD,YAAY41B,EAAK62B,cACnC72B,EAAKg8B,aAAa5xD,YAAY41B,EAAKi8B,oBACnCj8B,EAAK42B,YAAc52B,EAAKg8B,YACzB,CAqGD,SAASs9B,sBAAsBx3E,EAAQi5C,EAAe/6B,EAAMlS,GAE1DhM,EAAO5X,aAAa,IAAK,SACzB4X,EAAO5X,aAAa,IAAK,SACzB4X,EAAO5X,aAAa,QAAS,QAC7B4X,EAAO5X,aAAa,SAAU,QAC9BlC,KAAK+yD,cAAgBA,EACrB,MAAqBxvC,SAAS,kBAC9B2rE,EAAehtF,aAAa,SAAU4jB,GACtChM,EAAO1X,YAAY8sF,GACnBlvF,KAAKkvF,eAAiBA,CACvB,CAsDD,OApKAkC,gBAAgB/xF,UAAUkyF,WAAa,SAAU3kC,GAI/C,IAHA,IAAK/kD,EAAG,EACJ0T,EAAM41E,iBAAiB3wF,OAEpBqH,EAAI0T,GAAK,CACd,GAAI41E,iBAAiBtpF,KAAO+kD,EAC1B,wBAAwB/kD,GAG1BA,GAAK,CACN,CAED,OAAW,IACf,EAEEupF,gBAAgB/xF,UAAUmyF,gBAAkB,SAAU5kC,EAAM6kC,GAC1D,IAAIx/E,EAAa26C,EAAKiC,aAAa58C,WAEnC,GAAKA,EAAL,CAQA,IAJA,IAYay/E,EAZTrb,EAAWpkE,EAAWokE,SACtBxuE,EAAI,EACJ0T,EAAM86D,EAAS71E,OAEZqH,EAAI0T,GACL86D,EAASxuE,KAAO+kD,EAAKiC,cAIzBhnD,GAAK,EAKHA,GAAK0T,EAAM,IACbm2E,EAAYrb,EAASxuE,EAAI,IAG3B,IAAW8pF,EAAGpuE,SAAS,OACvBouE,EAAQzvF,aAAa,OAAQ,IAAMuvF,GAE/BC,EACFz/E,EAAW2B,aAAa+9E,EAASD,GAEjCz/E,EAAW7P,YAAYuvF,EA1BxB,CA4BL,EAEEP,gBAAgB/xF,UAAUuyF,iBAAmB,SAAU55D,EAAM40B,GAC3D,IAAK5sD,KAAKuxF,WAAW3kC,GAAO,CAC1B,IAAI6kC,EAAW9vE,kBACL0zC,EAAG9xC,SAAS,QACtB8xC,EAAOnzD,aAAa,KAAM0qD,EAAKC,SAC/BwI,EAAOnzD,aAAa,YAAa,SAEjCivF,iBAAiBnsF,KAAK4nD,GAEtB,IAAQx6B,EAAG4F,EAAK7F,WAAWC,KAC3BA,EAAKhwB,YAAYizD,GACjB,IAAUw8B,EAAGtuE,SAAS,UACtBsuE,EAAO3vF,aAAa,KAAMuvF,GAC1BzxF,KAAKwxF,gBAAgB5kC,EAAM6kC,GAC3BI,EAAOzvF,YAAYwqD,EAAKiC,cACxBz8B,EAAKhwB,YAAYyvF,GACjB,IAAIF,EAAUpuE,SAAS,OACvBouE,EAAQzvF,aAAa,OAAQ,IAAMuvF,GACnCp8B,EAAOjzD,YAAYuvF,GACnB/kC,EAAKr8C,KAAKmkD,IAAK,EACf9H,EAAK11B,MACN,CAEDc,EAAK49B,SAAShJ,EAAKC,QACvB,EAEEukC,gBAAgB/xF,UAAUsuF,WAAa,WAMrC,IALA,MAAU3tF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAC7C+W,EAAWnY,KAAKg4B,KAAKjS,KAAK5N,SAC1BtQ,EAAI,EACJ0T,EAAMpD,EAAS3X,OAEZqH,EAAI0T,GACLpD,EAAStQ,IAAMsQ,EAAStQ,GAAG0I,KAAKwzB,MAAQA,GAC1C/jC,KAAK4xF,iBAAiB5xF,KAAKg4B,KAAM7f,EAAStQ,IAG5CA,GAAK,EAGP7H,KAAKouF,aAAc,CACvB,EAEEgD,gBAAgB/xF,UAAU41B,YAAc,WACjCj1B,KAAKouF,aACRpuF,KAAK2tF,YAEX,EAeE2D,sBAAsBjyF,UAAU41B,YAAc,SAAU0jB,GACtD,GAAIA,GAAe34C,KAAK+yD,cAAc3rB,KAAM,CAE1C,IACS0qD,EADgB,GACb9xF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAO/C2wF,EAAa/xF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EACpD4wF,EAAuB,GAAdD,EAAkB,EAAID,EAE/BG,EAAuB,GAAdF,EAAkB,EAAID,EAEnC9xF,KAAKkvF,eAAehtF,aAAa,eAAgB8vF,EAAS,IAAMC,GAKhE,IAAIC,EAAuD,GAA5ClyF,KAAK+yD,cAAcrI,eAAe,GAAGtlD,EAAEhE,EAAS,OAAS,YAExEpB,KAAKkvF,eAAehtF,aAAa,WAAYgwF,EAC9C,CACL,EAEEniE,iBAAiB,SAAU+6C,gBAC3B/6C,iBAAiB,OAAQ+7C,gBACzB/7C,iBAAiB,MAAO23C,aAExBzyB,eAAeE,iBAAiB,KAAMG,cACtCL,eAAeE,iBAAiB,KAAMI,wBACtCN,eAAeE,iBAAiB,KAAMuK,kBACtCzK,eAAeE,iBAAiB,KAAMgE,sBACtClE,eAAeE,iBAAiB,KAAM0G,gBACtC5G,eAAeE,iBAAiB,KAAMiK,oBAEtCt8B,qBAAqBw2D,aACrBr2D,wBAAwBg+D,cACxBkR,eACAxE,aAEAyE,eAAe,GAAItE,eAAe,GAClCsE,eAAe,GAAIlE,eAAe,GAClCkE,eAAe,GAAIjE,iBAAiB,GACpCiE,eAAe,GAAI/D,kBAAkB,GACrC+D,eAAe,GAAI1D,oBAAoB,GACvC0D,eAAe,GAAIpD,qBAAqB,GACxCoD,eAAe,GAAIhB,iBAAiB,GACpCgB,eAAe,GAAId,uBAAuB,GAE7Bl+C,MAEf,EAr7lBiEi/C,OAAiBt9C,QAAAt6B,sFCKlFjZ,OAAeR,IAAGsxF,oBAAAA,kBAAAC,uBAAA,CAAA,wqHCINC,YAWAC,SAMAC,aAkBN,SAAUC,SAAS91E,GACvB,GAAmB,iBAARA,EACT,OAAOA,EAGT,IACE,OAAOzZ,KAAKK,MAAMoZ,EAMnB,CALC,MAAOnZ,GAIP,OAFoB,IAAI8gB,IAAI3H,EAAK9d,OAAOqrB,SAASkpB,MAEnC1yC,UACf,CACH,CAEA,SAASgyF,SAASC,GAGhB,MAF4B,CAAC,IAAK,KAAM,KAAM,SAAU,KAAM,IAAK,KAElDC,OAAOC,GACtB7vF,OAAO7D,UAAUuG,eAAewC,KAAKyqF,EAAME,IAE/C,CAAC,SAEcC,QAAOC,GAAA,OAAAC,SAAAj1E,MAAAje,KAAAmM,UAAA,CAuBtB,SAAA+mF,WADC,OACDA,SAvBAC,mBAAA,UAAuB5uE,GACrB,GAAmB,iBAARA,EACT,MAAM,IAAIrkB,MAAuC,kCAGnD,IAAI2yF,EAEJ,IAEE,IAAMO,EAAc,IAAI5uE,IAAID,GAGtBpa,QAAoBi5E,MAAMgQ,EAAOxyF,YAEvCiyF,QAAa1oF,EAAO0oF,MAKrB,CAJC,MAAO5pE,GACP,MAAM,IAAI/oB,MAET,kEACF,CAED,OAAO2yF,MACR50E,MAAAje,KAAAmM,UAAA,CAxEA4oC,QAAAy9C,iBAAA,EARWA,YAAAA,sBAAAA,QAAAA,YAQX,CAAA,GAPCA,YAAA,UAAA,YACAA,YAAA,MAAA,QACAA,YAAA,OAAA,SACAA,YAAA,QAAA,UACAA,YAAA,OAAA,SACAA,YAAA,QAAA,UACAA,YAAA,QAAA,UAODz9C,QAAA09C,cAAA,EAHWA,SAAAA,mBAAAA,QAAAA,SAGX,CAAA,GAFCA,SAAA,OAAA,SACAA,SAAA,OAAA,SAiBD19C,QAAA29C,kBAAA,EAbWA,aAAAA,uBAAAA,QAAAA,aAaX,CAAA,GAZCA,aAAA,SAAA,WACAA,aAAA,UAAA,YACAA,aAAA,MAAA,QACAA,aAAA,MAAA,QACAA,aAAA,OAAA,SACAA,aAAA,KAAA,OACAA,aAAA,KAAA,OACAA,aAAA,MAAA,QACAA,aAAA,KAAA,OACAA,aAAA,MAAA,QACAA,aAAA,SAAA,WACAA,aAAA,KAAA,OA4DWW,QAAAA,aAAN,cAA2Bl8E,EAA3BvX,kCAKEI,KAAQ2wB,UAAY,EAMpB3wB,KAAUszF,WAAY,cAMtBtzF,KAAQuzF,UAAY,EAYpBvzF,KAAAwzF,aAA4BhB,QAAWA,YAACiB,QAMxCzzF,KAAWgoE,YAAW,mBAMtBhoE,KAAS+gB,UAAW,EAMpB/gB,KAAY0zF,cAAa,EAMzB1zF,KAAK2zF,OAAY,EAMjB3zF,KAAY4zF,aAAW,EAMvB5zF,KAAI4wB,MAAY,EAMhB5wB,KAAAoL,KAAiBqnF,QAAQA,SAACoB,OAM1B7zF,KAAmBmoE,oBAAW,gBAM9BnoE,KAAQ6wB,SAAU,MAalB7wB,KAAKiqF,MAAW,EAoBfjqF,KAAG8zF,SAAqCvzF,EAOxCP,KAAQ+zF,SAAW,CAslB7B,CAjlBenrE,KAAK/L,GAAoB,IAAAm3E,EAAAh0F,KAAA,OAAAmzF,mBAAA,YACpC,GAAKa,EAAKprF,WAAV,CAIA,IAAMnD,EAAe,CACnBqR,UAAWk9E,EAAKl9E,UAChB8Z,MAAM,EACND,UAAU,EACVE,SAAUmjE,EAAKnjE,SACfqB,iBAAkB,CAChBi2C,oBAAqB6rB,EAAK7rB,oBAC1BmC,aAAa,EACb5Z,iBAAiB,EACjB7G,mBAAmB,IAKvB,IACE,IAAMoqC,EAAYtB,SAAS91E,GACvBq3E,EAAW,CAAA,EACXC,EAAiC,iBAAdF,EAAyB,OAAS,gBAGrDD,EAAKI,SACPJ,EAAKI,QAAQ9mE,UAGX0mE,EAAKK,YACPjhD,SAAmB2B,QAAAP,cAAC,GAItBw/C,EAAKI,QAAUhhD,SAAoB2B,QAAA9qB,cAAA/mB,OAAA8V,OAAA9V,OAAA8V,OAAA,GAC9BvT,GAAO,CAEV0uF,CAACA,GAAYF,KAIfD,EAAKM,wBAEAN,EAAKN,eAEU,SAAdS,GACFD,QAAiBlB,QAAQiB,GACzBE,EAAY,iBAEZD,EAAWD,EAGRrB,SAASsB,KACZF,EAAKR,aAAehB,QAAWA,YAACtyF,MAChC8zF,EAAKO,cAAc,IAAIC,YAAY9B,QAAAA,aAAaxyF,SAMrD,CAHC,MAAO+oB,GACP+qE,EAAKR,aAAehB,QAAWA,YAACtyF,MAChC8zF,EAAKO,cAAc,IAAIC,YAAY9B,QAAAA,aAAaxyF,OACjD,CAzDA,CAyDA,GA5DmCizF,EA6DtC,CAKOsB,YACL,OAAOz0F,KAAKo0F,OACd,CAKOr3E,OACA/c,KAAKo0F,UAIVp0F,KAAKo0F,QAAQr3E,OACb/c,KAAKwzF,aAAehB,QAAWA,YAACkC,QAEhC10F,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAaiC,OAClD,CAKOr4E,QACAtc,KAAKo0F,UAIVp0F,KAAKo0F,QAAQ93E,QACbtc,KAAKwzF,aAAehB,QAAWA,YAACoC,OAEhC50F,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAamC,QAClD,CAKOz/D,OACAp1B,KAAKo0F,UAIVp0F,KAAK+zF,SAAW,EAChB/zF,KAAKo0F,QAAQh/D,OACbp1B,KAAKwzF,aAAehB,QAAWA,YAACsC,QAEhC90F,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAaqC,OAClD,CAKOznE,UACAttB,KAAKo0F,UAIVp0F,KAAKo0F,QAAQ9mE,UACbttB,KAAKo0F,QAAU,KACfp0F,KAAKwzF,aAAehB,QAAWA,YAACwC,UAChCh1F,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAasC,YAChDh1F,KAAKmP,SACP,CAKO6N,KAAKlc,GACV,GAAKd,KAAKo0F,QAAV,CAKA,IAAMh6E,EAAU,cAAcjM,KAAKrN,EAAMF,YAEzC,GAAKwZ,EAAL,CAKA,IAAM66E,EACW,MAAf76E,EAAQ,GACHpa,KAAKo0F,QAAQhzE,YAAc5d,OAAO4W,EAAQ,IAAO,IAClD5W,OAAO4W,EAAQ,IAGrBpa,KAAKk1F,OAASD,EAGVj1F,KAAKwzF,eAAiBhB,QAAWA,YAACkC,QACpC10F,KAAKo0F,QAAQv+D,YAAYo/D,GAAO,IAEhCj1F,KAAKo0F,QAAQ5+D,YAAYy/D,GAAO,GAChCj1F,KAAKo0F,QAAQ93E,QAhBd,CAPA,CAyBH,CAOO64E,WAAiC,IAAxBC,6DACd,GAAKp1F,KAAK4I,WAAV,CAGA,IAAMqG,EAAajP,KAAK4I,WAAWuQ,cAAc,kBAC3C5I,GAAO,IAAI8kF,eAAgBC,kBAAkBrmF,GAGnD,GAAImmF,EAAU,CACZ,IAAM5gF,EAAU1S,SAASC,cAAc,KAEvCyS,EAAQ8+B,KAAI,oCAAAza,OAAuC08D,mBACjDhlF,IAEFiE,EAAQ4gF,SAAQ,YAAAv8D,OAAe74B,KAAKk1F,OAAY,QAChDpzF,SAASk3B,KAAK52B,YAAYoS,GAE1BA,EAAQghF,QAER1zF,SAASk3B,KAAK4vB,YAAYp0C,EAC3B,CAED,OAAOjE,CArBe,CAsBxB,CAOO6lB,WAAkB,IAATt1B,yDAAQ,EACjBd,KAAKo0F,SAIVp0F,KAAKo0F,QAAQh+D,SAASt1B,EACxB,CAOOu1B,aAAav1B,GACbd,KAAKo0F,SAIVp0F,KAAKo0F,QAAQ/9D,aAAav1B,EAC5B,CAOO20F,WAAW30F,GACZd,KAAKo0F,UACPp0F,KAAK4wB,KAAO9vB,EACZd,KAAKo0F,QAAQxjE,KAAO9vB,EAExB,CAKO40F,aACL,OAAO11F,KAAKwzF,eAAiBhB,QAAAA,YAAYkC,QACrC10F,KAAKsc,QACLtc,KAAK+c,MACX,CAKO44E,gBACL31F,KAAKy1F,YAAYz1F,KAAK4wB,KACxB,CAKOgE,SACA50B,KAAKo0F,SAIVp0F,KAAKo0F,QAAQx/D,QACf,CAKWpzB,oBACT,OAAOA,MACT,CAKO0H,uBAEDlJ,KAAKiI,cAGLjI,KAAK8zF,MACP9zF,KAAK8zF,IAAI8B,aACT51F,KAAK8zF,SAAMvzF,GAUbuB,SAASyT,oBAAoB,oBAAoB,IAC/CvV,KAAK61F,wBAIP71F,KAAKstB,UACP,CAEOhW,SACL,IAAMixD,EAAoBvoE,KAAKuzF,SAAW,gBAAkB,OACtDuC,EAAyB91F,KAAKuzF,SAChC,qBACA,YAEJ,OAAOrmF,EAAIolF,kBAAAA,gBAAAC,uBAAA,CAAA,sDAAA,uCAAA,gFAAA,+BAAA,wBAAA,yBAAA,kBAEDhqB,EAEKvoE,KAAKgoE,YAKR8tB,EACY91F,KAAKszF,WAEvBtzF,KAAKwzF,eAAiBhB,QAAAA,YAAYtyF,MAChCgN,EAAI6oF,mBAAAA,iBAAAxD,uBAAA,CAAA,uCACJhyF,EAEJP,KAAKuzF,SAAWvzF,KAAKg2F,sBAAmBz1F,EAE9C,CAKUwK,eAEJ,yBAA0BhM,SAC5BiB,KAAK8zF,IAAM,IAAImC,sBACZC,IACKA,EAAQ,GAAGC,eACTn2F,KAAKwzF,eAAiBhB,QAAWA,YAAC4D,QACpCp2F,KAAK+c,OAEE/c,KAAKwzF,eAAiBhB,QAAAA,YAAYkC,SAC3C10F,KAAKo5B,QACN,IAILp5B,KAAK8zF,IAAIuC,QAAQr2F,KAAK8W,iBAIO,IAApBhV,SAASknD,QAClBlnD,SAAS0T,iBAAiB,oBAAoB,IAC5CxV,KAAK61F,wBAKL71F,KAAK6c,KACP7c,KAAK4oB,KAAK5oB,KAAK6c,KAEjB7c,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAa4D,UAClD,CAEUN,iBACR,IAAMl5E,EAAqB9c,KAAKwzF,eAAiBhB,QAAAA,YAAYkC,QACvDhkE,EAAoB1wB,KAAKwzF,eAAiBhB,QAAAA,YAAYoC,OACtD2B,EAAqBv2F,KAAKwzF,eAAiBhB,QAAAA,YAAYsC,QAE7D,OAAO5nF,EAQQspF,mBAAAA,iBAAAjE,uBAAA,CAAA,sMAAA,qBAAA,4HAAA,6FAAA,qBAAA,2bAAA,sBAAA,0BAAA,wBAAA,kHAAA,wJAAA,qBAAA,0bAAAvyF,KAAK01F,WACN54E,GAAa4T,EAAW,SAAW,GAMvCxjB,EADF4P,EAWE5P,mBAAAA,iBAAAA,uBAAAA,CAAAA,wTAOOupF,mBAAAA,iBAAAlE,uBAAA,CAAA,2PAIFvyF,KAAKo1B,KACNmhE,EAAY,SAAW,GAgBtBv2F,KAAKk1F,OACLl1F,KAAK02F,mBACD,KACX12F,KAAK22F,WAAa32F,KAAKwzF,aACvBxzF,KAAKo5B,QAAQ,IAEJ,KACTp5B,KAAK22F,aAAenE,QAAWA,YAACkC,SAAW10F,KAAK+c,MAAM,GAKxC/c,KAAKk1F,OAMZl1F,KAAK21F,cACN31F,KAAK4wB,KAAO,SAAW,GAavC,CAKQilE,uBACkB,IAApB/zF,SAASknD,QAAmBhpD,KAAKwzF,eAAiBhB,QAAWA,YAACkC,QAChE10F,KAAKo5B,SACIp5B,KAAKwzF,eAAiBhB,QAAAA,YAAY4D,QAC3Cp2F,KAAK+c,MAET,CAKQ25E,kBAAkBhzF,GACxB,GAAK1D,KAAKo0F,UAAWz+D,MAAMjyB,EAAE4d,OAAOxgB,OAApC,CAIA,IAAMm0F,EAAiBvxF,EAAE4d,OAAOxgB,MAAQ,IAAOd,KAAKo0F,QAAQhzE,YAE5DphB,KAAKgd,KAAKi4E,EAJT,CAKH,CAEQX,wBACNt0F,KAAKo0F,QAAQ5+E,iBAAiB,cAAc,KAC1CxV,KAAKk1F,OACFl1F,KAAKo0F,QAAQzkE,aAAe3vB,KAAKo0F,QAAQhzE,YAAe,IAE3DphB,KAAKu0F,cACH,IAAIC,YAAY9B,QAAAA,aAAakE,MAAO,CAClCC,OAAQ,CACN5B,MAAOj1F,KAAKo0F,QAAQzkE,aACpBulE,OAAQl1F,KAAKk1F,UAGlB,IAIHl1F,KAAKo0F,QAAQ5+E,iBAAiB,YAAY,KACxC,GAAIxV,KAAKwzF,eAAiBhB,QAAWA,YAACkC,QAAtC,CAMA,IAAK10F,KAAK4wB,MAAS5wB,KAAKyjD,OAASzjD,KAAK+zF,UAAY/zF,KAAKyjD,MAAQ,CAG7D,GAFAzjD,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAaoE,WAE5C92F,KAAKoL,OAASqnF,QAAQA,SAACsE,OAKzB,OAJA,GAAkC,IAA9B/2F,KAAKo0F,QAAQzkE,aACf,MAKL,CAEG3vB,KAAKoL,OAASqnF,QAAQA,SAACsE,QACrB/2F,KAAKyjD,QACPzjD,KAAK+zF,UAAY,IAGnBv/D,YAAW,KACTx0B,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAasE,OAE5Ch3F,KAAKwzF,eAAiBhB,QAAWA,YAACkC,UACpC10F,KAAKo0F,QAAQ/9D,cAA2C,EAA9Br2B,KAAKo0F,QAAQ5jE,eACvCxwB,KAAKo0F,QAAQr3E,OACd,GACA/c,KAAK4zF,gBAEJ5zF,KAAKyjD,QACPzjD,KAAK+zF,UAAY,GAGnBh1F,OAAOy1B,YAAW,KAChBx0B,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAasE,OAE5Ch3F,KAAKwzF,eAAiBhB,QAAWA,YAACkC,WACZ,IAApB10F,KAAK+gB,WAEP/gB,KAAKgd,KAAK,OACVhd,KAAK+c,SAEL/c,KAAKo0F,QAAQh/D,OACbp1B,KAAKo0F,QAAQr3E,QAEhB,GACA/c,KAAK4zF,cA7CT,MAHC5zF,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAaoE,UAiDjD,IAIH92F,KAAKo0F,QAAQ5+E,iBAAiB,aAAa,KAEzCxV,KAAKo2B,SAASp2B,KAAKiqF,OACnBjqF,KAAKq2B,aAAar2B,KAAK+gB,WAGnB/gB,KAAK2wB,YACiB,IAApB3wB,KAAK+gB,WAAkB/gB,KAAKgd,KAAK,QACrChd,KAAK+c,QAGP/c,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAauE,OAAO,IAIzDj3F,KAAKo0F,QAAQ5+E,iBAAiB,cAAc,KAC1CxV,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAawE,MAAM,IAIxDl3F,KAAKo0F,QAAQ5+E,iBAAiB,eAAe,KAC3CxV,KAAKwzF,aAAehB,QAAWA,YAACtyF,MAEhCF,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAaxyF,OAAO,IAIzDF,KAAK8W,UAAUtB,iBAAiB,cAAc,KACxCxV,KAAK2zF,OAAS3zF,KAAKwzF,eAAiBhB,QAAAA,YAAYkC,SAClD10F,KAAK+c,MACN,IAEH/c,KAAK8W,UAAUtB,iBAAiB,cAAc,KACxCxV,KAAK2zF,OAAS3zF,KAAKwzF,eAAiBhB,QAAAA,YAAYkC,SAClD10F,KAAKo1B,MACN,GAEL,CAOQgE,SACDp5B,KAAKo0F,UAIVp0F,KAAKo0F,QAAQ93E,QACbtc,KAAKwzF,aAAehB,QAAWA,YAAC4D,OAEhCp2F,KAAKu0F,cAAc,IAAIC,YAAY9B,QAAAA,aAAayE,SAClD,GA3sBAC,WAAA,CADC5+E,IAAS,CAAExV,KAAMC,WACeowF,QAAAA,aAAAh0F,UAAA,gBAAA,GAMjC+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMjC,OAAQiD,SAAS,KACQqvF,QAAAA,aAAAh0F,UAAA,kBAAA,GAM3C+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMC,WACeowF,QAAAA,aAAAh0F,UAAA,gBAAA,GAMjC+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMQ,UACI6vF,QAAAA,aAAAh0F,UAAA,aAAA,GAMtB+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMjC,UACqCsyF,QAAAA,aAAAh0F,UAAA,oBAAA,GAMvD+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMjC,UAC8BsyF,QAAAA,aAAAh0F,UAAA,mBAAA,GAMhD+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMQ,UACW6vF,QAAAA,aAAAh0F,UAAA,iBAAA,GAM7B+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMC,WACoBowF,QAAAA,aAAAh0F,UAAA,oBAAA,GAMtC+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMC,WACYowF,QAAAA,aAAAh0F,UAAA,aAAA,GAM9B+3F,WAAA,CADC5+E,OAC+B66E,QAAAA,aAAAh0F,UAAA,oBAAA,GAMhC+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMC,QAASe,SAAS,KACPqvF,QAAAA,aAAAh0F,UAAA,YAAA,GAM7B+3F,WAAA,CADC5+E,OACuC66E,QAAAA,aAAAh0F,UAAA,YAAA,GAMxC+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMjC,UACmCsyF,QAAAA,aAAAh0F,UAAA,2BAAA,GAMrD+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMjC,UACasyF,QAAAA,aAAAh0F,UAAA,gBAAA,GAO/B+3F,WAAA,CADC5+E,OACkB66E,QAAAA,aAAAh0F,UAAA,cAAA,GAMnB+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMQ,UACO6vF,QAAAA,aAAAh0F,UAAA,aAAA,GAMzB+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMjC,UACEsyF,QAAAA,aAAAh0F,UAAA,WAAA,GAMpB+3F,WAAA,CADC5+E,IAAS,CAAExV,KAAMC,WACUowF,QAAAA,aAAAh0F,UAAA,kBAAA,GAM5B+3F,WAAA,CADCC,EAAM,eAC2BhE,QAAAA,aAAAh0F,UAAA,iBAAA,GAlHX01C,QAAAs+C,aAAA+D,WAAA,CADxBv/E,IAAc,kBACFw7E,QAAAA"}