From 94416f4eec323d98a19e845f8c64b43cdfd6017f Mon Sep 17 00:00:00 2001 From: kunstmusik Date: Fri, 25 Oct 2024 17:01:46 +0000 Subject: [PATCH] deploy: ff65eb5f86d0a0a73a20ee09a80e2b9b06b36172 --- ...ll-CBL5L2Bj.js => AddressCell-CVho_prz.js} | 4 +- ...2Bj.js.map => AddressCell-CVho_prz.js.map} | 2 +- ....js => AssessmentDetailsPanel-CwctQd40.js} | 4 +- ...=> AssessmentDetailsPanel-CwctQd40.js.map} | 2 +- ...l-DfcQ24zR.js => StakingModal-C-5cNmnL.js} | 4 +- ...zR.js.map => StakingModal-C-5cNmnL.js.map} | 2 +- ...l-CtcgJ46_.js => SuccessModal-B5bjpxfT.js} | 4 +- ...6_.js.map => SuccessModal-B5bjpxfT.js.map} | 2 +- ...View-B18KJ6xK.js => TableView---XONMAN.js} | 4 +- ...KJ6xK.js.map => TableView---XONMAN.js.map} | 2 +- ...mData-Co9zNgOI.js => formData-5kDyLkJ6.js} | 4 +- ...9zNgOI.js.map => formData-5kDyLkJ6.js.map} | 2 +- ...wPHRb_.js => header_separator-DZv4xGZf.js} | 4 +- ...s.map => header_separator-DZv4xGZf.js.map} | 2 +- .../{index-HXRMKnMx.js => index-29SBbusW.js} | 4 +- ...-HXRMKnMx.js.map => index-29SBbusW.js.map} | 2 +- .../{index-D0wfPSiM.js => index-BV1QWTJt.js} | 4 +- ...-D0wfPSiM.js.map => index-BV1QWTJt.js.map} | 2 +- .../{index-BtEko6vx.js => index-BnloPbTz.js} | 4 +- ...-BtEko6vx.js.map => index-BnloPbTz.js.map} | 2 +- .../{index-LTulI-_p.js => index-CoKQ2sBA.js} | 4 +- ...-LTulI-_p.js.map => index-CoKQ2sBA.js.map} | 2 +- .../{index-B4O4S1jL.js => index-D-aTdIHH.js} | 65 ++++++++++--------- ...-B4O4S1jL.js.map => index-D-aTdIHH.js.map} | 2 +- ...{index-rk34m8JR.css => index-DHdq00cJ.css} | 2 +- .../{index-C1Vq5OI1.js => index-DMroC9j4.js} | 4 +- ...-C1Vq5OI1.js.map => index-DMroC9j4.js.map} | 2 +- .../{index-DcWJBafP.js => index-DRu2XdNc.js} | 4 +- ...-DcWJBafP.js.map => index-DRu2XdNc.js.map} | 2 +- .../{index-Cf9yPF3f.js => index-oimZnpzn.js} | 6 +- ...-Cf9yPF3f.js.map => index-oimZnpzn.js.map} | 2 +- ....js => observers_connect_icon-Ceyao3vw.js} | 4 +- ...=> observers_connect_icon-Ceyao3vw.js.map} | 2 +- ...eports-CEhDQfiL.js => reports-BQHsy-HE.js} | 4 +- ...EhDQfiL.js.map => reports-BQHsy-HE.js.map} | 2 +- ...way-Dzwqxy1y.js => useGateway-EWp64g_a.js} | 4 +- ...xy1y.js.map => useGateway-EWp64g_a.js.map} | 2 +- ...h8jTBGS3.js => useGatewayInfo-CKnRxod0.js} | 4 +- ....js.map => useGatewayInfo-CKnRxod0.js.map} | 2 +- index.html | 4 +- 40 files changed, 92 insertions(+), 91 deletions(-) rename assets/{AddressCell-CBL5L2Bj.js => AddressCell-CVho_prz.js} (85%) rename assets/{AddressCell-CBL5L2Bj.js.map => AddressCell-CVho_prz.js.map} (95%) rename assets/{AssessmentDetailsPanel-CX3q4i_F.js => AssessmentDetailsPanel-CwctQd40.js} (98%) rename assets/{AssessmentDetailsPanel-CX3q4i_F.js.map => AssessmentDetailsPanel-CwctQd40.js.map} (99%) rename assets/{StakingModal-DfcQ24zR.js => StakingModal-C-5cNmnL.js} (98%) rename assets/{StakingModal-DfcQ24zR.js.map => StakingModal-C-5cNmnL.js.map} (99%) rename assets/{SuccessModal-CtcgJ46_.js => SuccessModal-B5bjpxfT.js} (99%) rename assets/{SuccessModal-CtcgJ46_.js.map => SuccessModal-B5bjpxfT.js.map} (99%) rename assets/{TableView-B18KJ6xK.js => TableView---XONMAN.js} (99%) rename assets/{TableView-B18KJ6xK.js.map => TableView---XONMAN.js.map} (99%) rename assets/{formData-Co9zNgOI.js => formData-5kDyLkJ6.js} (98%) rename assets/{formData-Co9zNgOI.js.map => formData-5kDyLkJ6.js.map} (99%) rename assets/{header_separator-BzwPHRb_.js => header_separator-DZv4xGZf.js} (90%) rename assets/{header_separator-BzwPHRb_.js.map => header_separator-DZv4xGZf.js.map} (93%) rename assets/{index-HXRMKnMx.js => index-29SBbusW.js} (99%) rename assets/{index-HXRMKnMx.js.map => index-29SBbusW.js.map} (99%) rename assets/{index-D0wfPSiM.js => index-BV1QWTJt.js} (97%) rename assets/{index-D0wfPSiM.js.map => index-BV1QWTJt.js.map} (99%) rename assets/{index-BtEko6vx.js => index-BnloPbTz.js} (98%) rename assets/{index-BtEko6vx.js.map => index-BnloPbTz.js.map} (99%) rename assets/{index-LTulI-_p.js => index-CoKQ2sBA.js} (95%) rename assets/{index-LTulI-_p.js.map => index-CoKQ2sBA.js.map} (99%) rename assets/{index-B4O4S1jL.js => index-D-aTdIHH.js} (90%) rename assets/{index-B4O4S1jL.js.map => index-D-aTdIHH.js.map} (52%) rename assets/{index-rk34m8JR.css => index-DHdq00cJ.css} (56%) rename assets/{index-C1Vq5OI1.js => index-DMroC9j4.js} (98%) rename assets/{index-C1Vq5OI1.js.map => index-DMroC9j4.js.map} (99%) rename assets/{index-DcWJBafP.js => index-DRu2XdNc.js} (95%) rename assets/{index-DcWJBafP.js.map => index-DRu2XdNc.js.map} (99%) rename assets/{index-Cf9yPF3f.js => index-oimZnpzn.js} (86%) rename assets/{index-Cf9yPF3f.js.map => index-oimZnpzn.js.map} (99%) rename assets/{observers_connect_icon-BFZc81O8.js => observers_connect_icon-Ceyao3vw.js} (93%) rename assets/{observers_connect_icon-BFZc81O8.js.map => observers_connect_icon-Ceyao3vw.js.map} (97%) rename assets/{reports-CEhDQfiL.js => reports-BQHsy-HE.js} (93%) rename assets/{reports-CEhDQfiL.js.map => reports-BQHsy-HE.js.map} (97%) rename assets/{useGateway-Dzwqxy1y.js => useGateway-EWp64g_a.js} (86%) rename assets/{useGateway-Dzwqxy1y.js.map => useGateway-EWp64g_a.js.map} (96%) rename assets/{useGatewayInfo-h8jTBGS3.js => useGatewayInfo-CKnRxod0.js} (97%) rename assets/{useGatewayInfo-h8jTBGS3.js.map => useGatewayInfo-CKnRxod0.js.map} (99%) diff --git a/assets/AddressCell-CBL5L2Bj.js b/assets/AddressCell-CVho_prz.js similarity index 85% rename from assets/AddressCell-CBL5L2Bj.js rename to assets/AddressCell-CVho_prz.js index e8879f64..765a064a 100644 --- a/assets/AddressCell-CBL5L2Bj.js +++ b/assets/AddressCell-CVho_prz.js @@ -1,2 +1,2 @@ -import{j as t,T as d,w as r,ac as a}from"./index-B4O4S1jL.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},s=new Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="5ea7a417-f1cc-4877-84c1-5650dd91859d",e._sentryDebugIdIdentifier="sentry-dbid-5ea7a417-f1cc-4877-84c1-5650dd91859d")}catch{}})();const i=({address:e})=>t.jsxs("div",{className:"flex gap-2 align-middle text-mid",children:[t.jsx("a",{href:`https://viewblock.io/arweave/address/${e}`,target:"_blank",rel:"noreferrer",onClick:s=>{s.stopPropagation()},children:t.jsx(d,{message:t.jsx("div",{className:"text-high",children:e}),useMaxWidth:!1,children:r(e)})}),t.jsx(a,{textToCopy:e})]});export{i as A}; -//# sourceMappingURL=AddressCell-CBL5L2Bj.js.map +import{j as t,T as d,w as r,ac as a}from"./index-D-aTdIHH.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},s=new Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="5ea7a417-f1cc-4877-84c1-5650dd91859d",e._sentryDebugIdIdentifier="sentry-dbid-5ea7a417-f1cc-4877-84c1-5650dd91859d")}catch{}})();const i=({address:e})=>t.jsxs("div",{className:"flex gap-2 align-middle text-mid",children:[t.jsx("a",{href:`https://viewblock.io/arweave/address/${e}`,target:"_blank",rel:"noreferrer",onClick:s=>{s.stopPropagation()},children:t.jsx(d,{message:t.jsx("div",{className:"text-high",children:e}),useMaxWidth:!1,children:r(e)})}),t.jsx(a,{textToCopy:e})]});export{i as A}; +//# sourceMappingURL=AddressCell-CVho_prz.js.map diff --git a/assets/AddressCell-CBL5L2Bj.js.map b/assets/AddressCell-CVho_prz.js.map similarity index 95% rename from assets/AddressCell-CBL5L2Bj.js.map rename to assets/AddressCell-CVho_prz.js.map index 1eb8ef24..7c8b3776 100644 --- a/assets/AddressCell-CBL5L2Bj.js.map +++ b/assets/AddressCell-CVho_prz.js.map @@ -1 +1 @@ -{"version":3,"file":"AddressCell-CBL5L2Bj.js","sources":["../../src/components/AddressCell.tsx"],"sourcesContent":["import { formatAddress } from '@src/utils';\nimport CopyButton from './CopyButton';\nimport Tooltip from './Tooltip';\n\nexport const AddressCell = ({ address }: { address: string }) => {\n return (\n
\n {\n e.stopPropagation();\n }}\n >\n {address}
}\n useMaxWidth={false}\n >\n {formatAddress(address)}\n \n \n \n \n );\n};\n\nexport default AddressCell;\n"],"names":["AddressCell","address","jsxRuntimeExports","e","Tooltip","formatAddress","CopyButton"],"mappings":"qXAIA,MAAAA,EAAA,CAAA,CAAA,QAAAC,CAAA,IACAC,EAAA,KAAA,MAAA,CAAA,UAAA,mCAAA,SAAA,CAEAA,EAAA,IAAA,IAAA,CAAA,KAAA,wCAAAD,CAAA,GACA,OAAA,SACA,IAAA,aACA,QAAAE,GAAA,CAEAA,EAAA,gBAAA,CAAA,EACA,SAAAD,EAAA,IAEAE,EAAA,CAAA,QAAAF,EAAA,IAAA,MAAA,CAAA,UAAA,YAAA,SAAAD,CAAA,CAAA,EACA,YAAA,GACA,SAAAI,EAAAJ,CAAA,CAEA,CAAA,CACA,CAAA,EACAC,EAAA,IAAAI,EAAA,CAAA,WAAAL,CAAA,CAAA,CACA,CAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"AddressCell-CVho_prz.js","sources":["../../src/components/AddressCell.tsx"],"sourcesContent":["import { formatAddress } from '@src/utils';\nimport CopyButton from './CopyButton';\nimport Tooltip from './Tooltip';\n\nexport const AddressCell = ({ address }: { address: string }) => {\n return (\n
\n {\n e.stopPropagation();\n }}\n >\n {address}
}\n useMaxWidth={false}\n >\n {formatAddress(address)}\n \n \n \n \n );\n};\n\nexport default AddressCell;\n"],"names":["AddressCell","address","jsxRuntimeExports","e","Tooltip","formatAddress","CopyButton"],"mappings":"qXAIA,MAAAA,EAAA,CAAA,CAAA,QAAAC,CAAA,IACAC,EAAA,KAAA,MAAA,CAAA,UAAA,mCAAA,SAAA,CAEAA,EAAA,IAAA,IAAA,CAAA,KAAA,wCAAAD,CAAA,GACA,OAAA,SACA,IAAA,aACA,QAAAE,GAAA,CAEAA,EAAA,gBAAA,CAAA,EACA,SAAAD,EAAA,IAEAE,EAAA,CAAA,QAAAF,EAAA,IAAA,MAAA,CAAA,UAAA,YAAA,SAAAD,CAAA,CAAA,EACA,YAAA,GACA,SAAAI,EAAAJ,CAAA,CAEA,CAAA,CACA,CAAA,EACAC,EAAA,IAAAI,EAAA,CAAA,WAAAL,CAAA,CAAA,CACA,CAAA,CAAA"} \ No newline at end of file diff --git a/assets/AssessmentDetailsPanel-CX3q4i_F.js b/assets/AssessmentDetailsPanel-CwctQd40.js similarity index 98% rename from assets/AssessmentDetailsPanel-CX3q4i_F.js rename to assets/AssessmentDetailsPanel-CwctQd40.js index 8db276ff..6a8759f0 100644 --- a/assets/AssessmentDetailsPanel-CX3q4i_F.js +++ b/assets/AssessmentDetailsPanel-CwctQd40.js @@ -1,2 +1,2 @@ -import{r as i,j as e,ah as n,P as m}from"./index-B4O4S1jL.js";import{S as j,a as C}from"./TableView-B18KJ6xK.js";(function(){try{var l=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},s=new Error().stack;s&&(l._sentryDebugIds=l._sentryDebugIds||{},l._sentryDebugIds[s]="68a0e6aa-1522-473e-04c4-e7b4eb4e9a4b",l._sentryDebugIdIdentifier="sentry-dbid-68a0e6aa-1522-473e-04c4-e7b4eb4e9a4b")}catch{}})();const g=l=>i.createElement("svg",{width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...l},i.createElement("g",{id:"CaretDoubleRight"},i.createElement("path",{id:"Vector",d:"M11.0675 10.4425L4.81753 16.6925C4.70026 16.8098 4.5412 16.8757 4.37535 16.8757C4.2095 16.8757 4.05044 16.8098 3.93316 16.6925C3.81588 16.5753 3.75 16.4162 3.75 16.2503C3.75 16.0845 3.81588 15.9254 3.93316 15.8082L9.74175 10.0003L3.93316 4.19253C3.81588 4.07526 3.75 3.9162 3.75 3.75035C3.75 3.5845 3.81588 3.42544 3.93316 3.30816C4.05044 3.19088 4.2095 3.125 4.37535 3.125C4.5412 3.125 4.70026 3.19088 4.81753 3.30816L11.0675 9.55816C11.1256 9.61621 11.1717 9.68514 11.2032 9.76101C11.2347 9.83688 11.2508 9.91821 11.2508 10.0003C11.2508 10.0825 11.2347 10.1638 11.2032 10.2397C11.1717 10.3156 11.1256 10.3845 11.0675 10.4425ZM17.3175 9.55816L11.0675 3.30816C10.9503 3.19088 10.7912 3.125 10.6253 3.125C10.4595 3.125 10.3004 3.19088 10.1832 3.30816C10.0659 3.42544 10 3.5845 10 3.75035C10 3.9162 10.0659 4.07526 10.1832 4.19253L15.9918 10.0003L10.1832 15.8082C10.0659 15.9254 10 16.0845 10 16.2503C10 16.4162 10.0659 16.5753 10.1832 16.6925C10.3004 16.8098 10.4595 16.8757 10.6253 16.8757C10.7912 16.8757 10.9503 16.8098 11.0675 16.6925L17.3175 10.4425C17.3756 10.3845 17.4217 10.3156 17.4532 10.2397C17.4847 10.1638 17.5008 10.0825 17.5008 10.0003C17.5008 9.91821 17.4847 9.83688 17.4532 9.76101C17.4217 9.68514 17.3756 9.61621 17.3175 9.55816Z",fill:"#8C8C8C"}))),x=l=>i.createElement("svg",{width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...l},i.createElement("g",{id:"CheckSquare"},i.createElement("path",{id:"Vector",d:"M13.5672 7.68281C13.6253 7.74086 13.6714 7.80979 13.7029 7.88566C13.7343 7.96154 13.7505 8.04287 13.7505 8.125C13.7505 8.20713 13.7343 8.28846 13.7029 8.36434C13.6714 8.44021 13.6253 8.50914 13.5672 8.56719L9.19219 12.9422C9.13414 13.0003 9.06521 13.0464 8.98934 13.0779C8.91346 13.1093 8.83213 13.1255 8.75 13.1255C8.66787 13.1255 8.58654 13.1093 8.51066 13.0779C8.43479 13.0464 8.36586 13.0003 8.30781 12.9422L6.43281 11.0672C6.31554 10.9499 6.24965 10.7909 6.24965 10.625C6.24965 10.4591 6.31554 10.3001 6.43281 10.1828C6.55009 10.0655 6.70915 9.99965 6.875 9.99965C7.04085 9.99965 7.19991 10.0655 7.31719 10.1828L8.75 11.6164L12.6828 7.68281C12.7409 7.6247 12.8098 7.5786 12.8857 7.54715C12.9615 7.5157 13.0429 7.49951 13.125 7.49951C13.2071 7.49951 13.2885 7.5157 13.3643 7.54715C13.4402 7.5786 13.5091 7.6247 13.5672 7.68281ZM17.5 3.75V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H16.25C16.5815 2.5 16.8995 2.6317 17.1339 2.86612C17.3683 3.10054 17.5 3.41848 17.5 3.75ZM16.25 16.25V3.75H3.75V16.25H16.25Z",fill:"#34B36E"}))),o=l=>i.createElement("svg",{width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...l},i.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.5 3.75V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H16.25C16.5815 2.5 16.8995 2.6317 17.1339 2.86612C17.3683 3.10054 17.5 3.41848 17.5 3.75ZM16.25 16.25V3.75H3.75V16.25H16.25Z",fill:"#DB4354"}),i.createElement("path",{d:"M7.5 7.5L12.5 12.5Z",fill:"#DB4354"}),i.createElement("path",{d:"M12.9419 8.30522C13.186 8.06115 13.186 7.66542 12.9419 7.42134C12.6979 7.17726 12.3021 7.17726 12.0581 7.42134L10 9.4794L7.94194 7.42134C7.69786 7.17726 7.30214 7.17726 7.05806 7.42134C6.81398 7.66542 6.81398 8.06115 7.05806 8.30522L9.11612 10.3633L7.05806 12.4213C6.81398 12.6654 6.81398 13.0611 7.05806 13.3052C7.30214 13.5493 7.69786 13.5493 7.94194 13.3052L10 11.2472L12.0581 13.3052C12.3021 13.5493 12.6979 13.5493 12.9419 13.3052C13.186 13.0611 13.186 12.6654 12.9419 12.4213L10.8839 10.3633L12.9419 8.30522Z",fill:"#DB4354"})),p=l=>i.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-timer",...l},i.createElement("line",{x1:10,x2:14,y1:2,y2:2}),i.createElement("line",{x1:12,x2:15,y1:14,y2:11}),i.createElement("circle",{cx:12,cy:14,r:8})),c=({value:l,customText:s,additionalClasses:d})=>{const t=l?"border-streak-up/[.56] bg-streak-up/[.1] text-streak-up":"border-text-red/[.56] bg-text-red/[.1] text-text-red";return e.jsx("div",{className:`flex w-fit items-center gap-1 rounded-xl border px-2 py-0.5 ${t} ${d}`,children:s||(l?"Passed":"Failed")})},N={dns:"DNS",download:"Download",firstByte:"First Byte",request:"Request",tcp:"TCP",tls:"TLS",wait:"Wait"},h=({arnsName:l,arnsAssessment:s,chosen:d})=>{const[t,a]=i.useState(!1);return e.jsxs("div",{className:"rounded border border-grey-500 text-xs",children:[e.jsxs("div",{className:"p-3",children:[e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"text-sm text-high",children:l}),e.jsx("div",{className:"flex grow justify-end",children:e.jsx(c,{value:s.pass,additionalClasses:"text-xs"})})]}),e.jsx("div",{className:"text-mid",children:d?"Chosen Name":"Prescribed Name"}),e.jsxs("div",{className:"mt-2 flex gap-1",children:[e.jsx("div",{children:s.expectedStatusCode===s.resolvedStatusCode?e.jsx(x,{className:"size-5"}):e.jsx(o,{className:"size-5"})}),e.jsx("div",{className:"flex grow items-center text-high",children:e.jsxs("div",{children:["Status Code:"," ",e.jsx("span",{className:"text-mid",children:s.resolvedStatusCode==404?"404 (Unregistered ArNS Name)":s.resolvedStatusCode})]})})]}),s.expectedStatusCode!==s.resolvedStatusCode&&e.jsxs("div",{className:"pl-6 italic",children:["Expected: ",s.expectedStatusCode]}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{children:s.expectedId===s.resolvedId?e.jsx(x,{className:"size-5"}):e.jsx(o,{className:"size-5"})}),e.jsx("div",{className:"flex grow items-center text-high",children:e.jsxs("div",{children:["ID:"," ",e.jsx("span",{className:"text-mid",children:s.resolvedId?s.resolvedId:"Not Found"})]})})]}),s.expectedId!==s.resolvedId&&e.jsxs("div",{className:"pl-6 italic",children:["Expected: ",s.expectedId]}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{children:s.expectedDataHash===s.resolvedDataHash?e.jsx(x,{className:"size-5"}):e.jsx(o,{className:"size-5"})}),e.jsx("div",{className:"flex grow items-center text-high",children:e.jsxs("div",{children:["Data Hash:"," ",e.jsx("span",{className:"text-mid",children:s.resolvedDataHash?s.resolvedDataHash:"Not Found"})]})})]}),s.expectedDataHash!==s.resolvedDataHash&&e.jsxs("div",{className:"pl-6 italic",children:["Expected: ",s.expectedDataHash]}),!s.pass&&s.failureReason&&e.jsxs("div",{className:"pt-3 italic",children:["Failure Reason: ",s.failureReason]})]}),s.timings&&e.jsxs("div",{className:"border-t border-grey-500",children:[e.jsxs("div",{className:"flex p-3",children:[e.jsx("div",{className:"grow",children:"Timings"}),e.jsx("button",{onClick:()=>a(!t),children:t?e.jsx(j,{}):e.jsx(C,{})})]}),t&&s.timings&&e.jsxs("div",{className:"flex flex-col gap-1 px-3 pb-3",children:[e.jsxs("div",{className:"flex gap-1",children:[e.jsx(p,{className:"size-4"}),e.jsxs("div",{className:"text-high",children:["Total: ",s.timings.total," ms"]})]}),Object.entries(N).filter(([r])=>s.timings[r]!==void 0).map(([r,v])=>e.jsxs("div",{className:"pl-5 text-low",children:[v,": ",s.timings[r]," ms"]},r))]})]})]})},b=({observedHost:l,assessment:s,onClose:d})=>e.jsxs(n,{open:!0,onClose:d,className:"relative z-10",children:[e.jsx("div",{className:"fixed inset-0 w-screen bg-neutrals-1100/80","aria-hidden":"true"}),e.jsx("div",{className:"fixed right-0 top-0 h-screen w-[36rem]",children:e.jsxs(n.Panel,{className:"relative flex h-full flex-col bg-grey-800 text-sm text-mid",children:[e.jsx("div",{className:"border-b border-grey-500 p-3",children:e.jsx(g,{className:"cursor-pointer",onClick:()=>d()})}),e.jsxs("div",{className:"flex flex-col gap-4 overflow-y-auto p-8 scrollbar",children:[e.jsx("div",{className:"text-xl text-high",children:"Observation Details"}),e.jsxs("div",{className:"flex rounded bg-grey-500 p-3",children:[e.jsx("div",{children:l??e.jsx(m,{})}),e.jsx("div",{className:"flex grow justify-end",children:e.jsx(c,{value:s.pass,additionalClasses:"text-xs"})})]}),e.jsx("div",{className:"rounded bg-grey-500 p-3",children:e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"text-high",children:"Ownership"}),e.jsx("div",{className:"flex grow justify-end",children:e.jsx(c,{value:s.ownershipAssessment.pass,additionalClasses:"text-xs"})})]}),e.jsxs("div",{className:"text-xs text-mid",children:["Wallet:"," ",e.jsx("span",{children:s.ownershipAssessment.observedWallet?s.ownershipAssessment.observedWallet:"Not Found"})]}),e.jsxs("div",{className:"text-xs italic text-mid",children:["Expected:"," ",e.jsx("span",{children:s.ownershipAssessment.expectedWallets.join(", ")})]})]})}),(Object.keys(s.arnsAssessments.chosenNames).length||Object.keys(s.arnsAssessments.prescribedNames).length)&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex rounded bg-grey-500 p-3",children:[e.jsx("div",{className:"text-high",children:"ArNS Assessment"}),e.jsx("div",{className:"flex grow justify-end",children:e.jsx(c,{value:s.arnsAssessments.pass,additionalClasses:"text-xs"})})]}),Object.entries(s.arnsAssessments.chosenNames).map(([t,a])=>e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-4 h-2 border-x border-grey-500"}),e.jsx(h,{arnsName:t,arnsAssessment:a,chosen:!0},t)]})),Object.entries(s.arnsAssessments.prescribedNames).map(([t,a])=>e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-4 h-2 border-x border-grey-500"}),e.jsx(h,{arnsName:t,arnsAssessment:a,chosen:!1},t)]}))]})]})]})})]});export{b as A,c as B}; -//# sourceMappingURL=AssessmentDetailsPanel-CX3q4i_F.js.map +import{r as i,j as e,ah as n,P as m}from"./index-D-aTdIHH.js";import{S as j,a as C}from"./TableView---XONMAN.js";(function(){try{var l=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},s=new Error().stack;s&&(l._sentryDebugIds=l._sentryDebugIds||{},l._sentryDebugIds[s]="68a0e6aa-1522-473e-04c4-e7b4eb4e9a4b",l._sentryDebugIdIdentifier="sentry-dbid-68a0e6aa-1522-473e-04c4-e7b4eb4e9a4b")}catch{}})();const g=l=>i.createElement("svg",{width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...l},i.createElement("g",{id:"CaretDoubleRight"},i.createElement("path",{id:"Vector",d:"M11.0675 10.4425L4.81753 16.6925C4.70026 16.8098 4.5412 16.8757 4.37535 16.8757C4.2095 16.8757 4.05044 16.8098 3.93316 16.6925C3.81588 16.5753 3.75 16.4162 3.75 16.2503C3.75 16.0845 3.81588 15.9254 3.93316 15.8082L9.74175 10.0003L3.93316 4.19253C3.81588 4.07526 3.75 3.9162 3.75 3.75035C3.75 3.5845 3.81588 3.42544 3.93316 3.30816C4.05044 3.19088 4.2095 3.125 4.37535 3.125C4.5412 3.125 4.70026 3.19088 4.81753 3.30816L11.0675 9.55816C11.1256 9.61621 11.1717 9.68514 11.2032 9.76101C11.2347 9.83688 11.2508 9.91821 11.2508 10.0003C11.2508 10.0825 11.2347 10.1638 11.2032 10.2397C11.1717 10.3156 11.1256 10.3845 11.0675 10.4425ZM17.3175 9.55816L11.0675 3.30816C10.9503 3.19088 10.7912 3.125 10.6253 3.125C10.4595 3.125 10.3004 3.19088 10.1832 3.30816C10.0659 3.42544 10 3.5845 10 3.75035C10 3.9162 10.0659 4.07526 10.1832 4.19253L15.9918 10.0003L10.1832 15.8082C10.0659 15.9254 10 16.0845 10 16.2503C10 16.4162 10.0659 16.5753 10.1832 16.6925C10.3004 16.8098 10.4595 16.8757 10.6253 16.8757C10.7912 16.8757 10.9503 16.8098 11.0675 16.6925L17.3175 10.4425C17.3756 10.3845 17.4217 10.3156 17.4532 10.2397C17.4847 10.1638 17.5008 10.0825 17.5008 10.0003C17.5008 9.91821 17.4847 9.83688 17.4532 9.76101C17.4217 9.68514 17.3756 9.61621 17.3175 9.55816Z",fill:"#8C8C8C"}))),x=l=>i.createElement("svg",{width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...l},i.createElement("g",{id:"CheckSquare"},i.createElement("path",{id:"Vector",d:"M13.5672 7.68281C13.6253 7.74086 13.6714 7.80979 13.7029 7.88566C13.7343 7.96154 13.7505 8.04287 13.7505 8.125C13.7505 8.20713 13.7343 8.28846 13.7029 8.36434C13.6714 8.44021 13.6253 8.50914 13.5672 8.56719L9.19219 12.9422C9.13414 13.0003 9.06521 13.0464 8.98934 13.0779C8.91346 13.1093 8.83213 13.1255 8.75 13.1255C8.66787 13.1255 8.58654 13.1093 8.51066 13.0779C8.43479 13.0464 8.36586 13.0003 8.30781 12.9422L6.43281 11.0672C6.31554 10.9499 6.24965 10.7909 6.24965 10.625C6.24965 10.4591 6.31554 10.3001 6.43281 10.1828C6.55009 10.0655 6.70915 9.99965 6.875 9.99965C7.04085 9.99965 7.19991 10.0655 7.31719 10.1828L8.75 11.6164L12.6828 7.68281C12.7409 7.6247 12.8098 7.5786 12.8857 7.54715C12.9615 7.5157 13.0429 7.49951 13.125 7.49951C13.2071 7.49951 13.2885 7.5157 13.3643 7.54715C13.4402 7.5786 13.5091 7.6247 13.5672 7.68281ZM17.5 3.75V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H16.25C16.5815 2.5 16.8995 2.6317 17.1339 2.86612C17.3683 3.10054 17.5 3.41848 17.5 3.75ZM16.25 16.25V3.75H3.75V16.25H16.25Z",fill:"#34B36E"}))),o=l=>i.createElement("svg",{width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...l},i.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.5 3.75V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H16.25C16.5815 2.5 16.8995 2.6317 17.1339 2.86612C17.3683 3.10054 17.5 3.41848 17.5 3.75ZM16.25 16.25V3.75H3.75V16.25H16.25Z",fill:"#DB4354"}),i.createElement("path",{d:"M7.5 7.5L12.5 12.5Z",fill:"#DB4354"}),i.createElement("path",{d:"M12.9419 8.30522C13.186 8.06115 13.186 7.66542 12.9419 7.42134C12.6979 7.17726 12.3021 7.17726 12.0581 7.42134L10 9.4794L7.94194 7.42134C7.69786 7.17726 7.30214 7.17726 7.05806 7.42134C6.81398 7.66542 6.81398 8.06115 7.05806 8.30522L9.11612 10.3633L7.05806 12.4213C6.81398 12.6654 6.81398 13.0611 7.05806 13.3052C7.30214 13.5493 7.69786 13.5493 7.94194 13.3052L10 11.2472L12.0581 13.3052C12.3021 13.5493 12.6979 13.5493 12.9419 13.3052C13.186 13.0611 13.186 12.6654 12.9419 12.4213L10.8839 10.3633L12.9419 8.30522Z",fill:"#DB4354"})),p=l=>i.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-timer",...l},i.createElement("line",{x1:10,x2:14,y1:2,y2:2}),i.createElement("line",{x1:12,x2:15,y1:14,y2:11}),i.createElement("circle",{cx:12,cy:14,r:8})),c=({value:l,customText:s,additionalClasses:d})=>{const t=l?"border-streak-up/[.56] bg-streak-up/[.1] text-streak-up":"border-text-red/[.56] bg-text-red/[.1] text-text-red";return e.jsx("div",{className:`flex w-fit items-center gap-1 rounded-xl border px-2 py-0.5 ${t} ${d}`,children:s||(l?"Passed":"Failed")})},N={dns:"DNS",download:"Download",firstByte:"First Byte",request:"Request",tcp:"TCP",tls:"TLS",wait:"Wait"},h=({arnsName:l,arnsAssessment:s,chosen:d})=>{const[t,a]=i.useState(!1);return e.jsxs("div",{className:"rounded border border-grey-500 text-xs",children:[e.jsxs("div",{className:"p-3",children:[e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"text-sm text-high",children:l}),e.jsx("div",{className:"flex grow justify-end",children:e.jsx(c,{value:s.pass,additionalClasses:"text-xs"})})]}),e.jsx("div",{className:"text-mid",children:d?"Chosen Name":"Prescribed Name"}),e.jsxs("div",{className:"mt-2 flex gap-1",children:[e.jsx("div",{children:s.expectedStatusCode===s.resolvedStatusCode?e.jsx(x,{className:"size-5"}):e.jsx(o,{className:"size-5"})}),e.jsx("div",{className:"flex grow items-center text-high",children:e.jsxs("div",{children:["Status Code:"," ",e.jsx("span",{className:"text-mid",children:s.resolvedStatusCode==404?"404 (Unregistered ArNS Name)":s.resolvedStatusCode})]})})]}),s.expectedStatusCode!==s.resolvedStatusCode&&e.jsxs("div",{className:"pl-6 italic",children:["Expected: ",s.expectedStatusCode]}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{children:s.expectedId===s.resolvedId?e.jsx(x,{className:"size-5"}):e.jsx(o,{className:"size-5"})}),e.jsx("div",{className:"flex grow items-center text-high",children:e.jsxs("div",{children:["ID:"," ",e.jsx("span",{className:"text-mid",children:s.resolvedId?s.resolvedId:"Not Found"})]})})]}),s.expectedId!==s.resolvedId&&e.jsxs("div",{className:"pl-6 italic",children:["Expected: ",s.expectedId]}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{children:s.expectedDataHash===s.resolvedDataHash?e.jsx(x,{className:"size-5"}):e.jsx(o,{className:"size-5"})}),e.jsx("div",{className:"flex grow items-center text-high",children:e.jsxs("div",{children:["Data Hash:"," ",e.jsx("span",{className:"text-mid",children:s.resolvedDataHash?s.resolvedDataHash:"Not Found"})]})})]}),s.expectedDataHash!==s.resolvedDataHash&&e.jsxs("div",{className:"pl-6 italic",children:["Expected: ",s.expectedDataHash]}),!s.pass&&s.failureReason&&e.jsxs("div",{className:"pt-3 italic",children:["Failure Reason: ",s.failureReason]})]}),s.timings&&e.jsxs("div",{className:"border-t border-grey-500",children:[e.jsxs("div",{className:"flex p-3",children:[e.jsx("div",{className:"grow",children:"Timings"}),e.jsx("button",{onClick:()=>a(!t),children:t?e.jsx(j,{}):e.jsx(C,{})})]}),t&&s.timings&&e.jsxs("div",{className:"flex flex-col gap-1 px-3 pb-3",children:[e.jsxs("div",{className:"flex gap-1",children:[e.jsx(p,{className:"size-4"}),e.jsxs("div",{className:"text-high",children:["Total: ",s.timings.total," ms"]})]}),Object.entries(N).filter(([r])=>s.timings[r]!==void 0).map(([r,v])=>e.jsxs("div",{className:"pl-5 text-low",children:[v,": ",s.timings[r]," ms"]},r))]})]})]})},b=({observedHost:l,assessment:s,onClose:d})=>e.jsxs(n,{open:!0,onClose:d,className:"relative z-10",children:[e.jsx("div",{className:"fixed inset-0 w-screen bg-neutrals-1100/80","aria-hidden":"true"}),e.jsx("div",{className:"fixed right-0 top-0 h-screen w-[36rem]",children:e.jsxs(n.Panel,{className:"relative flex h-full flex-col bg-grey-800 text-sm text-mid",children:[e.jsx("div",{className:"border-b border-grey-500 p-3",children:e.jsx(g,{className:"cursor-pointer",onClick:()=>d()})}),e.jsxs("div",{className:"flex flex-col gap-4 overflow-y-auto p-8 scrollbar",children:[e.jsx("div",{className:"text-xl text-high",children:"Observation Details"}),e.jsxs("div",{className:"flex rounded bg-grey-500 p-3",children:[e.jsx("div",{children:l??e.jsx(m,{})}),e.jsx("div",{className:"flex grow justify-end",children:e.jsx(c,{value:s.pass,additionalClasses:"text-xs"})})]}),e.jsx("div",{className:"rounded bg-grey-500 p-3",children:e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"text-high",children:"Ownership"}),e.jsx("div",{className:"flex grow justify-end",children:e.jsx(c,{value:s.ownershipAssessment.pass,additionalClasses:"text-xs"})})]}),e.jsxs("div",{className:"text-xs text-mid",children:["Wallet:"," ",e.jsx("span",{children:s.ownershipAssessment.observedWallet?s.ownershipAssessment.observedWallet:"Not Found"})]}),e.jsxs("div",{className:"text-xs italic text-mid",children:["Expected:"," ",e.jsx("span",{children:s.ownershipAssessment.expectedWallets.join(", ")})]})]})}),(Object.keys(s.arnsAssessments.chosenNames).length||Object.keys(s.arnsAssessments.prescribedNames).length)&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex rounded bg-grey-500 p-3",children:[e.jsx("div",{className:"text-high",children:"ArNS Assessment"}),e.jsx("div",{className:"flex grow justify-end",children:e.jsx(c,{value:s.arnsAssessments.pass,additionalClasses:"text-xs"})})]}),Object.entries(s.arnsAssessments.chosenNames).map(([t,a])=>e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-4 h-2 border-x border-grey-500"}),e.jsx(h,{arnsName:t,arnsAssessment:a,chosen:!0},t)]})),Object.entries(s.arnsAssessments.prescribedNames).map(([t,a])=>e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-4 h-2 border-x border-grey-500"}),e.jsx(h,{arnsName:t,arnsAssessment:a,chosen:!1},t)]}))]})]})]})})]});export{b as A,c as B}; +//# sourceMappingURL=AssessmentDetailsPanel-CwctQd40.js.map diff --git a/assets/AssessmentDetailsPanel-CX3q4i_F.js.map b/assets/AssessmentDetailsPanel-CwctQd40.js.map similarity index 99% rename from assets/AssessmentDetailsPanel-CX3q4i_F.js.map rename to assets/AssessmentDetailsPanel-CwctQd40.js.map index d57c9018..c5ce9720 100644 --- a/assets/AssessmentDetailsPanel-CX3q4i_F.js.map +++ b/assets/AssessmentDetailsPanel-CwctQd40.js.map @@ -1 +1 @@ -{"version":3,"file":"AssessmentDetailsPanel-CX3q4i_F.js","sources":["../../src/components/icons/caret_double_right.svg?react","../../src/components/icons/check_square.svg?react","../../src/components/icons/fail_square.svg?react","../../src/components/icons/timer.svg?react","../../src/components/Bubble.tsx","../../src/components/AssessmentDetailsPanel.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgCaretDoubleRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"CaretDoubleRight\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M11.0675 10.4425L4.81753 16.6925C4.70026 16.8098 4.5412 16.8757 4.37535 16.8757C4.2095 16.8757 4.05044 16.8098 3.93316 16.6925C3.81588 16.5753 3.75 16.4162 3.75 16.2503C3.75 16.0845 3.81588 15.9254 3.93316 15.8082L9.74175 10.0003L3.93316 4.19253C3.81588 4.07526 3.75 3.9162 3.75 3.75035C3.75 3.5845 3.81588 3.42544 3.93316 3.30816C4.05044 3.19088 4.2095 3.125 4.37535 3.125C4.5412 3.125 4.70026 3.19088 4.81753 3.30816L11.0675 9.55816C11.1256 9.61621 11.1717 9.68514 11.2032 9.76101C11.2347 9.83688 11.2508 9.91821 11.2508 10.0003C11.2508 10.0825 11.2347 10.1638 11.2032 10.2397C11.1717 10.3156 11.1256 10.3845 11.0675 10.4425ZM17.3175 9.55816L11.0675 3.30816C10.9503 3.19088 10.7912 3.125 10.6253 3.125C10.4595 3.125 10.3004 3.19088 10.1832 3.30816C10.0659 3.42544 10 3.5845 10 3.75035C10 3.9162 10.0659 4.07526 10.1832 4.19253L15.9918 10.0003L10.1832 15.8082C10.0659 15.9254 10 16.0845 10 16.2503C10 16.4162 10.0659 16.5753 10.1832 16.6925C10.3004 16.8098 10.4595 16.8757 10.6253 16.8757C10.7912 16.8757 10.9503 16.8098 11.0675 16.6925L17.3175 10.4425C17.3756 10.3845 17.4217 10.3156 17.4532 10.2397C17.4847 10.1638 17.5008 10.0825 17.5008 10.0003C17.5008 9.91821 17.4847 9.83688 17.4532 9.76101C17.4217 9.68514 17.3756 9.61621 17.3175 9.55816Z\", fill: \"#8C8C8C\" })));\nexport default SvgCaretDoubleRight;\n","import * as React from \"react\";\nconst SvgCheckSquare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"CheckSquare\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M13.5672 7.68281C13.6253 7.74086 13.6714 7.80979 13.7029 7.88566C13.7343 7.96154 13.7505 8.04287 13.7505 8.125C13.7505 8.20713 13.7343 8.28846 13.7029 8.36434C13.6714 8.44021 13.6253 8.50914 13.5672 8.56719L9.19219 12.9422C9.13414 13.0003 9.06521 13.0464 8.98934 13.0779C8.91346 13.1093 8.83213 13.1255 8.75 13.1255C8.66787 13.1255 8.58654 13.1093 8.51066 13.0779C8.43479 13.0464 8.36586 13.0003 8.30781 12.9422L6.43281 11.0672C6.31554 10.9499 6.24965 10.7909 6.24965 10.625C6.24965 10.4591 6.31554 10.3001 6.43281 10.1828C6.55009 10.0655 6.70915 9.99965 6.875 9.99965C7.04085 9.99965 7.19991 10.0655 7.31719 10.1828L8.75 11.6164L12.6828 7.68281C12.7409 7.6247 12.8098 7.5786 12.8857 7.54715C12.9615 7.5157 13.0429 7.49951 13.125 7.49951C13.2071 7.49951 13.2885 7.5157 13.3643 7.54715C13.4402 7.5786 13.5091 7.6247 13.5672 7.68281ZM17.5 3.75V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H16.25C16.5815 2.5 16.8995 2.6317 17.1339 2.86612C17.3683 3.10054 17.5 3.41848 17.5 3.75ZM16.25 16.25V3.75H3.75V16.25H16.25Z\", fill: \"#34B36E\" })));\nexport default SvgCheckSquare;\n","import * as React from \"react\";\nconst SvgFailSquare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M17.5 3.75V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H16.25C16.5815 2.5 16.8995 2.6317 17.1339 2.86612C17.3683 3.10054 17.5 3.41848 17.5 3.75ZM16.25 16.25V3.75H3.75V16.25H16.25Z\", fill: \"#DB4354\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.5 7.5L12.5 12.5Z\", fill: \"#DB4354\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.9419 8.30522C13.186 8.06115 13.186 7.66542 12.9419 7.42134C12.6979 7.17726 12.3021 7.17726 12.0581 7.42134L10 9.4794L7.94194 7.42134C7.69786 7.17726 7.30214 7.17726 7.05806 7.42134C6.81398 7.66542 6.81398 8.06115 7.05806 8.30522L9.11612 10.3633L7.05806 12.4213C6.81398 12.6654 6.81398 13.0611 7.05806 13.3052C7.30214 13.5493 7.69786 13.5493 7.94194 13.3052L10 11.2472L12.0581 13.3052C12.3021 13.5493 12.6979 13.5493 12.9419 13.3052C13.186 13.0611 13.186 12.6654 12.9419 12.4213L10.8839 10.3633L12.9419 8.30522Z\", fill: \"#DB4354\" }));\nexport default SvgFailSquare;\n","import * as React from \"react\";\nconst SvgTimer = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", className: \"lucide lucide-timer\", ...props }, /* @__PURE__ */ React.createElement(\"line\", { x1: 10, x2: 14, y1: 2, y2: 2 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 12, x2: 15, y1: 14, y2: 11 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 14, r: 8 }));\nexport default SvgTimer;\n","const Bubble = ({ value, customText, additionalClasses }: { value: boolean, customText?:string, additionalClasses?:string }) => {\n const colorClasses = value\n ? 'border-streak-up/[.56] bg-streak-up/[.1] text-streak-up'\n : 'border-text-red/[.56] bg-text-red/[.1] text-text-red';\n\n return (\n \n {customText ? customText : value ? 'Passed' : 'Failed'}\n \n );\n};\n\nexport default Bubble;\n","import { Dialog } from '@headlessui/react';\nimport {\n CaretDoubleRightIcon,\n CheckSquareIcon,\n FailSquareIcon,\n SortAsc,\n SortDesc,\n TimerIcon,\n} from '@src/components/icons';\nimport { ArNSAssessment, Assessment } from '@src/types';\nimport { useState } from 'react';\nimport Bubble from './Bubble';\nimport Placeholder from './Placeholder';\n\nconst extraTimingsLabels: Record = {\n dns: 'DNS',\n download: 'Download',\n firstByte: 'First Byte',\n request: 'Request',\n tcp: 'TCP',\n tls: 'TLS',\n wait: 'Wait',\n};\n\nconst ArNSAssessmentPanel = ({\n arnsName,\n arnsAssessment,\n chosen,\n}: {\n arnsName: string;\n arnsAssessment: ArNSAssessment;\n chosen: boolean;\n}) => {\n const [timingsPanelOpen, setTimingsPanelOpen] = useState(false);\n\n return (\n
\n
\n
\n
{arnsName}
\n
\n \n
\n
\n
\n {chosen ? 'Chosen Name' : 'Prescribed Name'}\n
\n
\n
\n {arnsAssessment.expectedStatusCode ===\n arnsAssessment.resolvedStatusCode ? (\n \n ) : (\n \n )}\n
\n
\n
\n Status Code:{' '}\n \n {arnsAssessment.resolvedStatusCode == 404\n ? '404 (Unregistered ArNS Name)'\n : arnsAssessment.resolvedStatusCode}\n \n
\n
\n
\n {arnsAssessment.expectedStatusCode !==\n arnsAssessment.resolvedStatusCode && (\n
\n Expected: {arnsAssessment.expectedStatusCode}\n
\n )}\n
\n
\n {arnsAssessment.expectedId === arnsAssessment.resolvedId ? (\n \n ) : (\n \n )}\n
\n
\n
\n ID:{' '}\n \n {arnsAssessment.resolvedId\n ? arnsAssessment.resolvedId\n : 'Not Found'}\n \n
\n
\n
\n {arnsAssessment.expectedId !== arnsAssessment.resolvedId && (\n
\n Expected: {arnsAssessment.expectedId}\n
\n )}\n
\n
\n {arnsAssessment.expectedDataHash ===\n arnsAssessment.resolvedDataHash ? (\n \n ) : (\n \n )}\n
\n
\n
\n Data Hash:{' '}\n \n {arnsAssessment.resolvedDataHash\n ? arnsAssessment.resolvedDataHash\n : 'Not Found'}\n \n
\n
\n
\n {arnsAssessment.expectedDataHash !==\n arnsAssessment.resolvedDataHash && (\n
\n Expected: {arnsAssessment.expectedDataHash}\n
\n )}\n {!arnsAssessment.pass && arnsAssessment.failureReason && (\n
\n Failure Reason: {arnsAssessment.failureReason}\n
\n )}\n
\n {arnsAssessment.timings && (\n
\n
\n
Timings
\n \n
\n {timingsPanelOpen && arnsAssessment.timings && (\n
\n
\n \n
\n Total: {arnsAssessment.timings.total} ms\n
\n
\n {Object.entries(extraTimingsLabels)\n .filter(([key]) => arnsAssessment.timings![key] !== undefined)\n .map(([key, label]) => {\n return (\n
\n {label}: {arnsAssessment.timings![key]} ms\n
\n );\n })}\n
\n )}\n
\n )}\n
\n );\n};\n\nconst AssessmentDetailsPanel = ({\n observedHost,\n assessment,\n onClose,\n}: {\n observedHost?: string;\n assessment: Assessment;\n onClose: () => void;\n}) => {\n return (\n \n \n\n
\n \n
\n onClose()}\n />\n
\n
\n
Observation Details
\n\n
\n
{observedHost ?? }
\n
\n \n
\n
\n\n
\n
\n
\n
Ownership
\n\n
\n \n
\n
\n
\n Wallet:{' '}\n \n {assessment.ownershipAssessment.observedWallet\n ? assessment.ownershipAssessment.observedWallet\n : 'Not Found'}\n \n
\n
\n Expected:{' '}\n \n {assessment.ownershipAssessment.expectedWallets.join(', ')}\n \n
\n
\n
\n\n {(Object.keys(assessment.arnsAssessments.chosenNames).length ||\n Object.keys(assessment.arnsAssessments.prescribedNames)\n .length) && (\n
\n
\n
ArNS Assessment
\n\n
\n \n
\n
\n {Object.entries(assessment.arnsAssessments.chosenNames).map(\n ([arnsName, arnsAssessment]) => (\n <>\n
\n \n \n ),\n )}\n {Object.entries(assessment.arnsAssessments.prescribedNames).map(\n ([arnsName, arnsAssessment]) => (\n <>\n
\n \n \n ),\n )}\n
\n )}\n
\n \n
\n
\n );\n};\n\nexport default AssessmentDetailsPanel;\n"],"names":["SvgCaretDoubleRight","props","reactExports","SvgCheckSquare","SvgFailSquare","SvgTimer","Bubble","value","customText","additionalClasses","colorClasses","jsxRuntimeExports","extraTimingsLabels","ArNSAssessmentPanel","arnsName","arnsAssessment","chosen","timingsPanelOpen","setTimingsPanelOpen","SvgSortAsc","SvgSortDesc","key","label","AssessmentDetailsPanel","observedHost","assessment","onClose","_t","Placeholder"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"AssessmentDetailsPanel-CwctQd40.js","sources":["../../src/components/icons/caret_double_right.svg?react","../../src/components/icons/check_square.svg?react","../../src/components/icons/fail_square.svg?react","../../src/components/icons/timer.svg?react","../../src/components/Bubble.tsx","../../src/components/AssessmentDetailsPanel.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgCaretDoubleRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"CaretDoubleRight\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M11.0675 10.4425L4.81753 16.6925C4.70026 16.8098 4.5412 16.8757 4.37535 16.8757C4.2095 16.8757 4.05044 16.8098 3.93316 16.6925C3.81588 16.5753 3.75 16.4162 3.75 16.2503C3.75 16.0845 3.81588 15.9254 3.93316 15.8082L9.74175 10.0003L3.93316 4.19253C3.81588 4.07526 3.75 3.9162 3.75 3.75035C3.75 3.5845 3.81588 3.42544 3.93316 3.30816C4.05044 3.19088 4.2095 3.125 4.37535 3.125C4.5412 3.125 4.70026 3.19088 4.81753 3.30816L11.0675 9.55816C11.1256 9.61621 11.1717 9.68514 11.2032 9.76101C11.2347 9.83688 11.2508 9.91821 11.2508 10.0003C11.2508 10.0825 11.2347 10.1638 11.2032 10.2397C11.1717 10.3156 11.1256 10.3845 11.0675 10.4425ZM17.3175 9.55816L11.0675 3.30816C10.9503 3.19088 10.7912 3.125 10.6253 3.125C10.4595 3.125 10.3004 3.19088 10.1832 3.30816C10.0659 3.42544 10 3.5845 10 3.75035C10 3.9162 10.0659 4.07526 10.1832 4.19253L15.9918 10.0003L10.1832 15.8082C10.0659 15.9254 10 16.0845 10 16.2503C10 16.4162 10.0659 16.5753 10.1832 16.6925C10.3004 16.8098 10.4595 16.8757 10.6253 16.8757C10.7912 16.8757 10.9503 16.8098 11.0675 16.6925L17.3175 10.4425C17.3756 10.3845 17.4217 10.3156 17.4532 10.2397C17.4847 10.1638 17.5008 10.0825 17.5008 10.0003C17.5008 9.91821 17.4847 9.83688 17.4532 9.76101C17.4217 9.68514 17.3756 9.61621 17.3175 9.55816Z\", fill: \"#8C8C8C\" })));\nexport default SvgCaretDoubleRight;\n","import * as React from \"react\";\nconst SvgCheckSquare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"CheckSquare\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M13.5672 7.68281C13.6253 7.74086 13.6714 7.80979 13.7029 7.88566C13.7343 7.96154 13.7505 8.04287 13.7505 8.125C13.7505 8.20713 13.7343 8.28846 13.7029 8.36434C13.6714 8.44021 13.6253 8.50914 13.5672 8.56719L9.19219 12.9422C9.13414 13.0003 9.06521 13.0464 8.98934 13.0779C8.91346 13.1093 8.83213 13.1255 8.75 13.1255C8.66787 13.1255 8.58654 13.1093 8.51066 13.0779C8.43479 13.0464 8.36586 13.0003 8.30781 12.9422L6.43281 11.0672C6.31554 10.9499 6.24965 10.7909 6.24965 10.625C6.24965 10.4591 6.31554 10.3001 6.43281 10.1828C6.55009 10.0655 6.70915 9.99965 6.875 9.99965C7.04085 9.99965 7.19991 10.0655 7.31719 10.1828L8.75 11.6164L12.6828 7.68281C12.7409 7.6247 12.8098 7.5786 12.8857 7.54715C12.9615 7.5157 13.0429 7.49951 13.125 7.49951C13.2071 7.49951 13.2885 7.5157 13.3643 7.54715C13.4402 7.5786 13.5091 7.6247 13.5672 7.68281ZM17.5 3.75V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H16.25C16.5815 2.5 16.8995 2.6317 17.1339 2.86612C17.3683 3.10054 17.5 3.41848 17.5 3.75ZM16.25 16.25V3.75H3.75V16.25H16.25Z\", fill: \"#34B36E\" })));\nexport default SvgCheckSquare;\n","import * as React from \"react\";\nconst SvgFailSquare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M17.5 3.75V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H16.25C16.5815 2.5 16.8995 2.6317 17.1339 2.86612C17.3683 3.10054 17.5 3.41848 17.5 3.75ZM16.25 16.25V3.75H3.75V16.25H16.25Z\", fill: \"#DB4354\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.5 7.5L12.5 12.5Z\", fill: \"#DB4354\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.9419 8.30522C13.186 8.06115 13.186 7.66542 12.9419 7.42134C12.6979 7.17726 12.3021 7.17726 12.0581 7.42134L10 9.4794L7.94194 7.42134C7.69786 7.17726 7.30214 7.17726 7.05806 7.42134C6.81398 7.66542 6.81398 8.06115 7.05806 8.30522L9.11612 10.3633L7.05806 12.4213C6.81398 12.6654 6.81398 13.0611 7.05806 13.3052C7.30214 13.5493 7.69786 13.5493 7.94194 13.3052L10 11.2472L12.0581 13.3052C12.3021 13.5493 12.6979 13.5493 12.9419 13.3052C13.186 13.0611 13.186 12.6654 12.9419 12.4213L10.8839 10.3633L12.9419 8.30522Z\", fill: \"#DB4354\" }));\nexport default SvgFailSquare;\n","import * as React from \"react\";\nconst SvgTimer = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", className: \"lucide lucide-timer\", ...props }, /* @__PURE__ */ React.createElement(\"line\", { x1: 10, x2: 14, y1: 2, y2: 2 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 12, x2: 15, y1: 14, y2: 11 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 14, r: 8 }));\nexport default SvgTimer;\n","const Bubble = ({ value, customText, additionalClasses }: { value: boolean, customText?:string, additionalClasses?:string }) => {\n const colorClasses = value\n ? 'border-streak-up/[.56] bg-streak-up/[.1] text-streak-up'\n : 'border-text-red/[.56] bg-text-red/[.1] text-text-red';\n\n return (\n \n {customText ? customText : value ? 'Passed' : 'Failed'}\n \n );\n};\n\nexport default Bubble;\n","import { Dialog } from '@headlessui/react';\nimport {\n CaretDoubleRightIcon,\n CheckSquareIcon,\n FailSquareIcon,\n SortAsc,\n SortDesc,\n TimerIcon,\n} from '@src/components/icons';\nimport { ArNSAssessment, Assessment } from '@src/types';\nimport { useState } from 'react';\nimport Bubble from './Bubble';\nimport Placeholder from './Placeholder';\n\nconst extraTimingsLabels: Record = {\n dns: 'DNS',\n download: 'Download',\n firstByte: 'First Byte',\n request: 'Request',\n tcp: 'TCP',\n tls: 'TLS',\n wait: 'Wait',\n};\n\nconst ArNSAssessmentPanel = ({\n arnsName,\n arnsAssessment,\n chosen,\n}: {\n arnsName: string;\n arnsAssessment: ArNSAssessment;\n chosen: boolean;\n}) => {\n const [timingsPanelOpen, setTimingsPanelOpen] = useState(false);\n\n return (\n
\n
\n
\n
{arnsName}
\n
\n \n
\n
\n
\n {chosen ? 'Chosen Name' : 'Prescribed Name'}\n
\n
\n
\n {arnsAssessment.expectedStatusCode ===\n arnsAssessment.resolvedStatusCode ? (\n \n ) : (\n \n )}\n
\n
\n
\n Status Code:{' '}\n \n {arnsAssessment.resolvedStatusCode == 404\n ? '404 (Unregistered ArNS Name)'\n : arnsAssessment.resolvedStatusCode}\n \n
\n
\n
\n {arnsAssessment.expectedStatusCode !==\n arnsAssessment.resolvedStatusCode && (\n
\n Expected: {arnsAssessment.expectedStatusCode}\n
\n )}\n
\n
\n {arnsAssessment.expectedId === arnsAssessment.resolvedId ? (\n \n ) : (\n \n )}\n
\n
\n
\n ID:{' '}\n \n {arnsAssessment.resolvedId\n ? arnsAssessment.resolvedId\n : 'Not Found'}\n \n
\n
\n
\n {arnsAssessment.expectedId !== arnsAssessment.resolvedId && (\n
\n Expected: {arnsAssessment.expectedId}\n
\n )}\n
\n
\n {arnsAssessment.expectedDataHash ===\n arnsAssessment.resolvedDataHash ? (\n \n ) : (\n \n )}\n
\n
\n
\n Data Hash:{' '}\n \n {arnsAssessment.resolvedDataHash\n ? arnsAssessment.resolvedDataHash\n : 'Not Found'}\n \n
\n
\n
\n {arnsAssessment.expectedDataHash !==\n arnsAssessment.resolvedDataHash && (\n
\n Expected: {arnsAssessment.expectedDataHash}\n
\n )}\n {!arnsAssessment.pass && arnsAssessment.failureReason && (\n
\n Failure Reason: {arnsAssessment.failureReason}\n
\n )}\n
\n {arnsAssessment.timings && (\n
\n
\n
Timings
\n \n
\n {timingsPanelOpen && arnsAssessment.timings && (\n
\n
\n \n
\n Total: {arnsAssessment.timings.total} ms\n
\n
\n {Object.entries(extraTimingsLabels)\n .filter(([key]) => arnsAssessment.timings![key] !== undefined)\n .map(([key, label]) => {\n return (\n
\n {label}: {arnsAssessment.timings![key]} ms\n
\n );\n })}\n
\n )}\n
\n )}\n
\n );\n};\n\nconst AssessmentDetailsPanel = ({\n observedHost,\n assessment,\n onClose,\n}: {\n observedHost?: string;\n assessment: Assessment;\n onClose: () => void;\n}) => {\n return (\n \n \n\n
\n \n
\n onClose()}\n />\n
\n
\n
Observation Details
\n\n
\n
{observedHost ?? }
\n
\n \n
\n
\n\n
\n
\n
\n
Ownership
\n\n
\n \n
\n
\n
\n Wallet:{' '}\n \n {assessment.ownershipAssessment.observedWallet\n ? assessment.ownershipAssessment.observedWallet\n : 'Not Found'}\n \n
\n
\n Expected:{' '}\n \n {assessment.ownershipAssessment.expectedWallets.join(', ')}\n \n
\n
\n
\n\n {(Object.keys(assessment.arnsAssessments.chosenNames).length ||\n Object.keys(assessment.arnsAssessments.prescribedNames)\n .length) && (\n
\n
\n
ArNS Assessment
\n\n
\n \n
\n
\n {Object.entries(assessment.arnsAssessments.chosenNames).map(\n ([arnsName, arnsAssessment]) => (\n <>\n
\n \n \n ),\n )}\n {Object.entries(assessment.arnsAssessments.prescribedNames).map(\n ([arnsName, arnsAssessment]) => (\n <>\n
\n \n \n ),\n )}\n
\n )}\n
\n \n
\n
\n );\n};\n\nexport default AssessmentDetailsPanel;\n"],"names":["SvgCaretDoubleRight","props","reactExports","SvgCheckSquare","SvgFailSquare","SvgTimer","Bubble","value","customText","additionalClasses","colorClasses","jsxRuntimeExports","extraTimingsLabels","ArNSAssessmentPanel","arnsName","arnsAssessment","chosen","timingsPanelOpen","setTimingsPanelOpen","SvgSortAsc","SvgSortDesc","key","label","AssessmentDetailsPanel","observedHost","assessment","onClose","_t","Placeholder"],"mappings":"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"} \ No newline at end of file diff --git a/assets/StakingModal-DfcQ24zR.js b/assets/StakingModal-C-5cNmnL.js similarity index 98% rename from assets/StakingModal-DfcQ24zR.js rename to assets/StakingModal-C-5cNmnL.js index e873d8bb..1f0ff102 100644 --- a/assets/StakingModal-DfcQ24zR.js +++ b/assets/StakingModal-C-5cNmnL.js @@ -1,2 +1,2 @@ -import{r as i,M as oe,R as le,m as N,I as D,b as ie,p as ce,j as t,i as de,a as L,B as ue,c as T,k as Q,l as Z,T as pe,E as me,v as fe,W as z,t as K,s as he}from"./index-B4O4S1jL.js";import{u as ge}from"./useGateway-Dzwqxy1y.js";import{b as xe,d as ye,f as we,E as X,B as ve,S as be}from"./SuccessModal-CtcgJ46_.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},s=new Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="6b188896-17a3-4958-dd40-a92006e70bff",e._sentryDebugIdIdentifier="sentry-dbid-6b188896-17a3-4958-dd40-a92006e70bff")}catch{}})();var C=function(){return(C=Object.assign||function(e){for(var s,l=1,r=arguments.length;li.createElement("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},i.createElement("g",{id:"Frame",clipPath:"url(#clip0_2391_9440)"},i.createElement("path",{id:"Vector",d:"M8.00016 14.6663C11.6821 14.6663 14.6668 11.6816 14.6668 7.99967C14.6668 4.31778 11.6821 1.33301 8.00016 1.33301C4.31826 1.33301 1.3335 4.31778 1.3335 7.99967C1.3335 11.6816 4.31826 14.6663 8.00016 14.6663Z",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"}),i.createElement("path",{id:"Vector_2",d:"M8 10.6667V8",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"}),i.createElement("path",{id:"Vector_3",d:"M8 5.33301H8.00667",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"})),i.createElement("defs",null,i.createElement("clipPath",{id:"clip0_2391_9440"},i.createElement("rect",{width:16,height:16,fill:"white"})))),Ee=e=>i.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},i.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.4781 2.39428C10.9366 2.1271 11.4578 1.98633 11.9885 1.98633C12.5191 1.98633 13.0403 2.1271 13.4989 2.39428C13.9568 2.66112 14.3359 3.04451 14.5975 3.50542C14.5978 3.50601 14.5981 3.50659 14.5985 3.50717L22.5945 17.5002C22.5948 17.5008 22.5951 17.5013 22.5955 17.5019C22.858 17.9573 22.9963 18.4738 22.9964 18.9995C22.9965 19.5258 22.8582 20.0429 22.5953 20.4989C22.3323 20.9549 21.954 21.3336 21.4984 21.5971C21.0428 21.8607 20.5258 21.9997 19.9995 22.0002H4.00257C3.47536 22.0041 2.95641 21.869 2.49801 21.6084C2.03819 21.3471 1.65564 20.9688 1.38913 20.5119C1.12263 20.0551 0.981647 19.5359 0.980476 19.0069C0.979307 18.4789 1.11755 17.9598 1.38123 17.5023C1.38164 17.5016 1.38205 17.5009 1.38246 17.5002L9.37846 3.50717C9.3788 3.50659 9.37913 3.50601 9.37946 3.50542C9.64108 3.04451 10.0201 2.66112 10.4781 2.39428ZM11.9885 3.98633C11.8116 3.98633 11.6378 4.03325 11.485 4.12231C11.3322 4.21137 11.2057 4.33938 11.1185 4.49328L11.1167 4.49636L3.11448 18.5003C3.02632 18.653 2.98008 18.8262 2.98047 19.0025C2.98086 19.1788 3.02786 19.3519 3.11669 19.5042C3.20552 19.6565 3.33304 19.7826 3.48631 19.8697C3.63959 19.9568 3.81317 20.0019 3.98947 20.0003L3.99846 20.0002L19.9974 20.0002C20.1729 20 20.3452 19.9537 20.4971 19.8659C20.649 19.778 20.775 19.6518 20.8627 19.4998C20.9503 19.3478 20.9965 19.1754 20.9964 19C20.9964 18.8245 20.9502 18.6522 20.8624 18.5002L20.8602 18.4964L12.8602 4.49636L12.8585 4.49328C12.7712 4.33938 12.6448 4.21137 12.4919 4.12231C12.3391 4.03325 12.1654 3.98633 11.9885 3.98633ZM11.9985 8.00022C12.5507 8.00022 12.9985 8.44794 12.9985 9.00022V13.0002C12.9985 13.5525 12.5507 14.0002 11.9985 14.0002C11.4462 14.0002 10.9985 13.5525 10.9985 13.0002V9.00022C10.9985 8.44794 11.4462 8.00022 11.9985 8.00022ZM10.9985 17.0002C10.9985 16.4479 11.4462 16.0002 11.9985 16.0002H12.0085C12.5608 16.0002 13.0085 16.4479 13.0085 17.0002C13.0085 17.5525 12.5608 18.0002 12.0085 18.0002H11.9985C11.4462 18.0002 10.9985 17.5525 10.9985 17.0002Z",fill:"url(#paint0_linear_3023_6650)"}),i.createElement("defs",null,i.createElement("linearGradient",{id:"paint0_linear_3023_6650",x1:.980469,y1:22.0003,x2:23.87,y2:20.9457,gradientUnits:"userSpaceOnUse"},i.createElement("stop",{stopColor:"#FFB4B4"}),i.createElement("stop",{offset:1,stopColor:"#FF6C6C"})))),G=365,ee=5e-4,te=.9,Te=(e,s,l)=>{const a=e.valueOf()*ee*te/s,h=l.settings.delegateRewardShareRatio/100,o=new N(l.operatorStake).toIO(),n=new D(a*(1-h)),p=o.valueOf()>0?n.valueOf()/o.valueOf():-1,v=p*G;return{operatorStake:o,rewardsSharedPerEpoch:n,EEY:p,EAY:v}},Oe=(e,s,l)=>{const a=e.valueOf()*ee*te/s,h=l.settings.delegateRewardShareRatio/100,o=new N(l.totalDelegatedStake).toIO(),n=new D(a*h),p=o.valueOf()>0?n.valueOf()/o.valueOf():-1,v=p*G;return{totalDelegatedStake:o,rewardsSharedPerEpoch:n,EEY:p,EAY:v}},je=(e,s,l=!1)=>{const r=l?-1:1,a=s.valueOf()*r,h=a/(e.totalDelegatedStake.valueOf()+a),n=e.rewardsSharedPerEpoch.valueOf()*h/a,p=n*G;return{EEY:n,EAY:p}},Re=(e,s)=>{const{data:l}=ie(),{data:r}=ce();let a;if(l&&e&&r&&r>0&&!isNaN(s)){const h=l?Object.values(l).filter(p=>p.status=="joined").length:0,o=Oe(new N(r).toIO(),h,e);a=je(o,new D(Math.abs(s)),s<0)}return a},Ne=()=>t.jsx("div",{children:t.jsxs("div",{className:"flex gap-3 rounded bg-containerL3 p-4",children:[t.jsx(Ee,{width:40,height:20}),t.jsx("div",{className:"grow text-[0.8125rem] text-high",children:"30 days is the standard unstaking period. During this withdrawal time your tokens will be locked and will not be accruing rewards."})]})}),E=({label:e,value:s,className:l,isLink:r=!1,rightIcon:a})=>t.jsxs("div",{className:`flex items-center text-[0.8125rem] ${l}`,children:[t.jsx("div",{className:"text-left text-low",children:e}),t.jsx("div",{className:"grow"}),r&&s!=="-"?t.jsx("a",{className:"text-gradient",href:`https://${s}`,target:"_blank",rel:"noreferrer",children:s}):t.jsxs("div",{className:"flex items-center gap-1 text-left text-low",children:[s,a]})]}),_e=({onClose:e,ownerWallet:s})=>{const l=de(),r=L(m=>m.balances),a=L(m=>m.walletAddress),h=L(m=>m.arIOWriteableSDK),o=L(m=>m.ticker),[n,p]=i.useState(0),[v,$]=i.useState(""),[f,I]=i.useState(""),[c,g]=i.useState(""),[O,b]=i.useState(!1),[k,j]=i.useState(!1),S=(s==null?void 0:s.toString())??v,{data:d}=ge({ownerWalletAddress:S}),x=(d==null?void 0:d.settings.allowDelegatedStaking)??!1,u=a?d==null?void 0:d.delegates[a==null?void 0:a.toString()]:void 0,y=new N((u==null?void 0:u.delegatedStake)??0).toIO().valueOf(),w=n==0?y+parseFloat(f):y-parseFloat(c),se=n==0?parseFloat(f):-parseFloat(c),H=Re(d,se),ae=H&&w>0?(H.EAY*100).toLocaleString("en-us",{maximumFractionDigits:2})+"%":"-",P=new N((u==null?void 0:u.delegatedStake)??0).toIO().valueOf(),W=d?new N(d==null?void 0:d.settings.minDelegatedStake).toIO().valueOf():500,A=P>0?1:W,M={address:xe("Gateway Owner"),stakeAmount:ye("Stake Amount",o,A,r.io),unstakeAmount:we("Unstake Amount",o,P,W)},F=()=>!d||n==0&&!x?!1:n==0?M.stakeAmount(f)==null:M.unstakeAmount(c)==null,B=F()?r.io-parseFloat(f):"-",q="text-center py-3",J=`${q} bg-grey-700 border-b border-red-400`,V=`${q} bg-grey-1000 text-low`,ne=()=>{n==0?I(r.io+""):g(y+"")},U=!d||n==0&&(r.io{if(a&&h&&d&&F()){b(!0);try{if(n==0){const{id:m}=await h.delegateStake({target:S,stakeQty:new D(parseFloat(f)).toMIO()},z);K.info(`Increase Delegate Stake txID: ${m}`)}else{const{id:m}=await h.decreaseDelegateStake({target:S,decreaseQty:new D(parseFloat(c)).toMIO()},z);K.info(`Decrease Delegate Stake txID: ${m}`)}l.invalidateQueries({queryKey:["gateway",a.toString()],refetchType:"all"}),l.invalidateQueries({queryKey:["gateways"],refetchType:"all"}),j(!0)}catch(m){he(`${m}`)}finally{b(!1)}}},R={gatewayOwner:M.address(S),stakeAmount:M.stakeAmount(f),unstakeAmount:M.unstakeAmount(c),cannotStake:r.iop(0),children:t.jsx("span",{className:n==0?"text-gradient":"",children:"Staking"})}),t.jsx("button",{className:`${n==1?J:V} rounded-tr-lg`,onClick:()=>p(1),children:t.jsx("span",{className:n==1?"text-gradient":"",children:"Unstaking"})})]}),t.jsxs("div",{className:"flex flex-col p-8 pb-2",children:[t.jsx("div",{className:"text-left text-sm text-mid",children:"Gateway Owner:"}),s?t.jsx("div",{className:"py-3 text-left text-sm text-mid",children:s}):t.jsx("input",{className:"mt-3 size-full rounded-md border border-grey-800 bg-grey-1000 px-6 py-3 text-sm text-mid outline-none placeholder:text-grey-400 focus:text-high",type:"text",placeholder:"Enter wallet address for Gateway",value:v,onChange:m=>{$(m.target.value)},maxLength:43}),t.jsxs("div",{className:"mt-8 flex items-center",children:[t.jsx("div",{className:"text-left text-sm text-mid",children:"Amount:"}),t.jsx("div",{className:"grow"}),t.jsx("div",{className:"text-left text-xs text-low",children:n==0?r&&`Available: ${T(r.io)} ${o}`:`Available to Unstake: ${T(y)} ${o}`})]}),t.jsxs("div",{className:"mt-3 flex h-[3.25rem] items-center overflow-hidden rounded-md border border-grey-800",children:[t.jsx("input",{className:"size-full grow bg-grey-1000 px-6 py-3 text-sm text-mid outline-none placeholder:text-grey-400 focus:text-high",disabled:U,readOnly:U,type:"text",placeholder:`Enter amount of ${o} to ${n==0?"stake":"unstake"}`,value:n==0?f:c,onChange:m=>{const Y=m.target.value;Y&&isNaN(+m.target.value)||(n==0?I(Y):g(Y))}}),n==0&&d&&((f==null?void 0:f.length)>0||r.io0&&R.unstakeAmount&&t.jsx(X,{errorMessage:R.unstakeAmount,tooltipPadding:"3"}),t.jsx(Q,{className:"mr-3 h-7",onClick:U?void 0:ne,buttonType:Z.SECONDARY,active:!0,title:"Max",text:"Max"})]}),t.jsxs("div",{className:"mt-8",children:[n==0&&t.jsx(E,{className:"border-b border-divider pb-4",label:"Existing Stake:",value:`${P} ${o}`}),t.jsx(E,{className:"pb-1 pt-4",label:"Label:",value:d?d.settings.label:"-"}),t.jsx(E,{className:"py-1",label:"Domain:",isLink:!0,value:d?d.settings.fqdn:"-"}),t.jsx(E,{className:"py-1",label:"Delegate EAY:",value:ae,rightIcon:t.jsx(pe,{message:t.jsxs("div",{children:[t.jsx("p",{children:me}),t.jsx(Se,{className:"mt-4",children:fe})]}),children:t.jsx(Ce,{className:"size-[1.125rem]"})})}),t.jsx("div",{className:"pt-4 text-left",children:t.jsx(Ne,{})})]})]}),t.jsxs("div",{className:"flex size-full flex-col p-8",children:[t.jsx(E,{className:"py-1 first:text-mid last:text-mid",label:"Fee:",value:"- AR"}),n==0&&t.jsx(E,{className:"py-1",label:"Remaining Balance:",value:`${B!=="-"?T(+B):B} ${o}`}),t.jsx(E,{className:"py-1",label:"New Total Stake:",value:`${F()?n==0?T(y+parseFloat(f)):T(y-parseFloat(c)):"-"} ${o}`}),t.jsx("div",{className:F()?void 0:"pointer-events-none opacity-30",children:t.jsx(Q,{className:"mt-8 h-[3.25rem] w-full",onClick:re,buttonType:Z.PRIMARY,title:n==0?`Stake ${o}`:`Unstake ${o}`,text:n==0?`Stake ${o}`:`Unstake ${o}`})})]}),O&&t.jsx(ve,{onClose:()=>b(!1),message:"Sign the following data with your wallet to proceed."}),k&&t.jsx(be,{onClose:()=>{j(!1),e()},title:"Congratulations",bodyText:"You have successfully updated stake."})]})})};export{Se as M,_e as S,Ne as U,Ce as a,Oe as b,Te as c}; -//# sourceMappingURL=StakingModal-DfcQ24zR.js.map +import{r as i,M as oe,R as le,m as N,I as D,b as ie,p as ce,j as t,i as de,a as L,B as ue,c as T,k as Q,l as Z,T as pe,E as me,v as fe,W as z,t as K,s as he}from"./index-D-aTdIHH.js";import{u as ge}from"./useGateway-EWp64g_a.js";import{b as xe,d as ye,f as we,E as X,B as ve,S as be}from"./SuccessModal-B5bjpxfT.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},s=new Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="6b188896-17a3-4958-dd40-a92006e70bff",e._sentryDebugIdIdentifier="sentry-dbid-6b188896-17a3-4958-dd40-a92006e70bff")}catch{}})();var C=function(){return(C=Object.assign||function(e){for(var s,l=1,r=arguments.length;li.createElement("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},i.createElement("g",{id:"Frame",clipPath:"url(#clip0_2391_9440)"},i.createElement("path",{id:"Vector",d:"M8.00016 14.6663C11.6821 14.6663 14.6668 11.6816 14.6668 7.99967C14.6668 4.31778 11.6821 1.33301 8.00016 1.33301C4.31826 1.33301 1.3335 4.31778 1.3335 7.99967C1.3335 11.6816 4.31826 14.6663 8.00016 14.6663Z",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"}),i.createElement("path",{id:"Vector_2",d:"M8 10.6667V8",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"}),i.createElement("path",{id:"Vector_3",d:"M8 5.33301H8.00667",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"})),i.createElement("defs",null,i.createElement("clipPath",{id:"clip0_2391_9440"},i.createElement("rect",{width:16,height:16,fill:"white"})))),Ee=e=>i.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},i.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.4781 2.39428C10.9366 2.1271 11.4578 1.98633 11.9885 1.98633C12.5191 1.98633 13.0403 2.1271 13.4989 2.39428C13.9568 2.66112 14.3359 3.04451 14.5975 3.50542C14.5978 3.50601 14.5981 3.50659 14.5985 3.50717L22.5945 17.5002C22.5948 17.5008 22.5951 17.5013 22.5955 17.5019C22.858 17.9573 22.9963 18.4738 22.9964 18.9995C22.9965 19.5258 22.8582 20.0429 22.5953 20.4989C22.3323 20.9549 21.954 21.3336 21.4984 21.5971C21.0428 21.8607 20.5258 21.9997 19.9995 22.0002H4.00257C3.47536 22.0041 2.95641 21.869 2.49801 21.6084C2.03819 21.3471 1.65564 20.9688 1.38913 20.5119C1.12263 20.0551 0.981647 19.5359 0.980476 19.0069C0.979307 18.4789 1.11755 17.9598 1.38123 17.5023C1.38164 17.5016 1.38205 17.5009 1.38246 17.5002L9.37846 3.50717C9.3788 3.50659 9.37913 3.50601 9.37946 3.50542C9.64108 3.04451 10.0201 2.66112 10.4781 2.39428ZM11.9885 3.98633C11.8116 3.98633 11.6378 4.03325 11.485 4.12231C11.3322 4.21137 11.2057 4.33938 11.1185 4.49328L11.1167 4.49636L3.11448 18.5003C3.02632 18.653 2.98008 18.8262 2.98047 19.0025C2.98086 19.1788 3.02786 19.3519 3.11669 19.5042C3.20552 19.6565 3.33304 19.7826 3.48631 19.8697C3.63959 19.9568 3.81317 20.0019 3.98947 20.0003L3.99846 20.0002L19.9974 20.0002C20.1729 20 20.3452 19.9537 20.4971 19.8659C20.649 19.778 20.775 19.6518 20.8627 19.4998C20.9503 19.3478 20.9965 19.1754 20.9964 19C20.9964 18.8245 20.9502 18.6522 20.8624 18.5002L20.8602 18.4964L12.8602 4.49636L12.8585 4.49328C12.7712 4.33938 12.6448 4.21137 12.4919 4.12231C12.3391 4.03325 12.1654 3.98633 11.9885 3.98633ZM11.9985 8.00022C12.5507 8.00022 12.9985 8.44794 12.9985 9.00022V13.0002C12.9985 13.5525 12.5507 14.0002 11.9985 14.0002C11.4462 14.0002 10.9985 13.5525 10.9985 13.0002V9.00022C10.9985 8.44794 11.4462 8.00022 11.9985 8.00022ZM10.9985 17.0002C10.9985 16.4479 11.4462 16.0002 11.9985 16.0002H12.0085C12.5608 16.0002 13.0085 16.4479 13.0085 17.0002C13.0085 17.5525 12.5608 18.0002 12.0085 18.0002H11.9985C11.4462 18.0002 10.9985 17.5525 10.9985 17.0002Z",fill:"url(#paint0_linear_3023_6650)"}),i.createElement("defs",null,i.createElement("linearGradient",{id:"paint0_linear_3023_6650",x1:.980469,y1:22.0003,x2:23.87,y2:20.9457,gradientUnits:"userSpaceOnUse"},i.createElement("stop",{stopColor:"#FFB4B4"}),i.createElement("stop",{offset:1,stopColor:"#FF6C6C"})))),G=365,ee=5e-4,te=.9,Te=(e,s,l)=>{const a=e.valueOf()*ee*te/s,h=l.settings.delegateRewardShareRatio/100,o=new N(l.operatorStake).toIO(),n=new D(a*(1-h)),p=o.valueOf()>0?n.valueOf()/o.valueOf():-1,v=p*G;return{operatorStake:o,rewardsSharedPerEpoch:n,EEY:p,EAY:v}},Oe=(e,s,l)=>{const a=e.valueOf()*ee*te/s,h=l.settings.delegateRewardShareRatio/100,o=new N(l.totalDelegatedStake).toIO(),n=new D(a*h),p=o.valueOf()>0?n.valueOf()/o.valueOf():-1,v=p*G;return{totalDelegatedStake:o,rewardsSharedPerEpoch:n,EEY:p,EAY:v}},je=(e,s,l=!1)=>{const r=l?-1:1,a=s.valueOf()*r,h=a/(e.totalDelegatedStake.valueOf()+a),n=e.rewardsSharedPerEpoch.valueOf()*h/a,p=n*G;return{EEY:n,EAY:p}},Re=(e,s)=>{const{data:l}=ie(),{data:r}=ce();let a;if(l&&e&&r&&r>0&&!isNaN(s)){const h=l?Object.values(l).filter(p=>p.status=="joined").length:0,o=Oe(new N(r).toIO(),h,e);a=je(o,new D(Math.abs(s)),s<0)}return a},Ne=()=>t.jsx("div",{children:t.jsxs("div",{className:"flex gap-3 rounded bg-containerL3 p-4",children:[t.jsx(Ee,{width:40,height:20}),t.jsx("div",{className:"grow text-[0.8125rem] text-high",children:"30 days is the standard unstaking period. During this withdrawal time your tokens will be locked and will not be accruing rewards."})]})}),E=({label:e,value:s,className:l,isLink:r=!1,rightIcon:a})=>t.jsxs("div",{className:`flex items-center text-[0.8125rem] ${l}`,children:[t.jsx("div",{className:"text-left text-low",children:e}),t.jsx("div",{className:"grow"}),r&&s!=="-"?t.jsx("a",{className:"text-gradient",href:`https://${s}`,target:"_blank",rel:"noreferrer",children:s}):t.jsxs("div",{className:"flex items-center gap-1 text-left text-low",children:[s,a]})]}),_e=({onClose:e,ownerWallet:s})=>{const l=de(),r=L(m=>m.balances),a=L(m=>m.walletAddress),h=L(m=>m.arIOWriteableSDK),o=L(m=>m.ticker),[n,p]=i.useState(0),[v,$]=i.useState(""),[f,I]=i.useState(""),[c,g]=i.useState(""),[O,b]=i.useState(!1),[k,j]=i.useState(!1),S=(s==null?void 0:s.toString())??v,{data:d}=ge({ownerWalletAddress:S}),x=(d==null?void 0:d.settings.allowDelegatedStaking)??!1,u=a?d==null?void 0:d.delegates[a==null?void 0:a.toString()]:void 0,y=new N((u==null?void 0:u.delegatedStake)??0).toIO().valueOf(),w=n==0?y+parseFloat(f):y-parseFloat(c),se=n==0?parseFloat(f):-parseFloat(c),H=Re(d,se),ae=H&&w>0?(H.EAY*100).toLocaleString("en-us",{maximumFractionDigits:2})+"%":"-",P=new N((u==null?void 0:u.delegatedStake)??0).toIO().valueOf(),W=d?new N(d==null?void 0:d.settings.minDelegatedStake).toIO().valueOf():500,A=P>0?1:W,M={address:xe("Gateway Owner"),stakeAmount:ye("Stake Amount",o,A,r.io),unstakeAmount:we("Unstake Amount",o,P,W)},F=()=>!d||n==0&&!x?!1:n==0?M.stakeAmount(f)==null:M.unstakeAmount(c)==null,B=F()?r.io-parseFloat(f):"-",q="text-center py-3",J=`${q} bg-grey-700 border-b border-red-400`,V=`${q} bg-grey-1000 text-low`,ne=()=>{n==0?I(r.io+""):g(y+"")},U=!d||n==0&&(r.io{if(a&&h&&d&&F()){b(!0);try{if(n==0){const{id:m}=await h.delegateStake({target:S,stakeQty:new D(parseFloat(f)).toMIO()},z);K.info(`Increase Delegate Stake txID: ${m}`)}else{const{id:m}=await h.decreaseDelegateStake({target:S,decreaseQty:new D(parseFloat(c)).toMIO()},z);K.info(`Decrease Delegate Stake txID: ${m}`)}l.invalidateQueries({queryKey:["gateway",a.toString()],refetchType:"all"}),l.invalidateQueries({queryKey:["gateways"],refetchType:"all"}),j(!0)}catch(m){he(`${m}`)}finally{b(!1)}}},R={gatewayOwner:M.address(S),stakeAmount:M.stakeAmount(f),unstakeAmount:M.unstakeAmount(c),cannotStake:r.iop(0),children:t.jsx("span",{className:n==0?"text-gradient":"",children:"Staking"})}),t.jsx("button",{className:`${n==1?J:V} rounded-tr-lg`,onClick:()=>p(1),children:t.jsx("span",{className:n==1?"text-gradient":"",children:"Unstaking"})})]}),t.jsxs("div",{className:"flex flex-col p-8 pb-2",children:[t.jsx("div",{className:"text-left text-sm text-mid",children:"Gateway Owner:"}),s?t.jsx("div",{className:"py-3 text-left text-sm text-mid",children:s}):t.jsx("input",{className:"mt-3 size-full rounded-md border border-grey-800 bg-grey-1000 px-6 py-3 text-sm text-mid outline-none placeholder:text-grey-400 focus:text-high",type:"text",placeholder:"Enter wallet address for Gateway",value:v,onChange:m=>{$(m.target.value)},maxLength:43}),t.jsxs("div",{className:"mt-8 flex items-center",children:[t.jsx("div",{className:"text-left text-sm text-mid",children:"Amount:"}),t.jsx("div",{className:"grow"}),t.jsx("div",{className:"text-left text-xs text-low",children:n==0?r&&`Available: ${T(r.io)} ${o}`:`Available to Unstake: ${T(y)} ${o}`})]}),t.jsxs("div",{className:"mt-3 flex h-[3.25rem] items-center overflow-hidden rounded-md border border-grey-800",children:[t.jsx("input",{className:"size-full grow bg-grey-1000 px-6 py-3 text-sm text-mid outline-none placeholder:text-grey-400 focus:text-high",disabled:U,readOnly:U,type:"text",placeholder:`Enter amount of ${o} to ${n==0?"stake":"unstake"}`,value:n==0?f:c,onChange:m=>{const Y=m.target.value;Y&&isNaN(+m.target.value)||(n==0?I(Y):g(Y))}}),n==0&&d&&((f==null?void 0:f.length)>0||r.io0&&R.unstakeAmount&&t.jsx(X,{errorMessage:R.unstakeAmount,tooltipPadding:"3"}),t.jsx(Q,{className:"mr-3 h-7",onClick:U?void 0:ne,buttonType:Z.SECONDARY,active:!0,title:"Max",text:"Max"})]}),t.jsxs("div",{className:"mt-8",children:[n==0&&t.jsx(E,{className:"border-b border-divider pb-4",label:"Existing Stake:",value:`${P} ${o}`}),t.jsx(E,{className:"pb-1 pt-4",label:"Label:",value:d?d.settings.label:"-"}),t.jsx(E,{className:"py-1",label:"Domain:",isLink:!0,value:d?d.settings.fqdn:"-"}),t.jsx(E,{className:"py-1",label:"Delegate EAY:",value:ae,rightIcon:t.jsx(pe,{message:t.jsxs("div",{children:[t.jsx("p",{children:me}),t.jsx(Se,{className:"mt-4",children:fe})]}),children:t.jsx(Ce,{className:"size-[1.125rem]"})})}),t.jsx("div",{className:"pt-4 text-left",children:t.jsx(Ne,{})})]})]}),t.jsxs("div",{className:"flex size-full flex-col p-8",children:[t.jsx(E,{className:"py-1 first:text-mid last:text-mid",label:"Fee:",value:"- AR"}),n==0&&t.jsx(E,{className:"py-1",label:"Remaining Balance:",value:`${B!=="-"?T(+B):B} ${o}`}),t.jsx(E,{className:"py-1",label:"New Total Stake:",value:`${F()?n==0?T(y+parseFloat(f)):T(y-parseFloat(c)):"-"} ${o}`}),t.jsx("div",{className:F()?void 0:"pointer-events-none opacity-30",children:t.jsx(Q,{className:"mt-8 h-[3.25rem] w-full",onClick:re,buttonType:Z.PRIMARY,title:n==0?`Stake ${o}`:`Unstake ${o}`,text:n==0?`Stake ${o}`:`Unstake ${o}`})})]}),O&&t.jsx(ve,{onClose:()=>b(!1),message:"Sign the following data with your wallet to proceed."}),k&&t.jsx(be,{onClose:()=>{j(!1),e()},title:"Congratulations",bodyText:"You have successfully updated stake."})]})})};export{Se as M,_e as S,Ne as U,Ce as a,Oe as b,Te as c}; +//# sourceMappingURL=StakingModal-C-5cNmnL.js.map diff --git a/assets/StakingModal-DfcQ24zR.js.map b/assets/StakingModal-C-5cNmnL.js.map similarity index 99% rename from assets/StakingModal-DfcQ24zR.js.map rename to assets/StakingModal-C-5cNmnL.js.map index f023fa9f..3c0cc610 100644 --- a/assets/StakingModal-DfcQ24zR.js.map +++ b/assets/StakingModal-C-5cNmnL.js.map @@ -1 +1 @@ -{"version":3,"file":"StakingModal-DfcQ24zR.js","sources":["../../node_modules/better-react-mathjax/esm/MathJax/MathJax.js","../../src/components/icons/info_icon.svg?react","../../src/components/icons/warning_triangle.svg?react","../../src/utils/rewards.ts","../../src/hooks/useRewardsInfo.ts","../../src/components/modals/UnstakeWarning.tsx","../../src/components/modals/StakingModal.tsx"],"sourcesContent":["var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Frame\", clipPath: \"url(#clip0_2391_9440)\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M8.00016 14.6663C11.6821 14.6663 14.6668 11.6816 14.6668 7.99967C14.6668 4.31778 11.6821 1.33301 8.00016 1.33301C4.31826 1.33301 1.3335 4.31778 1.3335 7.99967C1.3335 11.6816 4.31826 14.6663 8.00016 14.6663Z\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_2\", d: \"M8 10.6667V8\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_3\", d: \"M8 5.33301H8.00667\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_2391_9440\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 16, height: 16, fill: \"white\" }))));\nexport default SvgInfoIcon;\n","import * as React from \"react\";\nconst SvgWarningTriangle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.4781 2.39428C10.9366 2.1271 11.4578 1.98633 11.9885 1.98633C12.5191 1.98633 13.0403 2.1271 13.4989 2.39428C13.9568 2.66112 14.3359 3.04451 14.5975 3.50542C14.5978 3.50601 14.5981 3.50659 14.5985 3.50717L22.5945 17.5002C22.5948 17.5008 22.5951 17.5013 22.5955 17.5019C22.858 17.9573 22.9963 18.4738 22.9964 18.9995C22.9965 19.5258 22.8582 20.0429 22.5953 20.4989C22.3323 20.9549 21.954 21.3336 21.4984 21.5971C21.0428 21.8607 20.5258 21.9997 19.9995 22.0002H4.00257C3.47536 22.0041 2.95641 21.869 2.49801 21.6084C2.03819 21.3471 1.65564 20.9688 1.38913 20.5119C1.12263 20.0551 0.981647 19.5359 0.980476 19.0069C0.979307 18.4789 1.11755 17.9598 1.38123 17.5023C1.38164 17.5016 1.38205 17.5009 1.38246 17.5002L9.37846 3.50717C9.3788 3.50659 9.37913 3.50601 9.37946 3.50542C9.64108 3.04451 10.0201 2.66112 10.4781 2.39428ZM11.9885 3.98633C11.8116 3.98633 11.6378 4.03325 11.485 4.12231C11.3322 4.21137 11.2057 4.33938 11.1185 4.49328L11.1167 4.49636L3.11448 18.5003C3.02632 18.653 2.98008 18.8262 2.98047 19.0025C2.98086 19.1788 3.02786 19.3519 3.11669 19.5042C3.20552 19.6565 3.33304 19.7826 3.48631 19.8697C3.63959 19.9568 3.81317 20.0019 3.98947 20.0003L3.99846 20.0002L19.9974 20.0002C20.1729 20 20.3452 19.9537 20.4971 19.8659C20.649 19.778 20.775 19.6518 20.8627 19.4998C20.9503 19.3478 20.9965 19.1754 20.9964 19C20.9964 18.8245 20.9502 18.6522 20.8624 18.5002L20.8602 18.4964L12.8602 4.49636L12.8585 4.49328C12.7712 4.33938 12.6448 4.21137 12.4919 4.12231C12.3391 4.03325 12.1654 3.98633 11.9885 3.98633ZM11.9985 8.00022C12.5507 8.00022 12.9985 8.44794 12.9985 9.00022V13.0002C12.9985 13.5525 12.5507 14.0002 11.9985 14.0002C11.4462 14.0002 10.9985 13.5525 10.9985 13.0002V9.00022C10.9985 8.44794 11.4462 8.00022 11.9985 8.00022ZM10.9985 17.0002C10.9985 16.4479 11.4462 16.0002 11.9985 16.0002H12.0085C12.5608 16.0002 13.0085 16.4479 13.0085 17.0002C13.0085 17.5525 12.5608 18.0002 12.0085 18.0002H11.9985C11.4462 18.0002 10.9985 17.5525 10.9985 17.0002Z\", fill: \"url(#paint0_linear_3023_6650)\" }), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"paint0_linear_3023_6650\", x1: 0.980469, y1: 22.0003, x2: 23.87, y2: 20.9457, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#FFB4B4\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#FF6C6C\" }))));\nexport default SvgWarningTriangle;\n","import { AoGateway, IOToken, mIOToken } from '@ar.io/sdk/web';\n\nconst EPOCHS_PER_YEAR = 365;\nconst EPOCH_DISTRIBUTION_RATIO = 0.0005; // 0.05%\nconst GATEWAY_REWARDS_RATIO = 0.9; // 90%\n// const OBSERVER_REWARDS_RATIO = .05; // 5%\n\nexport interface GatewayRewards {\n totalDelegatedStake: IOToken;\n rewardsSharedPerEpoch: IOToken;\n EEY: number;\n EAY: number;\n}\n\nexport interface OperatorRewards {\n operatorStake: IOToken;\n rewardsSharedPerEpoch: IOToken;\n EEY: number;\n EAY: number;\n}\n\n\nexport interface UserRewards {\n EEY: number;\n EAY: number;\n}\n\n\nexport const calculateOperatorRewards = (\n protocolBalance: IOToken,\n totalGateways: number,\n gateway: AoGateway,\n): OperatorRewards => {\n const epochRewards = protocolBalance.valueOf() * EPOCH_DISTRIBUTION_RATIO;\n const baseGatewayReward =\n (epochRewards * GATEWAY_REWARDS_RATIO) / totalGateways;\n\n const gatewayRewardShareRatio =\n gateway.settings.delegateRewardShareRatio / 100;\n const operatorStake = new mIOToken(gateway.operatorStake).toIO();\n\n const rewardsSharedPerEpoch = new IOToken(\n baseGatewayReward * (1 - gatewayRewardShareRatio),\n );\n\n // Return -1 if totalDelegatedStake is 0. This signals 0 stake and allows calling\n // code to use the value for sorting purposes.\n const EEY =\n operatorStake.valueOf() > 0\n ? rewardsSharedPerEpoch.valueOf() / operatorStake.valueOf()\n : -1;\n const EAY = EEY * EPOCHS_PER_YEAR;\n\n return {\n operatorStake,\n rewardsSharedPerEpoch,\n EEY,\n EAY,\n };\n};\n\nexport const calculateGatewayRewards = (\n protocolBalance: IOToken,\n totalGateways: number,\n gateway: AoGateway,\n): GatewayRewards => {\n const epochRewards = protocolBalance.valueOf() * EPOCH_DISTRIBUTION_RATIO;\n const baseGatewayReward =\n (epochRewards * GATEWAY_REWARDS_RATIO) / totalGateways;\n\n const gatewayRewardShareRatio =\n gateway.settings.delegateRewardShareRatio / 100;\n const totalDelegatedStake = new mIOToken(gateway.totalDelegatedStake).toIO();\n\n const rewardsSharedPerEpoch = new IOToken(\n baseGatewayReward * gatewayRewardShareRatio,\n );\n\n // Return -1 if totalDelegatedStake is 0. This signals 0 stake and allows calling\n // code to use the value for sorting purposes.\n const EEY =\n totalDelegatedStake.valueOf() > 0\n ? rewardsSharedPerEpoch.valueOf() / totalDelegatedStake.valueOf()\n : -1;\n const EAY = EEY * EPOCHS_PER_YEAR;\n\n return {\n totalDelegatedStake,\n rewardsSharedPerEpoch,\n EEY,\n EAY,\n };\n};\n\nexport const calculateUserRewards = (\n gatewayRewards: GatewayRewards,\n userDelegatedStake: IOToken,\n removingStake = false\n): UserRewards => {\n const multiplier = removingStake ? -1 : 1;\n const delegatedStake = userDelegatedStake.valueOf() * multiplier;\n\n const stakeProportion =\n delegatedStake /\n (gatewayRewards.totalDelegatedStake.valueOf() + delegatedStake);\n const epochReward =\n gatewayRewards.rewardsSharedPerEpoch.valueOf() * stakeProportion;\n\n const EEY = epochReward / delegatedStake;\n const EAY = EEY * EPOCHS_PER_YEAR;\n\n return {\n EEY,\n EAY,\n };\n};\n","import { AoGateway, IOToken, mIOToken } from '@ar.io/sdk/web';\nimport {\n UserRewards,\n calculateGatewayRewards,\n calculateUserRewards,\n} from '@src/utils/rewards';\nimport useGateways from './useGateways';\nimport useProtocolBalance from './useProtocolBalance';\n\nconst useRewardsInfo = (gateway: AoGateway | undefined, userStake: number) => {\n const { data: gateways } = useGateways();\n const { data: protocolBalance } = useProtocolBalance();\n\n let res: UserRewards | undefined = undefined;\n\n if (\n gateways &&\n gateway &&\n protocolBalance &&\n protocolBalance > 0 &&\n !isNaN(userStake)\n ) {\n const numGateways = gateways\n ? Object.values(gateways).filter((g) => g.status == 'joined').length\n : 0;\n const gatewayRewards = calculateGatewayRewards(\n new mIOToken(protocolBalance).toIO(),\n numGateways,\n gateway,\n );\n\n const userRewards = calculateUserRewards(\n gatewayRewards,\n new IOToken(Math.abs(userStake)),\n userStake < 0,\n );\n res = userRewards;\n }\n\n return res;\n};\n\nexport default useRewardsInfo;\n","import { WarningTriangleIcon } from '../icons';\n\nconst UnstakeWarning = () => {\n return (\n
\n
\n \n
\n 30 days is the standard unstaking period. During this withdrawal time\n your tokens will be locked and will not be accruing rewards.\n
\n
\n
\n );\n};\n\nexport default UnstakeWarning;\n","import { IOToken, mIOToken } from '@ar.io/sdk/web';\nimport {\n EAY_TOOLTIP_FORMULA,\n EAY_TOOLTIP_TEXT,\n WRITE_OPTIONS,\n log,\n} from '@src/constants';\nimport useGateway from '@src/hooks/useGateway';\nimport useRewardsInfo from '@src/hooks/useRewardsInfo';\nimport { useGlobalState } from '@src/store';\nimport { formatWithCommas } from '@src/utils';\nimport { showErrorToast } from '@src/utils/toast';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { MathJax } from 'better-react-mathjax';\nimport { useState } from 'react';\nimport Button, { ButtonType } from '../Button';\nimport Tooltip from '../Tooltip';\nimport ErrorMessageIcon from '../forms/ErrorMessageIcon';\nimport {\n validateIOAmount,\n validateUnstakeAmount,\n validateWalletAddress,\n} from '../forms/validation';\nimport { InfoIcon } from '../icons';\nimport BaseModal from './BaseModal';\nimport BlockingMessageModal from './BlockingMessageModal';\nimport SuccessModal from './SuccessModal';\nimport UnstakeWarning from './UnstakeWarning';\n\nconst DisplayRow = ({\n label,\n value,\n className,\n isLink = false,\n rightIcon,\n}: {\n label: string;\n value: string;\n isLink?: boolean;\n className?: string;\n rightIcon?: React.ReactNode;\n}) => {\n return (\n
\n
{label}
\n
\n {isLink && value !== '-' ? (\n \n {value}\n \n ) : (\n
\n {value}\n {rightIcon}\n
\n )}\n
\n );\n};\n\nconst StakingModal = ({\n onClose,\n ownerWallet,\n}: {\n open: boolean;\n onClose: () => void;\n ownerWallet?: string;\n}) => {\n const queryClient = useQueryClient();\n\n const balances = useGlobalState((state) => state.balances);\n const walletAddress = useGlobalState((state) => state.walletAddress);\n const arIOWriteableSDK = useGlobalState((state) => state.arIOWriteableSDK);\n const ticker = useGlobalState((state) => state.ticker);\n\n const [tab, setTab] = useState(0);\n const [userEnteredWalletAddress, setUserEnteredWalletAddress] =\n useState('');\n\n const [amountToStake, setAmountToStake] = useState('');\n const [amountToUnstake, setAmountToUnstake] = useState('');\n\n const [showBlockingMessageModal, setShowBlockingMessageModal] =\n useState(false);\n const [showSuccessModal, setShowSuccessModal] = useState(false);\n\n const gatewayOwnerWallet =\n ownerWallet?.toString() ?? userEnteredWalletAddress;\n\n const { data: gateway } = useGateway({\n ownerWalletAddress: gatewayOwnerWallet,\n });\n\n const allowDelegatedStaking =\n gateway?.settings.allowDelegatedStaking ?? false;\n\n const delegateData = walletAddress\n ? gateway?.delegates[walletAddress?.toString()]\n : undefined;\n const currentStake = new mIOToken(delegateData?.delegatedStake ?? 0)\n .toIO()\n .valueOf();\n\n const newTotalStake =\n tab == 0\n ? currentStake + parseFloat(amountToStake)\n : currentStake - parseFloat(amountToUnstake);\n const newStake = tab == 0 ? parseFloat(amountToStake) : -parseFloat(amountToUnstake);\n const rewardsInfo = useRewardsInfo(gateway, newStake);\n const EAY =\n rewardsInfo && newTotalStake > 0\n ? (rewardsInfo.EAY * 100).toLocaleString('en-us', {\n maximumFractionDigits: 2,\n }) + '%'\n : '-';\n\n const existingStake = new mIOToken(delegateData?.delegatedStake ?? 0)\n .toIO()\n .valueOf();\n const minDelegatedStake = gateway\n ? new mIOToken(gateway?.settings.minDelegatedStake).toIO().valueOf()\n : 500;\n const minRequiredStakeToAdd = existingStake > 0 ? 1 : minDelegatedStake;\n\n const validators = {\n address: validateWalletAddress('Gateway Owner'),\n stakeAmount: validateIOAmount(\n 'Stake Amount',\n ticker,\n minRequiredStakeToAdd,\n balances.io,\n ),\n unstakeAmount: validateUnstakeAmount(\n 'Unstake Amount',\n ticker,\n existingStake,\n minDelegatedStake,\n ),\n };\n\n const isFormValid = () => {\n if (!gateway || (tab == 0 && !allowDelegatedStaking)) {\n return false;\n }\n if (tab == 0) {\n return validators.stakeAmount(amountToStake) == undefined;\n } else {\n return validators.unstakeAmount(amountToUnstake) == undefined;\n }\n };\n\n const remainingBalance = isFormValid()\n ? balances.io - parseFloat(amountToStake)\n : '-';\n\n const baseTabClassName = 'text-center py-3';\n const selectedTabClassNames = `${baseTabClassName} bg-grey-700 border-b border-red-400`;\n const nonSelectedTabClassNames = `${baseTabClassName} bg-grey-1000 text-low`;\n\n const setMaxAmount = () => {\n if (tab == 0) {\n setAmountToStake(balances.io + '');\n } else {\n setAmountToUnstake(currentStake + '');\n }\n };\n\n const disableInput =\n !gateway ||\n (tab == 0 &&\n (balances.io < minRequiredStakeToAdd || !allowDelegatedStaking)) ||\n (tab == 1 && currentStake <= 0);\n\n const submitForm = async () => {\n if (walletAddress && arIOWriteableSDK && gateway && isFormValid()) {\n setShowBlockingMessageModal(true);\n\n try {\n if (tab == 0) {\n const { id: txID } = await arIOWriteableSDK.delegateStake(\n {\n target: gatewayOwnerWallet,\n stakeQty: new IOToken(parseFloat(amountToStake)).toMIO(),\n },\n WRITE_OPTIONS,\n );\n\n log.info(`Increase Delegate Stake txID: ${txID}`);\n } else {\n const { id: txID } = await arIOWriteableSDK.decreaseDelegateStake(\n {\n target: gatewayOwnerWallet,\n decreaseQty: new IOToken(parseFloat(amountToUnstake)).toMIO(),\n },\n WRITE_OPTIONS,\n );\n\n log.info(`Decrease Delegate Stake txID: ${txID}`);\n }\n\n queryClient.invalidateQueries({\n queryKey: ['gateway', walletAddress.toString()],\n refetchType: 'all',\n });\n queryClient.invalidateQueries({\n queryKey: ['gateways'],\n refetchType: 'all',\n });\n\n setShowSuccessModal(true);\n } catch (e: any) {\n showErrorToast(`${e}`);\n } finally {\n setShowBlockingMessageModal(false);\n }\n }\n };\n\n const errorMessages = {\n gatewayOwner: validators.address(gatewayOwnerWallet),\n stakeAmount: validators.stakeAmount(amountToStake),\n unstakeAmount: validators.unstakeAmount(amountToUnstake),\n cannotStake:\n balances.io < minRequiredStakeToAdd\n ? `Insufficient balance, at least ${minRequiredStakeToAdd} IO required.`\n : !allowDelegatedStaking\n ? 'Gateway does not allow delegated staking.'\n : undefined,\n };\n\n return (\n \n
\n
\n setTab(0)}\n >\n Staking\n \n setTab(1)}\n >\n Unstaking\n \n
\n
\n
Gateway Owner:
\n {ownerWallet ? (\n
\n {ownerWallet}\n
\n ) : (\n {\n setUserEnteredWalletAddress(e.target.value);\n }}\n maxLength={43}\n />\n )}\n
\n
Amount:
\n
\n
\n {tab == 0\n ? balances &&\n `Available: ${formatWithCommas(balances.io)} ${ticker}`\n : `Available to Unstake: ${formatWithCommas(currentStake)} ${ticker}`}\n
\n
\n
\n {\n const textValue = e.target.value;\n\n if (textValue && isNaN(+e.target.value)) {\n return;\n }\n\n if (tab == 0) {\n setAmountToStake(textValue);\n } else {\n setAmountToUnstake(textValue);\n }\n }}\n >\n {tab == 0 &&\n gateway &&\n (amountToStake?.length > 0 ||\n balances.io < minRequiredStakeToAdd ||\n !allowDelegatedStaking) &&\n (errorMessages.cannotStake || errorMessages.stakeAmount) && (\n \n )}\n {tab == 1 &&\n amountToUnstake?.length > 0 &&\n errorMessages.unstakeAmount && (\n \n )}\n \n
\n
\n {tab == 0 && (\n \n )}\n \n\n \n\n \n

{EAY_TOOLTIP_TEXT}

\n {EAY_TOOLTIP_FORMULA}\n
\n }\n >\n \n \n }\n />\n\n
\n \n
\n
\n
\n
\n \n\n {tab == 0 && (\n \n )}\n \n \n \n
\n \n {showBlockingMessageModal && (\n setShowBlockingMessageModal(false)}\n message=\"Sign the following data with your wallet to proceed.\"\n >\n )}\n {showSuccessModal && (\n {\n setShowSuccessModal(false);\n onClose();\n }}\n title=\"Congratulations\"\n bodyText=\"You have successfully updated stake.\"\n />\n )}\n \n
\n );\n};\n\nexport default StakingModal;\n"],"names":["__assign","t","e","n","i","__rest","typesettingFailed","MathJax","r","t2","h","m","v","f","p","_","o","b","s","u","a","l","c","y","reactExports","d","MathJaxBaseContext","g","e2","n2","t3","React","SvgInfoIcon","props","SvgWarningTriangle","EPOCHS_PER_YEAR","EPOCH_DISTRIBUTION_RATIO","GATEWAY_REWARDS_RATIO","calculateOperatorRewards","protocolBalance","totalGateways","gateway","baseGatewayReward","gatewayRewardShareRatio","operatorStake","mIOToken","rewardsSharedPerEpoch","IOToken","EEY","EAY","calculateGatewayRewards","totalDelegatedStake","calculateUserRewards","gatewayRewards","userDelegatedStake","removingStake","multiplier","delegatedStake","stakeProportion","useRewardsInfo","userStake","gateways","useGateways","useProtocolBalance","res","numGateways","UnstakeWarning","jsxRuntimeExports","DisplayRow","label","value","className","isLink","rightIcon","StakingModal","onClose","ownerWallet","queryClient","useQueryClient","balances","useGlobalState","state","walletAddress","arIOWriteableSDK","ticker","tab","setTab","userEnteredWalletAddress","setUserEnteredWalletAddress","amountToStake","setAmountToStake","amountToUnstake","setAmountToUnstake","showBlockingMessageModal","setShowBlockingMessageModal","showSuccessModal","setShowSuccessModal","gatewayOwnerWallet","useGateway","allowDelegatedStaking","delegateData","currentStake","newTotalStake","newStake","rewardsInfo","existingStake","minDelegatedStake","minRequiredStakeToAdd","validators","validateWalletAddress","validateIOAmount","validateUnstakeAmount","isFormValid","remainingBalance","baseTabClassName","selectedTabClassNames","nonSelectedTabClassNames","setMaxAmount","disableInput","submitForm","txID","WRITE_OPTIONS","log","showErrorToast","errorMessages","BaseModal","formatWithCommas","textValue","ErrorMessageIcon","Button","ButtonType","Tooltip","EAY_TOOLTIP_TEXT","EAY_TOOLTIP_FORMULA","BlockingMessageModal","SuccessModal"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"StakingModal-C-5cNmnL.js","sources":["../../node_modules/better-react-mathjax/esm/MathJax/MathJax.js","../../src/components/icons/info_icon.svg?react","../../src/components/icons/warning_triangle.svg?react","../../src/utils/rewards.ts","../../src/hooks/useRewardsInfo.ts","../../src/components/modals/UnstakeWarning.tsx","../../src/components/modals/StakingModal.tsx"],"sourcesContent":["var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Frame\", clipPath: \"url(#clip0_2391_9440)\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M8.00016 14.6663C11.6821 14.6663 14.6668 11.6816 14.6668 7.99967C14.6668 4.31778 11.6821 1.33301 8.00016 1.33301C4.31826 1.33301 1.3335 4.31778 1.3335 7.99967C1.3335 11.6816 4.31826 14.6663 8.00016 14.6663Z\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_2\", d: \"M8 10.6667V8\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_3\", d: \"M8 5.33301H8.00667\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_2391_9440\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 16, height: 16, fill: \"white\" }))));\nexport default SvgInfoIcon;\n","import * as React from \"react\";\nconst SvgWarningTriangle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.4781 2.39428C10.9366 2.1271 11.4578 1.98633 11.9885 1.98633C12.5191 1.98633 13.0403 2.1271 13.4989 2.39428C13.9568 2.66112 14.3359 3.04451 14.5975 3.50542C14.5978 3.50601 14.5981 3.50659 14.5985 3.50717L22.5945 17.5002C22.5948 17.5008 22.5951 17.5013 22.5955 17.5019C22.858 17.9573 22.9963 18.4738 22.9964 18.9995C22.9965 19.5258 22.8582 20.0429 22.5953 20.4989C22.3323 20.9549 21.954 21.3336 21.4984 21.5971C21.0428 21.8607 20.5258 21.9997 19.9995 22.0002H4.00257C3.47536 22.0041 2.95641 21.869 2.49801 21.6084C2.03819 21.3471 1.65564 20.9688 1.38913 20.5119C1.12263 20.0551 0.981647 19.5359 0.980476 19.0069C0.979307 18.4789 1.11755 17.9598 1.38123 17.5023C1.38164 17.5016 1.38205 17.5009 1.38246 17.5002L9.37846 3.50717C9.3788 3.50659 9.37913 3.50601 9.37946 3.50542C9.64108 3.04451 10.0201 2.66112 10.4781 2.39428ZM11.9885 3.98633C11.8116 3.98633 11.6378 4.03325 11.485 4.12231C11.3322 4.21137 11.2057 4.33938 11.1185 4.49328L11.1167 4.49636L3.11448 18.5003C3.02632 18.653 2.98008 18.8262 2.98047 19.0025C2.98086 19.1788 3.02786 19.3519 3.11669 19.5042C3.20552 19.6565 3.33304 19.7826 3.48631 19.8697C3.63959 19.9568 3.81317 20.0019 3.98947 20.0003L3.99846 20.0002L19.9974 20.0002C20.1729 20 20.3452 19.9537 20.4971 19.8659C20.649 19.778 20.775 19.6518 20.8627 19.4998C20.9503 19.3478 20.9965 19.1754 20.9964 19C20.9964 18.8245 20.9502 18.6522 20.8624 18.5002L20.8602 18.4964L12.8602 4.49636L12.8585 4.49328C12.7712 4.33938 12.6448 4.21137 12.4919 4.12231C12.3391 4.03325 12.1654 3.98633 11.9885 3.98633ZM11.9985 8.00022C12.5507 8.00022 12.9985 8.44794 12.9985 9.00022V13.0002C12.9985 13.5525 12.5507 14.0002 11.9985 14.0002C11.4462 14.0002 10.9985 13.5525 10.9985 13.0002V9.00022C10.9985 8.44794 11.4462 8.00022 11.9985 8.00022ZM10.9985 17.0002C10.9985 16.4479 11.4462 16.0002 11.9985 16.0002H12.0085C12.5608 16.0002 13.0085 16.4479 13.0085 17.0002C13.0085 17.5525 12.5608 18.0002 12.0085 18.0002H11.9985C11.4462 18.0002 10.9985 17.5525 10.9985 17.0002Z\", fill: \"url(#paint0_linear_3023_6650)\" }), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"paint0_linear_3023_6650\", x1: 0.980469, y1: 22.0003, x2: 23.87, y2: 20.9457, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#FFB4B4\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#FF6C6C\" }))));\nexport default SvgWarningTriangle;\n","import { AoGateway, IOToken, mIOToken } from '@ar.io/sdk/web';\n\nconst EPOCHS_PER_YEAR = 365;\nconst EPOCH_DISTRIBUTION_RATIO = 0.0005; // 0.05%\nconst GATEWAY_REWARDS_RATIO = 0.9; // 90%\n// const OBSERVER_REWARDS_RATIO = .05; // 5%\n\nexport interface GatewayRewards {\n totalDelegatedStake: IOToken;\n rewardsSharedPerEpoch: IOToken;\n EEY: number;\n EAY: number;\n}\n\nexport interface OperatorRewards {\n operatorStake: IOToken;\n rewardsSharedPerEpoch: IOToken;\n EEY: number;\n EAY: number;\n}\n\n\nexport interface UserRewards {\n EEY: number;\n EAY: number;\n}\n\n\nexport const calculateOperatorRewards = (\n protocolBalance: IOToken,\n totalGateways: number,\n gateway: AoGateway,\n): OperatorRewards => {\n const epochRewards = protocolBalance.valueOf() * EPOCH_DISTRIBUTION_RATIO;\n const baseGatewayReward =\n (epochRewards * GATEWAY_REWARDS_RATIO) / totalGateways;\n\n const gatewayRewardShareRatio =\n gateway.settings.delegateRewardShareRatio / 100;\n const operatorStake = new mIOToken(gateway.operatorStake).toIO();\n\n const rewardsSharedPerEpoch = new IOToken(\n baseGatewayReward * (1 - gatewayRewardShareRatio),\n );\n\n // Return -1 if totalDelegatedStake is 0. This signals 0 stake and allows calling\n // code to use the value for sorting purposes.\n const EEY =\n operatorStake.valueOf() > 0\n ? rewardsSharedPerEpoch.valueOf() / operatorStake.valueOf()\n : -1;\n const EAY = EEY * EPOCHS_PER_YEAR;\n\n return {\n operatorStake,\n rewardsSharedPerEpoch,\n EEY,\n EAY,\n };\n};\n\nexport const calculateGatewayRewards = (\n protocolBalance: IOToken,\n totalGateways: number,\n gateway: AoGateway,\n): GatewayRewards => {\n const epochRewards = protocolBalance.valueOf() * EPOCH_DISTRIBUTION_RATIO;\n const baseGatewayReward =\n (epochRewards * GATEWAY_REWARDS_RATIO) / totalGateways;\n\n const gatewayRewardShareRatio =\n gateway.settings.delegateRewardShareRatio / 100;\n const totalDelegatedStake = new mIOToken(gateway.totalDelegatedStake).toIO();\n\n const rewardsSharedPerEpoch = new IOToken(\n baseGatewayReward * gatewayRewardShareRatio,\n );\n\n // Return -1 if totalDelegatedStake is 0. This signals 0 stake and allows calling\n // code to use the value for sorting purposes.\n const EEY =\n totalDelegatedStake.valueOf() > 0\n ? rewardsSharedPerEpoch.valueOf() / totalDelegatedStake.valueOf()\n : -1;\n const EAY = EEY * EPOCHS_PER_YEAR;\n\n return {\n totalDelegatedStake,\n rewardsSharedPerEpoch,\n EEY,\n EAY,\n };\n};\n\nexport const calculateUserRewards = (\n gatewayRewards: GatewayRewards,\n userDelegatedStake: IOToken,\n removingStake = false\n): UserRewards => {\n const multiplier = removingStake ? -1 : 1;\n const delegatedStake = userDelegatedStake.valueOf() * multiplier;\n\n const stakeProportion =\n delegatedStake /\n (gatewayRewards.totalDelegatedStake.valueOf() + delegatedStake);\n const epochReward =\n gatewayRewards.rewardsSharedPerEpoch.valueOf() * stakeProportion;\n\n const EEY = epochReward / delegatedStake;\n const EAY = EEY * EPOCHS_PER_YEAR;\n\n return {\n EEY,\n EAY,\n };\n};\n","import { AoGateway, IOToken, mIOToken } from '@ar.io/sdk/web';\nimport {\n UserRewards,\n calculateGatewayRewards,\n calculateUserRewards,\n} from '@src/utils/rewards';\nimport useGateways from './useGateways';\nimport useProtocolBalance from './useProtocolBalance';\n\nconst useRewardsInfo = (gateway: AoGateway | undefined, userStake: number) => {\n const { data: gateways } = useGateways();\n const { data: protocolBalance } = useProtocolBalance();\n\n let res: UserRewards | undefined = undefined;\n\n if (\n gateways &&\n gateway &&\n protocolBalance &&\n protocolBalance > 0 &&\n !isNaN(userStake)\n ) {\n const numGateways = gateways\n ? Object.values(gateways).filter((g) => g.status == 'joined').length\n : 0;\n const gatewayRewards = calculateGatewayRewards(\n new mIOToken(protocolBalance).toIO(),\n numGateways,\n gateway,\n );\n\n const userRewards = calculateUserRewards(\n gatewayRewards,\n new IOToken(Math.abs(userStake)),\n userStake < 0,\n );\n res = userRewards;\n }\n\n return res;\n};\n\nexport default useRewardsInfo;\n","import { WarningTriangleIcon } from '../icons';\n\nconst UnstakeWarning = () => {\n return (\n
\n
\n \n
\n 30 days is the standard unstaking period. During this withdrawal time\n your tokens will be locked and will not be accruing rewards.\n
\n
\n
\n );\n};\n\nexport default UnstakeWarning;\n","import { IOToken, mIOToken } from '@ar.io/sdk/web';\nimport {\n EAY_TOOLTIP_FORMULA,\n EAY_TOOLTIP_TEXT,\n WRITE_OPTIONS,\n log,\n} from '@src/constants';\nimport useGateway from '@src/hooks/useGateway';\nimport useRewardsInfo from '@src/hooks/useRewardsInfo';\nimport { useGlobalState } from '@src/store';\nimport { formatWithCommas } from '@src/utils';\nimport { showErrorToast } from '@src/utils/toast';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { MathJax } from 'better-react-mathjax';\nimport { useState } from 'react';\nimport Button, { ButtonType } from '../Button';\nimport Tooltip from '../Tooltip';\nimport ErrorMessageIcon from '../forms/ErrorMessageIcon';\nimport {\n validateIOAmount,\n validateUnstakeAmount,\n validateWalletAddress,\n} from '../forms/validation';\nimport { InfoIcon } from '../icons';\nimport BaseModal from './BaseModal';\nimport BlockingMessageModal from './BlockingMessageModal';\nimport SuccessModal from './SuccessModal';\nimport UnstakeWarning from './UnstakeWarning';\n\nconst DisplayRow = ({\n label,\n value,\n className,\n isLink = false,\n rightIcon,\n}: {\n label: string;\n value: string;\n isLink?: boolean;\n className?: string;\n rightIcon?: React.ReactNode;\n}) => {\n return (\n
\n
{label}
\n
\n {isLink && value !== '-' ? (\n \n {value}\n \n ) : (\n
\n {value}\n {rightIcon}\n
\n )}\n
\n );\n};\n\nconst StakingModal = ({\n onClose,\n ownerWallet,\n}: {\n open: boolean;\n onClose: () => void;\n ownerWallet?: string;\n}) => {\n const queryClient = useQueryClient();\n\n const balances = useGlobalState((state) => state.balances);\n const walletAddress = useGlobalState((state) => state.walletAddress);\n const arIOWriteableSDK = useGlobalState((state) => state.arIOWriteableSDK);\n const ticker = useGlobalState((state) => state.ticker);\n\n const [tab, setTab] = useState(0);\n const [userEnteredWalletAddress, setUserEnteredWalletAddress] =\n useState('');\n\n const [amountToStake, setAmountToStake] = useState('');\n const [amountToUnstake, setAmountToUnstake] = useState('');\n\n const [showBlockingMessageModal, setShowBlockingMessageModal] =\n useState(false);\n const [showSuccessModal, setShowSuccessModal] = useState(false);\n\n const gatewayOwnerWallet =\n ownerWallet?.toString() ?? userEnteredWalletAddress;\n\n const { data: gateway } = useGateway({\n ownerWalletAddress: gatewayOwnerWallet,\n });\n\n const allowDelegatedStaking =\n gateway?.settings.allowDelegatedStaking ?? false;\n\n const delegateData = walletAddress\n ? gateway?.delegates[walletAddress?.toString()]\n : undefined;\n const currentStake = new mIOToken(delegateData?.delegatedStake ?? 0)\n .toIO()\n .valueOf();\n\n const newTotalStake =\n tab == 0\n ? currentStake + parseFloat(amountToStake)\n : currentStake - parseFloat(amountToUnstake);\n const newStake = tab == 0 ? parseFloat(amountToStake) : -parseFloat(amountToUnstake);\n const rewardsInfo = useRewardsInfo(gateway, newStake);\n const EAY =\n rewardsInfo && newTotalStake > 0\n ? (rewardsInfo.EAY * 100).toLocaleString('en-us', {\n maximumFractionDigits: 2,\n }) + '%'\n : '-';\n\n const existingStake = new mIOToken(delegateData?.delegatedStake ?? 0)\n .toIO()\n .valueOf();\n const minDelegatedStake = gateway\n ? new mIOToken(gateway?.settings.minDelegatedStake).toIO().valueOf()\n : 500;\n const minRequiredStakeToAdd = existingStake > 0 ? 1 : minDelegatedStake;\n\n const validators = {\n address: validateWalletAddress('Gateway Owner'),\n stakeAmount: validateIOAmount(\n 'Stake Amount',\n ticker,\n minRequiredStakeToAdd,\n balances.io,\n ),\n unstakeAmount: validateUnstakeAmount(\n 'Unstake Amount',\n ticker,\n existingStake,\n minDelegatedStake,\n ),\n };\n\n const isFormValid = () => {\n if (!gateway || (tab == 0 && !allowDelegatedStaking)) {\n return false;\n }\n if (tab == 0) {\n return validators.stakeAmount(amountToStake) == undefined;\n } else {\n return validators.unstakeAmount(amountToUnstake) == undefined;\n }\n };\n\n const remainingBalance = isFormValid()\n ? balances.io - parseFloat(amountToStake)\n : '-';\n\n const baseTabClassName = 'text-center py-3';\n const selectedTabClassNames = `${baseTabClassName} bg-grey-700 border-b border-red-400`;\n const nonSelectedTabClassNames = `${baseTabClassName} bg-grey-1000 text-low`;\n\n const setMaxAmount = () => {\n if (tab == 0) {\n setAmountToStake(balances.io + '');\n } else {\n setAmountToUnstake(currentStake + '');\n }\n };\n\n const disableInput =\n !gateway ||\n (tab == 0 &&\n (balances.io < minRequiredStakeToAdd || !allowDelegatedStaking)) ||\n (tab == 1 && currentStake <= 0);\n\n const submitForm = async () => {\n if (walletAddress && arIOWriteableSDK && gateway && isFormValid()) {\n setShowBlockingMessageModal(true);\n\n try {\n if (tab == 0) {\n const { id: txID } = await arIOWriteableSDK.delegateStake(\n {\n target: gatewayOwnerWallet,\n stakeQty: new IOToken(parseFloat(amountToStake)).toMIO(),\n },\n WRITE_OPTIONS,\n );\n\n log.info(`Increase Delegate Stake txID: ${txID}`);\n } else {\n const { id: txID } = await arIOWriteableSDK.decreaseDelegateStake(\n {\n target: gatewayOwnerWallet,\n decreaseQty: new IOToken(parseFloat(amountToUnstake)).toMIO(),\n },\n WRITE_OPTIONS,\n );\n\n log.info(`Decrease Delegate Stake txID: ${txID}`);\n }\n\n queryClient.invalidateQueries({\n queryKey: ['gateway', walletAddress.toString()],\n refetchType: 'all',\n });\n queryClient.invalidateQueries({\n queryKey: ['gateways'],\n refetchType: 'all',\n });\n\n setShowSuccessModal(true);\n } catch (e: any) {\n showErrorToast(`${e}`);\n } finally {\n setShowBlockingMessageModal(false);\n }\n }\n };\n\n const errorMessages = {\n gatewayOwner: validators.address(gatewayOwnerWallet),\n stakeAmount: validators.stakeAmount(amountToStake),\n unstakeAmount: validators.unstakeAmount(amountToUnstake),\n cannotStake:\n balances.io < minRequiredStakeToAdd\n ? `Insufficient balance, at least ${minRequiredStakeToAdd} IO required.`\n : !allowDelegatedStaking\n ? 'Gateway does not allow delegated staking.'\n : undefined,\n };\n\n return (\n \n
\n
\n setTab(0)}\n >\n Staking\n \n setTab(1)}\n >\n Unstaking\n \n
\n
\n
Gateway Owner:
\n {ownerWallet ? (\n
\n {ownerWallet}\n
\n ) : (\n {\n setUserEnteredWalletAddress(e.target.value);\n }}\n maxLength={43}\n />\n )}\n
\n
Amount:
\n
\n
\n {tab == 0\n ? balances &&\n `Available: ${formatWithCommas(balances.io)} ${ticker}`\n : `Available to Unstake: ${formatWithCommas(currentStake)} ${ticker}`}\n
\n
\n
\n {\n const textValue = e.target.value;\n\n if (textValue && isNaN(+e.target.value)) {\n return;\n }\n\n if (tab == 0) {\n setAmountToStake(textValue);\n } else {\n setAmountToUnstake(textValue);\n }\n }}\n >\n {tab == 0 &&\n gateway &&\n (amountToStake?.length > 0 ||\n balances.io < minRequiredStakeToAdd ||\n !allowDelegatedStaking) &&\n (errorMessages.cannotStake || errorMessages.stakeAmount) && (\n \n )}\n {tab == 1 &&\n amountToUnstake?.length > 0 &&\n errorMessages.unstakeAmount && (\n \n )}\n \n
\n
\n {tab == 0 && (\n \n )}\n \n\n \n\n \n

{EAY_TOOLTIP_TEXT}

\n {EAY_TOOLTIP_FORMULA}\n
\n }\n >\n \n \n }\n />\n\n
\n \n
\n
\n
\n
\n \n\n {tab == 0 && (\n \n )}\n \n \n \n
\n \n {showBlockingMessageModal && (\n setShowBlockingMessageModal(false)}\n message=\"Sign the following data with your wallet to proceed.\"\n >\n )}\n {showSuccessModal && (\n {\n setShowSuccessModal(false);\n onClose();\n }}\n title=\"Congratulations\"\n bodyText=\"You have successfully updated stake.\"\n />\n )}\n \n
\n );\n};\n\nexport default StakingModal;\n"],"names":["__assign","t","e","n","i","__rest","typesettingFailed","MathJax","r","t2","h","m","v","f","p","_","o","b","s","u","a","l","c","y","reactExports","d","MathJaxBaseContext","g","e2","n2","t3","React","SvgInfoIcon","props","SvgWarningTriangle","EPOCHS_PER_YEAR","EPOCH_DISTRIBUTION_RATIO","GATEWAY_REWARDS_RATIO","calculateOperatorRewards","protocolBalance","totalGateways","gateway","baseGatewayReward","gatewayRewardShareRatio","operatorStake","mIOToken","rewardsSharedPerEpoch","IOToken","EEY","EAY","calculateGatewayRewards","totalDelegatedStake","calculateUserRewards","gatewayRewards","userDelegatedStake","removingStake","multiplier","delegatedStake","stakeProportion","useRewardsInfo","userStake","gateways","useGateways","useProtocolBalance","res","numGateways","UnstakeWarning","jsxRuntimeExports","DisplayRow","label","value","className","isLink","rightIcon","StakingModal","onClose","ownerWallet","queryClient","useQueryClient","balances","useGlobalState","state","walletAddress","arIOWriteableSDK","ticker","tab","setTab","userEnteredWalletAddress","setUserEnteredWalletAddress","amountToStake","setAmountToStake","amountToUnstake","setAmountToUnstake","showBlockingMessageModal","setShowBlockingMessageModal","showSuccessModal","setShowSuccessModal","gatewayOwnerWallet","useGateway","allowDelegatedStaking","delegateData","currentStake","newTotalStake","newStake","rewardsInfo","existingStake","minDelegatedStake","minRequiredStakeToAdd","validators","validateWalletAddress","validateIOAmount","validateUnstakeAmount","isFormValid","remainingBalance","baseTabClassName","selectedTabClassNames","nonSelectedTabClassNames","setMaxAmount","disableInput","submitForm","txID","WRITE_OPTIONS","log","showErrorToast","errorMessages","BaseModal","formatWithCommas","textValue","ErrorMessageIcon","Button","ButtonType","Tooltip","EAY_TOOLTIP_TEXT","EAY_TOOLTIP_FORMULA","BlockingMessageModal","SuccessModal"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/SuccessModal-CtcgJ46_.js b/assets/SuccessModal-B5bjpxfT.js similarity index 99% rename from assets/SuccessModal-CtcgJ46_.js rename to assets/SuccessModal-B5bjpxfT.js index 70a181dd..4cdc259f 100644 --- a/assets/SuccessModal-CtcgJ46_.js +++ b/assets/SuccessModal-B5bjpxfT.js @@ -1,4 +1,4 @@ -import{r as reactExports,j as jsxRuntimeExports,$ as $a093c7e1ec25a057$export$2881499e37b75b9a,a0 as $a093c7e1ec25a057$export$be92b6f5f03c0fe9,a1 as $a093c7e1ec25a057$export$41fb9f06171c75f4,a2 as $a093c7e1ec25a057$export$602eac185826482c,a3 as $a093c7e1ec25a057$export$7c6e2c02157bb7d2,a4 as $a093c7e1ec25a057$export$21b07c8f274aebd5,a5 as FQDN_REGEX,a6 as ARWEAVE_TX_REGEX,a7 as commonjsGlobal,a8 as getDefaultExportFromCjs,R as React,B as BaseModal,k as Button,l as ButtonType}from"./index-B4O4S1jL.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},e=new Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="d3ce716f-8ed0-4529-bd59-0e5049d799fe",t._sentryDebugIdIdentifier="sentry-dbid-d3ce716f-8ed0-4529-bd59-0e5049d799fe")}catch{}})();const SvgFormError=t=>reactExports.createElement("svg",{width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},reactExports.createElement("g",{id:" ",clipPath:"url(#clip0_2062_980)"},reactExports.createElement("path",{id:"Vector",d:"M9 16.5C13.1421 16.5 16.5 13.1421 16.5 9C16.5 4.85786 13.1421 1.5 9 1.5C4.85786 1.5 1.5 4.85786 1.5 9C1.5 13.1421 4.85786 16.5 9 16.5Z",stroke:"#DB4354",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),reactExports.createElement("path",{id:"Vector_2",d:"M9 12V9",stroke:"#DB4354",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),reactExports.createElement("path",{id:"Vector_3",d:"M9 6H9.0075",stroke:"#DB4354",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),reactExports.createElement("defs",null,reactExports.createElement("clipPath",{id:"clip0_2062_980"},reactExports.createElement("rect",{width:18,height:18,fill:"white"})))),SvgSuccessCheck=t=>reactExports.createElement("svg",{width:32,height:32,viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},reactExports.createElement("g",{id:"Frame"},reactExports.createElement("path",{id:"Vector",d:"M5.13359 11.4941C4.93898 10.6175 4.96886 9.7059 5.22047 8.8439C5.47207 7.9819 5.93725 7.19737 6.57288 6.56308C7.20851 5.92878 7.994 5.46524 8.85653 5.21544C9.71906 4.96564 10.6307 4.93767 11.5069 5.13411C11.9892 4.37985 12.6536 3.75913 13.4389 3.32916C14.2241 2.8992 15.105 2.67383 16.0003 2.67383C16.8955 2.67383 17.7764 2.8992 18.5617 3.32916C19.3469 3.75913 20.0113 4.37985 20.4936 5.13411C21.3711 4.93681 22.2844 4.96466 23.1483 5.21507C24.0122 5.46547 24.7987 5.9303 25.4347 6.56632C26.0707 7.20234 26.5356 7.98888 26.786 8.85278C27.0364 9.71669 27.0642 10.6299 26.8669 11.5074C27.6212 11.9897 28.2419 12.6541 28.6719 13.4394C29.1018 14.2246 29.3272 15.1055 29.3272 16.0008C29.3272 16.8961 29.1018 17.7769 28.6719 18.5622C28.2419 19.3474 27.6212 20.0118 26.8669 20.4941C27.0634 21.3703 27.0354 22.282 26.7856 23.1445C26.5358 24.007 26.0723 24.7925 25.438 25.4282C24.8037 26.0638 24.0191 26.529 23.1571 26.7806C22.2951 27.0322 21.3836 27.0621 20.5069 26.8674C20.0253 27.6246 19.3604 28.248 18.5738 28.6799C17.7872 29.1118 16.9043 29.3382 16.0069 29.3382C15.1096 29.3382 14.2267 29.1118 13.4401 28.6799C12.6535 28.248 11.9886 27.6246 11.5069 26.8674C10.6307 27.0639 9.71906 27.0359 8.85653 26.7861C7.994 26.5363 7.20851 26.0728 6.57288 25.4385C5.93725 24.8042 5.47207 24.0197 5.22047 23.1577C4.96886 22.2957 4.93898 21.3841 5.13359 20.5074C4.37353 20.0264 3.74748 19.361 3.31366 18.5731C2.87983 17.7851 2.65234 16.9003 2.65234 16.0008C2.65234 15.1013 2.87983 14.2164 3.31366 13.4285C3.74748 12.6406 4.37353 11.9751 5.13359 11.4941Z",stroke:"url(#paint0_linear_1391_2499)",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),reactExports.createElement("path",{id:"Vector_2",d:"M12 16.0007L14.6667 18.6673L20 13.334",stroke:"url(#paint1_linear_1391_2499)",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})),reactExports.createElement("defs",null,reactExports.createElement("linearGradient",{id:"paint0_linear_1391_2499",x1:4.7627,y1:23.7247,x2:29.5913,y2:23.1188,gradientUnits:"userSpaceOnUse"},reactExports.createElement("stop",{stopColor:"#F7C3A1"}),reactExports.createElement("stop",{offset:.52,stopColor:"#EBAEC6"}),reactExports.createElement("stop",{offset:1,stopColor:"#DF9BE8"})),reactExports.createElement("linearGradient",{id:"paint1_linear_1391_2499",x1:12.6329,y1:17.5445,x2:20.0737,y2:17.2723,gradientUnits:"userSpaceOnUse"},reactExports.createElement("stop",{stopColor:"#F7C3A1"}),reactExports.createElement("stop",{offset:.52,stopColor:"#EBAEC6"}),reactExports.createElement("stop",{offset:1,stopColor:"#DF9BE8"})))),ErrorMessageIcon=({errorMessage:t,tooltipPadding:e})=>{const r=e?`mb-${e}`:"";return jsxRuntimeExports.jsx("div",{className:"relative flex px-3 text-red-600",children:jsxRuntimeExports.jsx($a093c7e1ec25a057$export$2881499e37b75b9a,{children:jsxRuntimeExports.jsxs($a093c7e1ec25a057$export$be92b6f5f03c0fe9,{delayDuration:0,children:[jsxRuntimeExports.jsx($a093c7e1ec25a057$export$41fb9f06171c75f4,{children:jsxRuntimeExports.jsx(SvgFormError,{className:"size-[1.125rem]"})}),jsxRuntimeExports.jsx($a093c7e1ec25a057$export$602eac185826482c,{children:jsxRuntimeExports.jsxs($a093c7e1ec25a057$export$7c6e2c02157bb7d2,{className:"z-50 w-fit max-w-[25rem] rounded-md bg-red-1000 px-6 py-3",children:[jsxRuntimeExports.jsx($a093c7e1ec25a057$export$21b07c8f274aebd5,{className:`fill-red-1000 ${r}`}),jsxRuntimeExports.jsx("div",{className:"text-sm text-red-600",children:t})]})})]})})})},validateString=(t,e,r)=>i=>i.trim().lengthr?`${t} is required and must be ${e}-${r} characters in length.`:void 0,validateDomainName=t=>e=>e.trim()===""||!FQDN_REGEX.test(e)?`${t} is required and must be a valid domain name.`:void 0,validateWalletAddress=t=>e=>e.trim()===""||!ARWEAVE_TX_REGEX.test(e)?`${t} is required and must be a wallet address.`:void 0,validateTransactionId=t=>e=>e.trim()===""||!ARWEAVE_TX_REGEX.test(e)?`${t} is required and must be a valid Arweave transaction ID.`:void 0,validateIOAmount=(t,e,r,i)=>s=>{const a=+s;return i?isNaN(a)?`${t} must be a number.`:i<=r&&a= ${r} ${e}.`:ai?`${t} must be a number from ${r} to ${i} ${e}.`:void 0:a= ${r} ${e}.`:void 0},validateNumberRange=(t,e,r)=>i=>{const s=+i;return i.length==0||sr||isNaN(s)?`${t} must be a number from ${e} to ${r}.`:void 0},validateUnstakeAmount=(t,e,r,i)=>s=>{const a=+s;if(isNaN(a)||s.length===0)return`${t} must be a number.`;if(a<1)return`${t} must be at least 1 ${e}.`;if(a>r)return`${t} cannot be greater than your current stake of ${r} ${e}.`;if(r-a1?r[1]=1:r[1]<=0&&(r[1]=0),HSVtoRGB(r[0],r[1],r[2])}function addBrightnessToRGB(t,e){var r=RGBtoHSV(t[0]*255,t[1]*255,t[2]*255);return r[2]+=e,r[2]>1?r[2]=1:r[2]<0&&(r[2]=0),HSVtoRGB(r[0],r[1],r[2])}function addHueToRGB(t,e){var r=RGBtoHSV(t[0]*255,t[1]*255,t[2]*255);return r[0]+=e/360,r[0]>1?r[0]-=1:r[0]<0&&(r[0]+=1),HSVtoRGB(r[0],r[1],r[2])}var rgbToHex=function(){var t=[],e,r;for(e=0;e<256;e+=1)r=e.toString(16),t[e]=r.length===1?"0"+r:r;return function(i,s,a){return i<0&&(i=0),s<0&&(s=0),a<0&&(a=0),"#"+t[i]+t[s]+t[a]}}(),setSubframeEnabled=function(e){subframeEnabled=!!e},getSubframeEnabled=function(){return subframeEnabled},setExpressionsPlugin=function(e){expressionsPlugin=e},getExpressionsPlugin=function(){return expressionsPlugin},setExpressionInterfaces=function(e){expressionsInterfaces=e},getExpressionInterfaces=function(){return expressionsInterfaces},setDefaultCurveSegments=function(e){defaultCurveSegments=e},getDefaultCurveSegments=function(){return defaultCurveSegments},setIdPrefix=function(e){idPrefix$1=e};function createNS(t){return document.createElementNS(svgNS,t)}function _typeof$5(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_typeof$5=function(r){return typeof r}:_typeof$5=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_typeof$5(t)}var dataManager=function(){var t=1,e=[],r,i,s={onmessage:function(){},postMessage:function(E){r({data:E})}},a={postMessage:function(E){s.onmessage({data:E})}};function n(u){if(window.Worker&&window.Blob&&getWebWorker()){var E=new Blob(["var _workerSelf = self; self.onmessage = ",u.toString()],{type:"text/javascript"}),g=URL.createObjectURL(E);return new Worker(g)}return r=u,s}function l(){i||(i=n(function(E){function g(){function k(R,A){var M,S,P=R.length,L,F,B,G;for(S=0;S=0;A-=1)if(R[A].ty==="sh")if(R[A].ks.k.i)C(R[A].ks.k);else for(P=R[A].ks.k.length,S=0;SM[0]?!0:M[0]>R[0]?!1:R[1]>M[1]?!0:M[1]>R[1]?!1:R[2]>M[2]?!0:M[2]>R[2]?!1:null}var T=function(){var R=[4,4,14];function A(S){var P=S.t.d;S.t.d={k:[{s:P,t:0}]}}function M(S){var P,L=S.length;for(P=0;P=0;P-=1)if(S[P].ty==="sh")if(S[P].ks.k.i)S[P].ks.k.c=S[P].closed;else for(B=S[P].ks.k.length,F=0;F500)&&(this._imageLoaded(),clearInterval(f)),m+=1}).bind(this),50)}function a(c){var m=i(c,this.assetsPath,this.path),f=createNS("image");isSafari?this.testImageLoaded(f):f.addEventListener("load",this._imageLoaded,!1),f.addEventListener("error",(function(){b.img=t,this._imageLoaded()}).bind(this),!1),f.setAttributeNS("http://www.w3.org/1999/xlink","href",m),this._elementHelper.append?this._elementHelper.append(f):this._elementHelper.appendChild(f);var b={img:f,assetData:c};return b}function n(c){var m=i(c,this.assetsPath,this.path),f=createTag("img");f.crossOrigin="anonymous",f.addEventListener("load",this._imageLoaded,!1),f.addEventListener("error",(function(){b.img=t,this._imageLoaded()}).bind(this),!1),f.src=m;var b={img:f,assetData:c};return b}function l(c){var m={assetData:c},f=i(c,this.assetsPath,this.path);return dataManager.loadData(f,(function(b){m.img=b,this._footageLoaded()}).bind(this),(function(){m.img={},this._footageLoaded()}).bind(this)),m}function o(c,m){this.imagesLoadedCb=m;var f,b=c.length;for(f=0;freactExports.createElement("svg",{width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},reactExports.createElement("g",{id:" ",clipPath:"url(#clip0_2062_980)"},reactExports.createElement("path",{id:"Vector",d:"M9 16.5C13.1421 16.5 16.5 13.1421 16.5 9C16.5 4.85786 13.1421 1.5 9 1.5C4.85786 1.5 1.5 4.85786 1.5 9C1.5 13.1421 4.85786 16.5 9 16.5Z",stroke:"#DB4354",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),reactExports.createElement("path",{id:"Vector_2",d:"M9 12V9",stroke:"#DB4354",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),reactExports.createElement("path",{id:"Vector_3",d:"M9 6H9.0075",stroke:"#DB4354",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),reactExports.createElement("defs",null,reactExports.createElement("clipPath",{id:"clip0_2062_980"},reactExports.createElement("rect",{width:18,height:18,fill:"white"})))),SvgSuccessCheck=t=>reactExports.createElement("svg",{width:32,height:32,viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},reactExports.createElement("g",{id:"Frame"},reactExports.createElement("path",{id:"Vector",d:"M5.13359 11.4941C4.93898 10.6175 4.96886 9.7059 5.22047 8.8439C5.47207 7.9819 5.93725 7.19737 6.57288 6.56308C7.20851 5.92878 7.994 5.46524 8.85653 5.21544C9.71906 4.96564 10.6307 4.93767 11.5069 5.13411C11.9892 4.37985 12.6536 3.75913 13.4389 3.32916C14.2241 2.8992 15.105 2.67383 16.0003 2.67383C16.8955 2.67383 17.7764 2.8992 18.5617 3.32916C19.3469 3.75913 20.0113 4.37985 20.4936 5.13411C21.3711 4.93681 22.2844 4.96466 23.1483 5.21507C24.0122 5.46547 24.7987 5.9303 25.4347 6.56632C26.0707 7.20234 26.5356 7.98888 26.786 8.85278C27.0364 9.71669 27.0642 10.6299 26.8669 11.5074C27.6212 11.9897 28.2419 12.6541 28.6719 13.4394C29.1018 14.2246 29.3272 15.1055 29.3272 16.0008C29.3272 16.8961 29.1018 17.7769 28.6719 18.5622C28.2419 19.3474 27.6212 20.0118 26.8669 20.4941C27.0634 21.3703 27.0354 22.282 26.7856 23.1445C26.5358 24.007 26.0723 24.7925 25.438 25.4282C24.8037 26.0638 24.0191 26.529 23.1571 26.7806C22.2951 27.0322 21.3836 27.0621 20.5069 26.8674C20.0253 27.6246 19.3604 28.248 18.5738 28.6799C17.7872 29.1118 16.9043 29.3382 16.0069 29.3382C15.1096 29.3382 14.2267 29.1118 13.4401 28.6799C12.6535 28.248 11.9886 27.6246 11.5069 26.8674C10.6307 27.0639 9.71906 27.0359 8.85653 26.7861C7.994 26.5363 7.20851 26.0728 6.57288 25.4385C5.93725 24.8042 5.47207 24.0197 5.22047 23.1577C4.96886 22.2957 4.93898 21.3841 5.13359 20.5074C4.37353 20.0264 3.74748 19.361 3.31366 18.5731C2.87983 17.7851 2.65234 16.9003 2.65234 16.0008C2.65234 15.1013 2.87983 14.2164 3.31366 13.4285C3.74748 12.6406 4.37353 11.9751 5.13359 11.4941Z",stroke:"url(#paint0_linear_1391_2499)",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),reactExports.createElement("path",{id:"Vector_2",d:"M12 16.0007L14.6667 18.6673L20 13.334",stroke:"url(#paint1_linear_1391_2499)",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})),reactExports.createElement("defs",null,reactExports.createElement("linearGradient",{id:"paint0_linear_1391_2499",x1:4.7627,y1:23.7247,x2:29.5913,y2:23.1188,gradientUnits:"userSpaceOnUse"},reactExports.createElement("stop",{stopColor:"#F7C3A1"}),reactExports.createElement("stop",{offset:.52,stopColor:"#EBAEC6"}),reactExports.createElement("stop",{offset:1,stopColor:"#DF9BE8"})),reactExports.createElement("linearGradient",{id:"paint1_linear_1391_2499",x1:12.6329,y1:17.5445,x2:20.0737,y2:17.2723,gradientUnits:"userSpaceOnUse"},reactExports.createElement("stop",{stopColor:"#F7C3A1"}),reactExports.createElement("stop",{offset:.52,stopColor:"#EBAEC6"}),reactExports.createElement("stop",{offset:1,stopColor:"#DF9BE8"})))),ErrorMessageIcon=({errorMessage:t,tooltipPadding:e})=>{const r=e?`mb-${e}`:"";return jsxRuntimeExports.jsx("div",{className:"relative flex px-3 text-red-600",children:jsxRuntimeExports.jsx($a093c7e1ec25a057$export$2881499e37b75b9a,{children:jsxRuntimeExports.jsxs($a093c7e1ec25a057$export$be92b6f5f03c0fe9,{delayDuration:0,children:[jsxRuntimeExports.jsx($a093c7e1ec25a057$export$41fb9f06171c75f4,{children:jsxRuntimeExports.jsx(SvgFormError,{className:"size-[1.125rem]"})}),jsxRuntimeExports.jsx($a093c7e1ec25a057$export$602eac185826482c,{children:jsxRuntimeExports.jsxs($a093c7e1ec25a057$export$7c6e2c02157bb7d2,{className:"z-50 w-fit max-w-[25rem] rounded-md bg-red-1000 px-6 py-3",children:[jsxRuntimeExports.jsx($a093c7e1ec25a057$export$21b07c8f274aebd5,{className:`fill-red-1000 ${r}`}),jsxRuntimeExports.jsx("div",{className:"text-sm text-red-600",children:t})]})})]})})})},validateString=(t,e,r)=>i=>i.trim().lengthr?`${t} is required and must be ${e}-${r} characters in length.`:void 0,validateDomainName=t=>e=>e.trim()===""||!FQDN_REGEX.test(e)?`${t} is required and must be a valid domain name.`:void 0,validateWalletAddress=t=>e=>e.trim()===""||!ARWEAVE_TX_REGEX.test(e)?`${t} is required and must be a wallet address.`:void 0,validateTransactionId=t=>e=>e.trim()===""||!ARWEAVE_TX_REGEX.test(e)?`${t} is required and must be a valid Arweave transaction ID.`:void 0,validateIOAmount=(t,e,r,i)=>s=>{const a=+s;return i?isNaN(a)?`${t} must be a number.`:i<=r&&a= ${r} ${e}.`:ai?`${t} must be a number from ${r} to ${i} ${e}.`:void 0:a= ${r} ${e}.`:void 0},validateNumberRange=(t,e,r)=>i=>{const s=+i;return i.length==0||sr||isNaN(s)?`${t} must be a number from ${e} to ${r}.`:void 0},validateUnstakeAmount=(t,e,r,i)=>s=>{const a=+s;if(isNaN(a)||s.length===0)return`${t} must be a number.`;if(a<1)return`${t} must be at least 1 ${e}.`;if(a>r)return`${t} cannot be greater than your current stake of ${r} ${e}.`;if(r-a1?r[1]=1:r[1]<=0&&(r[1]=0),HSVtoRGB(r[0],r[1],r[2])}function addBrightnessToRGB(t,e){var r=RGBtoHSV(t[0]*255,t[1]*255,t[2]*255);return r[2]+=e,r[2]>1?r[2]=1:r[2]<0&&(r[2]=0),HSVtoRGB(r[0],r[1],r[2])}function addHueToRGB(t,e){var r=RGBtoHSV(t[0]*255,t[1]*255,t[2]*255);return r[0]+=e/360,r[0]>1?r[0]-=1:r[0]<0&&(r[0]+=1),HSVtoRGB(r[0],r[1],r[2])}var rgbToHex=function(){var t=[],e,r;for(e=0;e<256;e+=1)r=e.toString(16),t[e]=r.length===1?"0"+r:r;return function(i,s,a){return i<0&&(i=0),s<0&&(s=0),a<0&&(a=0),"#"+t[i]+t[s]+t[a]}}(),setSubframeEnabled=function(e){subframeEnabled=!!e},getSubframeEnabled=function(){return subframeEnabled},setExpressionsPlugin=function(e){expressionsPlugin=e},getExpressionsPlugin=function(){return expressionsPlugin},setExpressionInterfaces=function(e){expressionsInterfaces=e},getExpressionInterfaces=function(){return expressionsInterfaces},setDefaultCurveSegments=function(e){defaultCurveSegments=e},getDefaultCurveSegments=function(){return defaultCurveSegments},setIdPrefix=function(e){idPrefix$1=e};function createNS(t){return document.createElementNS(svgNS,t)}function _typeof$5(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_typeof$5=function(r){return typeof r}:_typeof$5=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_typeof$5(t)}var dataManager=function(){var t=1,e=[],r,i,s={onmessage:function(){},postMessage:function(E){r({data:E})}},a={postMessage:function(E){s.onmessage({data:E})}};function n(u){if(window.Worker&&window.Blob&&getWebWorker()){var E=new Blob(["var _workerSelf = self; self.onmessage = ",u.toString()],{type:"text/javascript"}),g=URL.createObjectURL(E);return new Worker(g)}return r=u,s}function l(){i||(i=n(function(E){function g(){function k(R,A){var M,S,P=R.length,L,F,B,G;for(S=0;S=0;A-=1)if(R[A].ty==="sh")if(R[A].ks.k.i)C(R[A].ks.k);else for(P=R[A].ks.k.length,S=0;SM[0]?!0:M[0]>R[0]?!1:R[1]>M[1]?!0:M[1]>R[1]?!1:R[2]>M[2]?!0:M[2]>R[2]?!1:null}var T=function(){var R=[4,4,14];function A(S){var P=S.t.d;S.t.d={k:[{s:P,t:0}]}}function M(S){var P,L=S.length;for(P=0;P=0;P-=1)if(S[P].ty==="sh")if(S[P].ks.k.i)S[P].ks.k.c=S[P].closed;else for(B=S[P].ks.k.length,F=0;F500)&&(this._imageLoaded(),clearInterval(f)),m+=1}).bind(this),50)}function a(c){var m=i(c,this.assetsPath,this.path),f=createNS("image");isSafari?this.testImageLoaded(f):f.addEventListener("load",this._imageLoaded,!1),f.addEventListener("error",(function(){b.img=t,this._imageLoaded()}).bind(this),!1),f.setAttributeNS("http://www.w3.org/1999/xlink","href",m),this._elementHelper.append?this._elementHelper.append(f):this._elementHelper.appendChild(f);var b={img:f,assetData:c};return b}function n(c){var m=i(c,this.assetsPath,this.path),f=createTag("img");f.crossOrigin="anonymous",f.addEventListener("load",this._imageLoaded,!1),f.addEventListener("error",(function(){b.img=t,this._imageLoaded()}).bind(this),!1),f.src=m;var b={img:f,assetData:c};return b}function l(c){var m={assetData:c},f=i(c,this.assetsPath,this.path);return dataManager.loadData(f,(function(b){m.img=b,this._footageLoaded()}).bind(this),(function(){m.img={},this._footageLoaded()}).bind(this)),m}function o(c,m){this.imagesLoadedCb=m;var f,b=c.length;for(f=0;fthis.animationData.op&&(this.animationData.op=t.op,this.totalFrames=Math.floor(t.op-this.animationData.ip));var e=this.animationData.layers,r,i=e.length,s=t.layers,a,n=s.length;for(a=0;athis.timeCompleted&&(this.currentFrame=this.timeCompleted),this.trigger("enterFrame"),this.renderFrame(),this.trigger("drawnFrame")},AnimationItem.prototype.renderFrame=function(){if(!(this.isLoaded===!1||!this.renderer))try{this.expressionsPlugin&&this.expressionsPlugin.resetFrame(),this.renderer.renderFrame(this.currentFrame+this.firstFrame)}catch(t){this.triggerRenderFrameError(t)}},AnimationItem.prototype.play=function(t){t&&this.name!==t||this.isPaused===!0&&(this.isPaused=!1,this.trigger("_play"),this.audioController.resume(),this._idle&&(this._idle=!1,this.trigger("_active")))},AnimationItem.prototype.pause=function(t){t&&this.name!==t||this.isPaused===!1&&(this.isPaused=!0,this.trigger("_pause"),this._idle=!0,this.trigger("_idle"),this.audioController.pause())},AnimationItem.prototype.togglePause=function(t){t&&this.name!==t||(this.isPaused===!0?this.play():this.pause())},AnimationItem.prototype.stop=function(t){t&&this.name!==t||(this.pause(),this.playCount=0,this._completedLoop=!1,this.setCurrentRawFrameValue(0))},AnimationItem.prototype.getMarkerData=function(t){for(var e,r=0;r=this.totalFrames-1&&this.frameModifier>0?!this.loop||this.playCount===this.loop?this.checkSegments(e>this.totalFrames?e%this.totalFrames:0)||(r=!0,e=this.totalFrames-1):e>=this.totalFrames?(this.playCount+=1,this.checkSegments(e%this.totalFrames)||(this.setCurrentRawFrameValue(e%this.totalFrames),this._completedLoop=!0,this.trigger("loopComplete"))):this.setCurrentRawFrameValue(e):e<0?this.checkSegments(e%this.totalFrames)||(this.loop&&!(this.playCount--<=0&&this.loop!==!0)?(this.setCurrentRawFrameValue(this.totalFrames+e%this.totalFrames),this._completedLoop?this.trigger("loopComplete"):this._completedLoop=!0):(r=!0,e=0)):this.setCurrentRawFrameValue(e),r&&(this.setCurrentRawFrameValue(e),this.pause(),this.trigger("complete"))}},AnimationItem.prototype.adjustSegment=function(t,e){this.playCount=0,t[1]0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(-1)),this.totalFrames=t[0]-t[1],this.timeCompleted=this.totalFrames,this.firstFrame=t[1],this.setCurrentRawFrameValue(this.totalFrames-.001-e)):t[1]>t[0]&&(this.frameModifier<0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(1)),this.totalFrames=t[1]-t[0],this.timeCompleted=this.totalFrames,this.firstFrame=t[0],this.setCurrentRawFrameValue(.001+e)),this.trigger("segmentStart")},AnimationItem.prototype.setSegment=function(t,e){var r=-1;this.isPaused&&(this.currentRawFrame+this.firstFramee&&(r=e-t)),this.firstFrame=t,this.totalFrames=e-t,this.timeCompleted=this.totalFrames,r!==-1&&this.goToAndStop(r,!0)},AnimationItem.prototype.playSegments=function(t,e){if(e&&(this.segments.length=0),_typeof$4(t[0])==="object"){var r,i=t.length;for(r=0;r=0;M-=1)e[M].animation.destroy(A)}function I(A,M,S){var P=[].concat([].slice.call(document.getElementsByClassName("lottie")),[].slice.call(document.getElementsByClassName("bodymovin"))),L,F=P.length;for(L=0;L0?b=I:f=I;while(Math.abs(T)>a&&++V=s?k(f,O,b,C):D===0?O:d(f,T,T+o,b,C)}},t}(),pooling=function(){function t(e){return e.concat(createSizedArray(e.length))}return{double:t}}(),poolFactory=function(){return function(t,e,r){var i=0,s=t,a=createSizedArray(s),n={newElement:l,release:o};function l(){var p;return i?(i-=1,p=a[i]):p=e(),p}function o(p){i===s&&(a=pooling.double(a),s*=2),r&&r(p),a[i]=p,i+=1}return n}}(),bezierLengthPool=function(){function t(){return{addedLength:0,percents:createTypedArray("float32",getDefaultCurveSegments()),lengths:createTypedArray("float32",getDefaultCurveSegments())}}return poolFactory(8,t)}(),segmentsLengthPool=function(){function t(){return{lengths:[],totalLength:0}}function e(r){var i,s=r.lengths.length;for(i=0;i-.001&&m<.001}function r(u,E,g,d,k,c,m,f,b){if(g===0&&c===0&&b===0)return e(u,E,d,k,m,f);var C=t.sqrt(t.pow(d-u,2)+t.pow(k-E,2)+t.pow(c-g,2)),_=t.sqrt(t.pow(m-u,2)+t.pow(f-E,2)+t.pow(b-g,2)),T=t.sqrt(t.pow(m-d,2)+t.pow(f-k,2)+t.pow(b-c,2)),I;return C>_?C>T?I=C-_-T:I=T-_-C:T>_?I=T-_-C:I=_-C-T,I>-1e-4&&I<1e-4}var i=function(){return function(u,E,g,d){var k=getDefaultCurveSegments(),c,m,f,b,C,_=0,T,I=[],V=[],j=bezierLengthPool.newElement();for(f=g.length,c=0;cm?-1:1,C=!0;C;)if(d[c]<=m&&d[c+1]>m?(f=(m-d[c])/(d[c+1]-d[c]),C=!1):c+=b,c<0||c>=k-1){if(c===k-1)return g[c];C=!1}return g[c]+(g[c+1]-g[c])*f}function p(u,E,g,d,k,c){var m=o(k,c),f=1-m,b=t.round((f*f*f*u[0]+(m*f*f+f*m*f+f*f*m)*g[0]+(m*m*f+f*m*m+m*f*m)*d[0]+m*m*m*E[0])*1e3)/1e3,C=t.round((f*f*f*u[1]+(m*f*f+f*m*f+f*f*m)*g[1]+(m*m*f+f*m*m+m*f*m)*d[1]+m*m*m*E[1])*1e3)/1e3;return[b,C]}var y=createTypedArray("float32",8);function x(u,E,g,d,k,c,m){k<0?k=0:k>1&&(k=1);var f=o(k,m);c=c>1?1:c;var b=o(c,m),C,_=u.length,T=1-f,I=1-b,V=T*T*T,j=f*T*T*3,O=f*f*T*3,D=f*f*f,N=T*T*I,H=f*T*I+T*f*I+T*T*b,R=f*f*I+T*f*b+f*T*b,A=f*f*b,M=T*I*I,S=f*I*I+T*b*I+T*I*b,P=f*b*I+T*b*b+f*I*b,L=f*b*b,F=I*I*I,B=b*I*I+I*b*I+I*I*b,G=b*b*I+I*b*b+b*I*b,z=b*b*b;for(C=0;C<_;C+=1)y[C*4]=t.round((V*u[C]+j*g[C]+O*d[C]+D*E[C])*1e3)/1e3,y[C*4+1]=t.round((N*u[C]+H*g[C]+R*d[C]+A*E[C])*1e3)/1e3,y[C*4+2]=t.round((M*u[C]+S*g[C]+P*d[C]+L*E[C])*1e3)/1e3,y[C*4+3]=t.round((F*u[C]+B*g[C]+G*d[C]+z*E[C])*1e3)/1e3;return y}return{getSegmentsLength:s,getNewSegment:x,getPointInSegment:p,buildBezierData:l,pointOnLine2D:e,pointOnLine3D:r}}var bez=bezFunction(),initFrame=initialDefaultFrame,mathAbs=Math.abs;function interpolateValue(t,e){var r=this.offsetTime,i;this.propType==="multidimensional"&&(i=createTypedArray("float32",this.pv.length));for(var s=e.lastIndex,a=s,n=this.keyframes.length-1,l=!0,o,p,y;l;){if(o=this.keyframes[a],p=this.keyframes[a+1],a===n-1&&t>=p.t-r){o.h&&(o=p),s=0;break}if(p.t-r>t){s=a;break}a=c||t=c?b.points.length-1:0;for(u=b.points[C].point.length,x=0;x=I&&_=c)i[0]=f[0],i[1]=f[1],i[2]=f[2];else if(t<=m)i[0]=o.s[0],i[1]=o.s[1],i[2]=o.s[2];else{var H=createQuaternion(o.s),R=createQuaternion(f),A=(t-m)/(c-m);quaternionToEuler(i,slerp(H,R,A))}else for(a=0;a=c?E=1:t1e-6?(u=Math.acos(E),g=Math.sin(u),d=Math.sin((1-r)*u)/g,k=Math.sin(r*u)/g):(d=1-r,k=r),i[0]=d*s+k*o,i[1]=d*a+k*p,i[2]=d*n+k*y,i[3]=d*l+k*x,i}function quaternionToEuler(t,e){var r=e[0],i=e[1],s=e[2],a=e[3],n=Math.atan2(2*i*a-2*r*s,1-2*i*i-2*s*s),l=Math.asin(2*r*i+2*s*a),o=Math.atan2(2*r*a-2*i*s,1-2*r*r-2*s*s);t[0]=n/degToRads,t[1]=l/degToRads,t[2]=o/degToRads}function createQuaternion(t){var e=t[0]*degToRads,r=t[1]*degToRads,i=t[2]*degToRads,s=Math.cos(e/2),a=Math.cos(r/2),n=Math.cos(i/2),l=Math.sin(e/2),o=Math.sin(r/2),p=Math.sin(i/2),y=s*a*n-l*o*p,x=l*o*n+s*a*p,u=l*a*n+s*o*p,E=s*o*n-l*a*p;return[x,u,E,y]}function getValueAtCurrentTime(){var t=this.comp.renderedFrame-this.offsetTime,e=this.keyframes[0].t-this.offsetTime,r=this.keyframes[this.keyframes.length-1].t-this.offsetTime;if(!(t===this._caching.lastFrame||this._caching.lastFrame!==initFrame&&(this._caching.lastFrame>=r&&t>=r||this._caching.lastFrame=t&&(this._caching._lastKeyframeIndex=-1,this._caching.lastIndex=0);var i=this.interpolateValue(t,this._caching);this.pv=i}return this._caching.lastFrame=t,this.pv}function setVValue(t){var e;if(this.propType==="unidimensional")e=t*this.mult,mathAbs(this.v-e)>1e-5&&(this.v=e,this._mdf=!0);else for(var r=0,i=this.v.length;r1e-5&&(this.v[r]=e,this._mdf=!0),r+=1}function processEffectsSequence(){if(!(this.elem.globalData.frameId===this.frameId||!this.effectsSequence.length)){if(this.lock){this.setVValue(this.pv);return}this.lock=!0,this._mdf=this._isFirstFrame;var t,e=this.effectsSequence.length,r=this.kf?this.pv:this.data.k;for(t=0;t=this._maxLength&&this.doubleArrayLength(),r){case"v":a=this.v;break;case"i":a=this.i;break;case"o":a=this.o;break;default:a=[];break}(!a[i]||a[i]&&!s)&&(a[i]=pointPool.newElement()),a[i][0]=t,a[i][1]=e},ShapePath.prototype.setTripleAt=function(t,e,r,i,s,a,n,l){this.setXYAt(t,e,"v",n,l),this.setXYAt(r,i,"o",n,l),this.setXYAt(s,a,"i",n,l)},ShapePath.prototype.reverse=function(){var t=new ShapePath;t.setPathData(this.c,this._length);var e=this.v,r=this.o,i=this.i,s=0;this.c&&(t.setTripleAt(e[0][0],e[0][1],i[0][0],i[0][1],r[0][0],r[0][1],0,!1),s=1);var a=this._length-1,n=this._length,l;for(l=s;l=H[H.length-1].t-this.offsetTime)C=H[H.length-1].s?H[H.length-1].s[0]:H[H.length-2].e[0],T=!0;else{for(var R=b,A=H.length-1,M=!0,S,P,L;M&&(S=H[R],P=H[R+1],!(P.t-this.offsetTime>c));)R=P.t-this.offsetTime)D=1;else if(cf&&c>f)||(this._caching.lastIndex=b0||S>-1e-6&&S<0?i(S*P)/P:S}function M(){var S=this.props,P=A(S[0]),L=A(S[1]),F=A(S[4]),B=A(S[5]),G=A(S[12]),z=A(S[13]);return"matrix("+P+","+L+","+F+","+B+","+G+","+z+")"}return function(){this.reset=s,this.rotate=a,this.rotateX=n,this.rotateY=l,this.rotateZ=o,this.skew=y,this.skewFromAxis=x,this.shear=p,this.scale=u,this.setTransform=E,this.translate=g,this.transform=d,this.multiply=k,this.applyToPoint=C,this.applyToX=_,this.applyToY=T,this.applyToZ=I,this.applyToPointArray=N,this.applyToTriplePoints=D,this.applyToPointStringified=H,this.toCSS=R,this.to2dCSS=M,this.clone=f,this.cloneFromProps=b,this.equals=m,this.inversePoints=O,this.inversePoint=j,this.getInverseMatrix=V,this._t=this.transform,this.isIdentity=c,this._identity=!0,this._identityCalculated=!1,this.props=createTypedArray("float32",16),this.reset()}}();function _typeof$3(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_typeof$3=function(r){return typeof r}:_typeof$3=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_typeof$3(t)}var lottie={};function setLocation(t){setLocationHref(t)}function searchAnimations(){animationManager.searchAnimations()}function setSubframeRendering(t){setSubframeEnabled(t)}function setPrefix(t){setIdPrefix(t)}function loadAnimation(t){return animationManager.loadAnimation(t)}function setQuality(t){if(typeof t=="string")switch(t){case"high":setDefaultCurveSegments(200);break;default:case"medium":setDefaultCurveSegments(50);break;case"low":setDefaultCurveSegments(10);break}else!isNaN(t)&&t>1&&setDefaultCurveSegments(t)}function inBrowser(){return typeof navigator<"u"}function installPlugin(t,e){t==="expressions"&&setExpressionsPlugin(e)}function getFactory(t){switch(t){case"propertyFactory":return PropertyFactory;case"shapePropertyFactory":return ShapePropertyFactory;case"matrix":return Matrix;default:return null}}lottie.play=animationManager.play,lottie.pause=animationManager.pause,lottie.setLocationHref=setLocation,lottie.togglePause=animationManager.togglePause,lottie.setSpeed=animationManager.setSpeed,lottie.setDirection=animationManager.setDirection,lottie.stop=animationManager.stop,lottie.searchAnimations=searchAnimations,lottie.registerAnimation=animationManager.registerAnimation,lottie.loadAnimation=loadAnimation,lottie.setSubframeRendering=setSubframeRendering,lottie.resize=animationManager.resize,lottie.goToAndStop=animationManager.goToAndStop,lottie.destroy=animationManager.destroy,lottie.setQuality=setQuality,lottie.inBrowser=inBrowser,lottie.installPlugin=installPlugin,lottie.freeze=animationManager.freeze,lottie.unfreeze=animationManager.unfreeze,lottie.setVolume=animationManager.setVolume,lottie.mute=animationManager.mute,lottie.unmute=animationManager.unmute,lottie.getRegisteredAnimations=animationManager.getRegisteredAnimations,lottie.useWebWorker=setWebWorker,lottie.setIDPrefix=setPrefix,lottie.__getFactory=getFactory,lottie.version="5.12.2";function checkReady(){document.readyState==="complete"&&(clearInterval(readyStateCheckInterval),searchAnimations())}function getQueryVariable(t){for(var e=queryString.split("&"),r=0;r=1?a.push({s:t-1,e:e-1}):(a.push({s:t,e:1}),a.push({s:0,e:e-1}));var n=[],l,o=a.length,p;for(l=0;li+r)){var y,x;p.s*s<=i?y=0:y=(p.s*s-i)/r,p.e*s>=i+r?x=1:x=(p.e*s-i)/r,n.push([y,x])}return n.length||n.push([0,0]),n},TrimModifier.prototype.releasePathsData=function(t){var e,r=t.length;for(e=0;e1?e=1+i:this.s.v<0?e=0+i:e=this.s.v+i,this.e.v>1?r=1+i:this.e.v<0?r=0+i:r=this.e.v+i,e>r){var s=e;e=r,r=s}e=Math.round(e*1e4)*1e-4,r=Math.round(r*1e4)*1e-4,this.sValue=e,this.eValue=r}else e=this.sValue,r=this.eValue;var a,n,l=this.shapes.length,o,p,y,x,u,E=0;if(r===e)for(n=0;n=0;n-=1)if(d=this.shapes[n],d.shape._mdf){for(k=d.localShapeCollection,k.releaseShapes(),this.m===2&&l>1?(b=this.calculateShapeEdges(e,r,d.totalShapeLength,f,E),f+=d.totalShapeLength):b=[[c,m]],p=b.length,o=0;o=1?g.push({s:d.totalShapeLength*(c-1),e:d.totalShapeLength*(m-1)}):(g.push({s:d.totalShapeLength*c,e:d.totalShapeLength}),g.push({s:0,e:d.totalShapeLength*(m-1)}));var C=this.addShapes(d,g[0]);if(g[0].s!==g[0].e){if(g.length>1){var _=d.shape.paths.shapes[d.shape.paths._length-1];if(_.c){var T=C.pop();this.addPaths(C,k),C=this.addShapes(d,g[1],T)}else this.addPaths(C,k),C=this.addShapes(d,g[1])}this.addPaths(C,k)}}d.shape.paths=k}}},TrimModifier.prototype.addPaths=function(t,e){var r,i=t.length;for(r=0;re.e){r.c=!1;break}else e.s<=p&&e.e>=p+y.addedLength?(this.addSegment(s[a].v[l-1],s[a].o[l-1],s[a].i[l],s[a].v[l],r,x,k),k=!1):(E=bez.getNewSegment(s[a].v[l-1],s[a].v[l],s[a].o[l-1],s[a].i[l],(e.s-p)/y.addedLength,(e.e-p)/y.addedLength,u[l-1]),this.addSegmentFromArray(E,r,x,k),k=!1,r.c=!1),p+=y.addedLength,x+=1;if(s[a].c&&u.length){if(y=u[l-1],p<=e.e){var c=u[l-1].addedLength;e.s<=p&&e.e>=p+c?(this.addSegment(s[a].v[l-1],s[a].o[l-1],s[a].i[0],s[a].v[0],r,x,k),k=!1):(E=bez.getNewSegment(s[a].v[l-1],s[a].v[0],s[a].o[l-1],s[a].i[0],(e.s-p)/c,(e.e-p)/c,u[l-1]),this.addSegmentFromArray(E,r,x,k),k=!1,r.c=!1)}else r.c=!1;p+=y.addedLength,x+=1}if(r._length&&(r.setXYAt(r.v[d][0],r.v[d][1],"i",d),r.setXYAt(r.v[r._length-1][0],r.v[r._length-1][1],"o",r._length-1)),p>e.e)break;a=this.p.keyframes[this.p.keyframes.length-1].t?(y=this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length-1].t/p,0),x=this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length-1].t-.05)/p,0)):(y=this.p.pv,x=this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime-.01)/p,this.p.offsetTime));else if(this.px&&this.px.keyframes&&this.py.keyframes&&this.px.getValueAtTime&&this.py.getValueAtTime){y=[],x=[];var u=this.px,E=this.py;u._caching.lastFrame+u.offsetTime<=u.keyframes[0].t?(y[0]=u.getValueAtTime((u.keyframes[0].t+.01)/p,0),y[1]=E.getValueAtTime((E.keyframes[0].t+.01)/p,0),x[0]=u.getValueAtTime(u.keyframes[0].t/p,0),x[1]=E.getValueAtTime(E.keyframes[0].t/p,0)):u._caching.lastFrame+u.offsetTime>=u.keyframes[u.keyframes.length-1].t?(y[0]=u.getValueAtTime(u.keyframes[u.keyframes.length-1].t/p,0),y[1]=E.getValueAtTime(E.keyframes[E.keyframes.length-1].t/p,0),x[0]=u.getValueAtTime((u.keyframes[u.keyframes.length-1].t-.01)/p,0),x[1]=E.getValueAtTime((E.keyframes[E.keyframes.length-1].t-.01)/p,0)):(y=[u.pv,E.pv],x[0]=u.getValueAtTime((u._caching.lastFrame+u.offsetTime-.01)/p,u.offsetTime),x[1]=E.getValueAtTime((E._caching.lastFrame+E.offsetTime-.01)/p,E.offsetTime))}else x=t,y=x;this.v.rotate(-Math.atan2(y[1]-x[1],y[0]-x[0]))}this.data.p&&this.data.p.s?this.data.p.z?this.v.translate(this.px.v,this.py.v,-this.pz.v):this.v.translate(this.px.v,this.py.v,0):this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2])}this.frameId=this.elem.globalData.frameId}}function i(){if(this.appliedTransformations=0,this.pre.reset(),!this.a.effectsSequence.length)this.pre.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations=1;else return;if(!this.s.effectsSequence.length)this.pre.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.appliedTransformations=2;else return;if(this.sk)if(!this.sk.effectsSequence.length&&!this.sa.effectsSequence.length)this.pre.skewFromAxis(-this.sk.v,this.sa.v),this.appliedTransformations=3;else return;this.r?this.r.effectsSequence.length||(this.pre.rotate(-this.r.v),this.appliedTransformations=4):!this.rz.effectsSequence.length&&!this.ry.effectsSequence.length&&!this.rx.effectsSequence.length&&!this.or.effectsSequence.length&&(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]),this.appliedTransformations=4)}function s(){}function a(o){this._addDynamicProperty(o),this.elem.addDynamicProperty(o),this._isDirty=!0}function n(o,p,y){if(this.elem=o,this.frameId=-1,this.propType="transform",this.data=p,this.v=new Matrix,this.pre=new Matrix,this.appliedTransformations=0,this.initDynamicPropertyContainer(y||o),p.p&&p.p.s?(this.px=PropertyFactory.getProp(o,p.p.x,0,0,this),this.py=PropertyFactory.getProp(o,p.p.y,0,0,this),p.p.z&&(this.pz=PropertyFactory.getProp(o,p.p.z,0,0,this))):this.p=PropertyFactory.getProp(o,p.p||{k:[0,0,0]},1,0,this),p.rx){if(this.rx=PropertyFactory.getProp(o,p.rx,0,degToRads,this),this.ry=PropertyFactory.getProp(o,p.ry,0,degToRads,this),this.rz=PropertyFactory.getProp(o,p.rz,0,degToRads,this),p.or.k[0].ti){var x,u=p.or.k.length;for(x=0;x0;)r-=1,this._elements.unshift(e[r]);this.dynamicProperties.length?this.k=!0:this.getValue(!0)},RepeaterModifier.prototype.resetElements=function(t){var e,r=t.length;for(e=0;e0?Math.floor(u):Math.ceil(u),d=this.pMatrix.props,k=this.rMatrix.props,c=this.sMatrix.props;this.pMatrix.reset(),this.rMatrix.reset(),this.sMatrix.reset(),this.tMatrix.reset(),this.matrix.reset();var m=0;if(u>0){for(;mg;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!0),m-=1;E&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,-E,!0),m-=E)}i=this.data.m===1?0:this._currentCopies-1,s=this.data.m===1?1:-1,a=this._currentCopies;for(var f,b;a;){if(e=this.elemsData[i].it,r=e[e.length-1].transform.mProps.v.props,b=r.length,e[e.length-1].transform.mProps._mdf=!0,e[e.length-1].transform.op._mdf=!0,e[e.length-1].transform.op.v=this._currentCopies===1?this.so.v:this.so.v+(this.eo.v-this.so.v)*(i/(this._currentCopies-1)),m!==0){for((i!==0&&s===1||i!==this._currentCopies-1&&s===-1)&&this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),this.matrix.transform(k[0],k[1],k[2],k[3],k[4],k[5],k[6],k[7],k[8],k[9],k[10],k[11],k[12],k[13],k[14],k[15]),this.matrix.transform(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9],c[10],c[11],c[12],c[13],c[14],c[15]),this.matrix.transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8],d[9],d[10],d[11],d[12],d[13],d[14],d[15]),f=0;f0&&i<1?[e]:[]:[e-i,e+i].filter(function(s){return s>0&&s<1})},PolynomialBezier.prototype.split=function(t){if(t<=0)return[singlePoint(this.points[0]),this];if(t>=1)return[this,singlePoint(this.points[this.points.length-1])];var e=lerpPoint(this.points[0],this.points[1],t),r=lerpPoint(this.points[1],this.points[2],t),i=lerpPoint(this.points[2],this.points[3],t),s=lerpPoint(e,r,t),a=lerpPoint(r,i,t),n=lerpPoint(s,a,t);return[new PolynomialBezier(this.points[0],e,s,n,!0),new PolynomialBezier(n,a,i,this.points[3],!0)]};function extrema(t,e){var r=t.points[0][e],i=t.points[t.points.length-1][e];if(r>i){var s=i;i=r,r=s}for(var a=quadRoots(3*t.a[e],2*t.b[e],t.c[e]),n=0;n0&&a[n]<1){var l=t.point(a[n])[e];li&&(i=l)}return{min:r,max:i}}PolynomialBezier.prototype.bounds=function(){return{x:extrema(this,0),y:extrema(this,1)}},PolynomialBezier.prototype.boundingBox=function(){var t=this.bounds();return{left:t.x.min,right:t.x.max,top:t.y.min,bottom:t.y.max,width:t.x.max-t.x.min,height:t.y.max-t.y.min,cx:(t.x.max+t.x.min)/2,cy:(t.y.max+t.y.min)/2}};function intersectData(t,e,r){var i=t.boundingBox();return{cx:i.cx,cy:i.cy,width:i.width,height:i.height,bez:t,t:(e+r)/2,t1:e,t2:r}}function splitData(t){var e=t.bez.split(.5);return[intersectData(e[0],t.t1,t.t),intersectData(e[1],t.t,t.t2)]}function boxIntersect(t,e){return Math.abs(t.cx-e.cx)*2=a||t.width<=i&&t.height<=i&&e.width<=i&&e.height<=i){s.push([t.t,e.t]);return}var n=splitData(t),l=splitData(e);intersectsImpl(n[0],l[0],r+1,i,s,a),intersectsImpl(n[0],l[1],r+1,i,s,a),intersectsImpl(n[1],l[0],r+1,i,s,a),intersectsImpl(n[1],l[1],r+1,i,s,a)}}PolynomialBezier.prototype.intersections=function(t,e,r){e===void 0&&(e=2),r===void 0&&(r=7);var i=[];return intersectsImpl(intersectData(this,0,1),intersectData(t,0,1),0,e,i,r),i},PolynomialBezier.shapeSegment=function(t,e){var r=(e+1)%t.length();return new PolynomialBezier(t.v[e],t.o[e],t.i[r],t.v[r],!0)},PolynomialBezier.shapeSegmentInverted=function(t,e){var r=(e+1)%t.length();return new PolynomialBezier(t.v[r],t.i[r],t.o[e],t.v[e],!0)};function crossProduct(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function lineIntersection(t,e,r,i){var s=[t[0],t[1],1],a=[e[0],e[1],1],n=[r[0],r[1],1],l=[i[0],i[1],1],o=crossProduct(crossProduct(s,a),crossProduct(n,l));return floatZero(o[2])?null:[o[0]/o[2],o[1]/o[2]]}function polarOffset(t,e,r){return[t[0]+Math.cos(e)*r,t[1]-Math.sin(e)*r]}function pointDistance(t,e){return Math.hypot(t[0]-e[0],t[1]-e[1])}function pointEqual(t,e){return floatEqual(t[0],e[0])&&floatEqual(t[1],e[1])}function ZigZagModifier(){}extendPrototype([ShapeModifier],ZigZagModifier),ZigZagModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.amplitude=PropertyFactory.getProp(t,e.s,0,null,this),this.frequency=PropertyFactory.getProp(t,e.r,0,null,this),this.pointsType=PropertyFactory.getProp(t,e.pt,0,null,this),this._isAnimated=this.amplitude.effectsSequence.length!==0||this.frequency.effectsSequence.length!==0||this.pointsType.effectsSequence.length!==0};function setPoint(t,e,r,i,s,a,n){var l=r-Math.PI/2,o=r+Math.PI/2,p=e[0]+Math.cos(r)*i*s,y=e[1]-Math.sin(r)*i*s;t.setTripleAt(p,y,p+Math.cos(l)*a,y-Math.sin(l)*a,p+Math.cos(o)*n,y-Math.sin(o)*n,t.length())}function getPerpendicularVector(t,e){var r=[e[0]-t[0],e[1]-t[1]],i=-Math.PI*.5,s=[Math.cos(i)*r[0]-Math.sin(i)*r[1],Math.sin(i)*r[0]+Math.cos(i)*r[1]];return s}function getProjectingAngle(t,e){var r=e===0?t.length()-1:e-1,i=(e+1)%t.length(),s=t.v[r],a=t.v[i],n=getPerpendicularVector(s,a);return Math.atan2(0,1)-Math.atan2(n[1],n[0])}function zigZagCorner(t,e,r,i,s,a,n){var l=getProjectingAngle(e,r),o=e.v[r%e._length],p=e.v[r===0?e._length-1:r-1],y=e.v[(r+1)%e._length],x=a===2?Math.sqrt(Math.pow(o[0]-p[0],2)+Math.pow(o[1]-p[1],2)):0,u=a===2?Math.sqrt(Math.pow(o[0]-y[0],2)+Math.pow(o[1]-y[1],2)):0;setPoint(t,e.v[r%e._length],l,n,i,u/((s+1)*2),x/((s+1)*2))}function zigZagSegment(t,e,r,i,s,a){for(var n=0;n1&&e.length>1&&(s=getIntersection(t[0],e[e.length-1]),s)?[[t[0].split(s[0])[0]],[e[e.length-1].split(s[1])[1]]]:[r,i]}function pruneIntersections(t){for(var e,r=1;r1&&(e=pruneSegmentIntersection(t[t.length-1],t[0]),t[t.length-1]=e[0],t[0]=e[1]),t}function offsetSegmentSplit(t,e){var r=t.inflectionPoints(),i,s,a,n;if(r.length===0)return[offsetSegment(t,e)];if(r.length===1||floatEqual(r[1],1))return a=t.split(r[0]),i=a[0],s=a[1],[offsetSegment(i,e),offsetSegment(s,e)];a=t.split(r[0]),i=a[0];var l=(r[1]-r[0])/(1-r[0]);return a=a[1].split(l),n=a[0],s=a[1],[offsetSegment(i,e),offsetSegment(n,e),offsetSegment(s,e)]}function OffsetPathModifier(){}extendPrototype([ShapeModifier],OffsetPathModifier),OffsetPathModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.amount=PropertyFactory.getProp(t,e.a,0,null,this),this.miterLimit=PropertyFactory.getProp(t,e.ml,0,null,this),this.lineJoin=e.lj,this._isAnimated=this.amount.effectsSequence.length!==0},OffsetPathModifier.prototype.processPath=function(t,e,r,i){var s=shapePool.newElement();s.c=t.c;var a=t.length();t.c||(a-=1);var n,l,o,p=[];for(n=0;n=0;n-=1)o=PolynomialBezier.shapeSegmentInverted(t,n),p.push(offsetSegmentSplit(o,e));p=pruneIntersections(p);var y=null,x=null;for(n=0;n0&&(B=!1),B){var W=createTag("style");W.setAttribute("f-forigin",S[P].fOrigin),W.setAttribute("f-origin",S[P].origin),W.setAttribute("f-family",S[P].fFamily),W.type="text/css",W.innerText="@font-face {font-family: "+S[P].fFamily+"; font-style: normal; src: url('"+S[P].fPath+"');}",M.appendChild(W)}}else if(S[P].fOrigin==="g"||S[P].origin===1){for(G=document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'),z=0;z=55296&&S<=56319){var P=A.charCodeAt(1);P>=56320&&P<=57343&&(M=(S-55296)*1024+P-56320+65536)}return M}function _(A,M){var S=A.toString(16)+M.toString(16);return x.indexOf(S)!==-1}function T(A){return A===o}function I(A){return A===l}function V(A){var M=C(A);return M>=p&&M<=y}function j(A){return V(A.substr(0,2))&&V(A.substr(2,2))}function O(A){return r.indexOf(A)!==-1}function D(A,M){var S=C(A.substr(M,2));if(S!==i)return!1;var P=0;for(M+=2;P<5;){if(S=C(A.substr(M,2)),Sn)return!1;P+=1,M+=2}return C(A.substr(M,2))===s}function N(){this.isLoaded=!0}var H=function(){this.fonts=[],this.chars=null,this.typekitLoaded=0,this.isLoaded=!1,this._warned=!1,this.initTime=Date.now(),this.setIsLoadedBinded=this.setIsLoaded.bind(this),this.checkLoadedFontsBinded=this.checkLoadedFonts.bind(this)};H.isModifier=_,H.isZeroWidthJoiner=T,H.isFlagEmoji=j,H.isRegionalCode=V,H.isCombinedCharacter=O,H.isRegionalFlag=D,H.isVariationSelector=I,H.BLACK_FLAG_CODE_POINT=i;var R={addChars:c,addFonts:k,getCharData:m,getFontByName:b,measureText:f,checkLoadedFonts:g,setIsLoaded:N};return H.prototype=R,H}();function SlotManager(t){this.animationData=t}SlotManager.prototype.getProp=function(t){return this.animationData.slots&&this.animationData.slots[t.sid]?Object.assign(t,this.animationData.slots[t.sid].p):t};function slotFactory(t){return new SlotManager(t)}function RenderableElement(){}RenderableElement.prototype={initRenderable:function(){this.isInRange=!1,this.hidden=!1,this.isTransparent=!1,this.renderableComponents=[]},addRenderableComponent:function(e){this.renderableComponents.indexOf(e)===-1&&this.renderableComponents.push(e)},removeRenderableComponent:function(e){this.renderableComponents.indexOf(e)!==-1&&this.renderableComponents.splice(this.renderableComponents.indexOf(e),1)},prepareRenderableFrame:function(e){this.checkLayerLimits(e)},checkTransparency:function(){this.finalTransform.mProp.o.v<=0?!this.isTransparent&&this.globalData.renderConfig.hideOnTransparent&&(this.isTransparent=!0,this.hide()):this.isTransparent&&(this.isTransparent=!1,this.show())},checkLayerLimits:function(e){this.data.ip-this.data.st<=e&&this.data.op-this.data.st>e?this.isInRange!==!0&&(this.globalData._mdf=!0,this._mdf=!0,this.isInRange=!0,this.show()):this.isInRange!==!1&&(this.globalData._mdf=!0,this.isInRange=!1,this.hide())},renderRenderable:function(){var e,r=this.renderableComponents.length;for(e=0;e.1)&&this.audio.seek(this._currentTime/this.globalData.frameRate):(this.audio.play(),this.audio.seek(this._currentTime/this.globalData.frameRate),this._isPlaying=!0))},AudioElement.prototype.show=function(){},AudioElement.prototype.hide=function(){this.audio.pause(),this._isPlaying=!1},AudioElement.prototype.pause=function(){this.audio.pause(),this._isPlaying=!1,this._canPlay=!1},AudioElement.prototype.resume=function(){this._canPlay=!0},AudioElement.prototype.setRate=function(t){this.audio.rate(t)},AudioElement.prototype.volume=function(t){this._volumeMultiplier=t,this._previousVolume=t*this._volume,this.audio.volume(this._previousVolume)},AudioElement.prototype.getBaseElement=function(){return null},AudioElement.prototype.destroy=function(){},AudioElement.prototype.sourceRectAtTime=function(){},AudioElement.prototype.initExpressions=function(){};function BaseRenderer(){}BaseRenderer.prototype.checkLayers=function(t){var e,r=this.layers.length,i;for(this.completeLayers=!0,e=r-1;e>=0;e-=1)this.elements[e]||(i=this.layers[e],i.ip-i.st<=t-this.layers[e].st&&i.op-i.st>t-this.layers[e].st&&this.buildItem(e)),this.completeLayers=this.elements[e]?this.completeLayers:!1;this.checkPendingElements()},BaseRenderer.prototype.createItem=function(t){switch(t.ty){case 2:return this.createImage(t);case 0:return this.createComp(t);case 1:return this.createSolid(t);case 3:return this.createNull(t);case 4:return this.createShape(t);case 5:return this.createText(t);case 6:return this.createAudio(t);case 13:return this.createCamera(t);case 15:return this.createFootage(t);default:return this.createNull(t)}},BaseRenderer.prototype.createCamera=function(){throw new Error("You're using a 3d camera. Try the html renderer.")},BaseRenderer.prototype.createAudio=function(t){return new AudioElement(t,this.globalData,this)},BaseRenderer.prototype.createFootage=function(t){return new FootageElement(t,this.globalData,this)},BaseRenderer.prototype.buildAllItems=function(){var t,e=this.layers.length;for(t=0;t0&&(this.maskElement.setAttribute("id",u),this.element.maskedElement.setAttribute(m,"url("+getLocationHref()+"#"+u+")"),i.appendChild(this.maskElement)),this.viewData.length&&this.element.addRenderableComponent(this)}MaskElement.prototype.getMaskProperty=function(t){return this.viewData[t].prop},MaskElement.prototype.renderFrame=function(t){var e=this.element.finalTransform.mat,r,i=this.masksProperties.length;for(r=0;r1&&(i+=" C"+e.o[s-1][0]+","+e.o[s-1][1]+" "+e.i[0][0]+","+e.i[0][1]+" "+e.v[0][0]+","+e.v[0][1]),r.lastPath!==i){var n="";r.elem&&(e.c&&(n=t.inv?this.solidPath+i:i),r.elem.setAttribute("d",n)),r.lastPath=i}},MaskElement.prototype.destroy=function(){this.element=null,this.globalData=null,this.maskElement=null,this.data=null,this.masksProperties=null};var filtersFactory=function(){var t={};t.createFilter=e,t.createAlphaToLuminanceFilter=r;function e(i,s){var a=createNS("filter");return a.setAttribute("id",i),s!==!0&&(a.setAttribute("filterUnits","objectBoundingBox"),a.setAttribute("x","0%"),a.setAttribute("y","0%"),a.setAttribute("width","100%"),a.setAttribute("height","100%")),a}function r(){var i=createNS("feColorMatrix");return i.setAttribute("type","matrix"),i.setAttribute("color-interpolation-filters","sRGB"),i.setAttribute("values","0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1"),i}return t}(),featureSupport=function(){var t={maskType:!0,svgLumaHidden:!0,offscreenCanvas:typeof OffscreenCanvas<"u"};return(/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))&&(t.maskType=!1),/firefox/i.test(navigator.userAgent)&&(t.svgLumaHidden=!1),t}(),registeredEffects$1={},idPrefix="filter_result_";function SVGEffects(t){var e,r="SourceGraphic",i=t.data.ef?t.data.ef.length:0,s=createElementID(),a=filtersFactory.createFilter(s,!0),n=0;this.filters=[];var l;for(e=0;e=0&&(i=this.shapeModifiers[e].processShapes(this._isFirstFrame),!i);e-=1);}},searchProcessedElement:function(e){for(var r=this.processedElements,i=0,s=r.length;i.01)return!1;r+=1}return!0},GradientProperty.prototype.checkCollapsable=function(){if(this.o.length/2!==this.c.length/4)return!1;if(this.data.k.k[0].s)for(var t=0,e=this.data.k.k.length;t0;)c=u.transformers[V].mProps._mdf||c,I-=1,V-=1;if(c)for(I=C-u.styles[f].lvl,V=u.transformers.length-1;I>0;)T.multiply(u.transformers[V].mProps.v),I-=1,V-=1}else T=t;if(_=u.sh.paths,d=_._length,c){for(k="",g=0;g=1?N=.99:N<=-1&&(N=-.99);var H=O*N,R=Math.cos(D+u.a.v)*H+k[0],A=Math.sin(D+u.a.v)*H+k[1];g.setAttribute("fx",R),g.setAttribute("fy",A),d&&!u.g._collapsable&&(u.of.setAttribute("fx",R),u.of.setAttribute("fy",A))}}}function y(x,u,E){var g=u.style,d=u.d;d&&(d._mdf||E)&&d.dashStr&&(g.pElem.setAttribute("stroke-dasharray",d.dashStr),g.pElem.setAttribute("stroke-dashoffset",d.dashoffset[0])),u.c&&(u.c._mdf||E)&&g.pElem.setAttribute("stroke","rgb("+bmFloor(u.c.v[0])+","+bmFloor(u.c.v[1])+","+bmFloor(u.c.v[2])+")"),(u.o._mdf||E)&&g.pElem.setAttribute("stroke-opacity",u.o.v),(u.w._mdf||E)&&(g.pElem.setAttribute("stroke-width",u.w.v),g.msElem&&g.msElem.setAttribute("stroke-width",u.w.v))}return r}();function SVGShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.initElement(t,e,r),this.prevViewData=[]}extendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement],SVGShapeElement),SVGShapeElement.prototype.initSecondaryElement=function(){},SVGShapeElement.prototype.identityMatrix=new Matrix,SVGShapeElement.prototype.buildExpressionInterface=function(){},SVGShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes()},SVGShapeElement.prototype.filterUniqueShapes=function(){var t,e=this.shapes.length,r,i,s=this.stylesList.length,a,n=[],l=!1;for(i=0;i1&&l&&this.setShapesAsAnimated(n)}},SVGShapeElement.prototype.setShapesAsAnimated=function(t){var e,r=t.length;for(e=0;e=0;o-=1){if(k=this.searchProcessedElement(t[o]),k?e[o]=r[k-1]:t[o]._render=n,t[o].ty==="fl"||t[o].ty==="st"||t[o].ty==="gf"||t[o].ty==="gs"||t[o].ty==="no")k?e[o].style.closed=!1:e[o]=this.createStyleElement(t[o],s),t[o]._render&&e[o].style.pElem.parentNode!==i&&i.appendChild(e[o].style.pElem),u.push(e[o].style);else if(t[o].ty==="gr"){if(!k)e[o]=this.createGroupElement(t[o]);else for(x=e[o].it.length,y=0;y1,this.kf&&this.addEffect(this.getKeyframeValue.bind(this)),this.kf},TextProperty.prototype.addEffect=function(t){this.effectsSequence.push(t),this.elem.addDynamicProperty(this)},TextProperty.prototype.getValue=function(t){if(!((this.elem.globalData.frameId===this.frameId||!this.effectsSequence.length)&&!t)){this.currentData.t=this.data.d.k[this.keysIndex].s.t;var e=this.currentData,r=this.keysIndex;if(this.lock){this.setCurrentData(this.currentData);return}this.lock=!0,this._mdf=!1;var i,s=this.effectsSequence.length,a=t||this.data.d.k[this.keysIndex].s;for(i=0;ie);)r+=1;return this.keysIndex!==r&&(this.keysIndex=r),this.data.d.k[this.keysIndex].s},TextProperty.prototype.buildFinalText=function(t){for(var e=[],r=0,i=t.length,s,a,n=!1,l=!1,o="";r=55296&&s<=56319?FontManager.isRegionalFlag(t,r)?o=t.substr(r,14):(a=t.charCodeAt(r+1),a>=56320&&a<=57343&&(FontManager.isModifier(s,a)?(o=t.substr(r,2),n=!0):FontManager.isFlagEmoji(t.substr(r,4))?o=t.substr(r,4):o=t.substr(r,2))):s>56319?(a=t.charCodeAt(r+1),FontManager.isVariationSelector(s)&&(n=!0)):FontManager.isZeroWidthJoiner(s)&&(n=!0,l=!0),n?(e[e.length-1]+=o,n=!1):e.push(o),r+=o.length;return e},TextProperty.prototype.completeTextData=function(t){t.__complete=!0;var e=this.elem.globalData.fontManager,r=this.data,i=[],s,a,n,l=0,o,p=r.m.g,y=0,x=0,u=0,E=[],g=0,d=0,k,c,m=e.getFontByName(t.f),f,b=0,C=getFontProperties(m);t.fWeight=C.weight,t.fStyle=C.style,t.finalSize=t.s,t.finalText=this.buildFinalText(t.t),a=t.finalText.length,t.finalLineHeight=t.lh;var _=t.tr/1e3*t.finalSize,T;if(t.sz)for(var I=!0,V=t.sz[0],j=t.sz[1],O,D;I;){D=this.buildFinalText(t.t),O=0,g=0,a=D.length,_=t.tr/1e3*t.finalSize;var N=-1;for(s=0;sV&&D[s]!==" "?(N===-1?a+=1:s=N,O+=t.finalLineHeight||t.finalSize*1.2,D.splice(s,N===s?1:0,"\r"),N=-1,g=0):(g+=b,g+=_);O+=m.ascent*t.finalSize/100,this.canResize&&t.finalSize>this.minimumFontSize&&jd?g:d,g=-2*_,o="",n=!0,u+=1):o=R,e.chars?(f=e.getCharData(R,m.fStyle,e.getFontByName(t.f).fFamily),b=n?0:f.w*t.finalSize/100):b=e.measureText(o,t.f,t.finalSize),R===" "?H+=b+_:(g+=b+_+H,H=0),i.push({l:b,an:b,add:y,n,anIndexes:[],val:o,line:u,animatorJustifyOffset:0}),p==2){if(y+=b,o===""||o===" "||s===a-1){for((o===""||o===" ")&&(y-=b);x<=s;)i[x].an=y,i[x].ind=l,i[x].extra=b,x+=1;l+=1,y=0}}else if(p==3){if(y+=b,o===""||s===a-1){for(o===""&&(y-=b);x<=s;)i[x].an=y,i[x].ind=l,i[x].extra=b,x+=1;y=0,l+=1}}else i[l].ind=l,i[l].extra=0,l+=1;if(t.l=i,d=g>d?g:d,E.push(g),t.sz)t.boxWidth=t.sz[0],t.justifyOffset=0;else switch(t.boxWidth=d,t.j){case 1:t.justifyOffset=-t.boxWidth;break;case 2:t.justifyOffset=-t.boxWidth/2;break;default:t.justifyOffset=0}t.lineWidths=E;var A=r.a,M,S;c=A.length;var P,L,F=[];for(k=0;k0?l=this.ne.v/100:o=-this.ne.v/100,this.xe.v>0?p=1-this.xe.v/100:y=1+this.xe.v/100;var x=BezierFactory.getBezierEasing(l,o,p,y).get,u=0,E=this.finalS,g=this.finalE,d=this.data.sh;if(d===2)g===E?u=n>=g?1:0:u=t(0,e(.5/(g-E)+(n-E)/(g-E),1)),u=x(u);else if(d===3)g===E?u=n>=g?0:1:u=1-t(0,e(.5/(g-E)+(n-E)/(g-E),1)),u=x(u);else if(d===4)g===E?u=0:(u=t(0,e(.5/(g-E)+(n-E)/(g-E),1)),u<.5?u*=2:u=1-2*(u-.5)),u=x(u);else if(d===5){if(g===E)u=0;else{var k=g-E;n=e(t(0,n+.5-E),g-E);var c=-k/2+n,m=k/2;u=Math.sqrt(1-c*c/(m*m))}u=x(u)}else d===6?(g===E?u=0:(n=e(t(0,n+.5-E),g-E),u=(1+Math.cos(Math.PI+Math.PI*2*n/(g-E)))/2),u=x(u)):(n>=r(E)&&(n-E<0?u=t(0,e(e(g,1)-(E-n),1)):u=t(0,e(g-n,1))),u=x(u));if(this.sm.v!==100){var f=this.sm.v*.01;f===0&&(f=1e-8);var b=.5-f*.5;u1&&(u=1))}return u*this.a.v},getValue:function(n){this.iterateDynamicProperties(),this._mdf=n||this._mdf,this._currentTextLength=this.elem.textProperty.currentData.l.length||0,n&&this.data.r===2&&(this.e.v=this._currentTextLength);var l=this.data.r===2?1:100/this.data.totalChars,o=this.o.v/l,p=this.s.v/l+o,y=this.e.v/l+o;if(p>y){var x=p;p=y,y=x}this.finalS=p,this.finalE=y}},extendPrototype([DynamicPropertyContainer],i);function s(a,n,l){return new i(a,n)}return{getTextSelectorProp:s}}();function TextAnimatorDataProperty(t,e,r){var i={propType:!1},s=PropertyFactory.getProp,a=e.a;this.a={r:a.r?s(t,a.r,0,degToRads,r):i,rx:a.rx?s(t,a.rx,0,degToRads,r):i,ry:a.ry?s(t,a.ry,0,degToRads,r):i,sk:a.sk?s(t,a.sk,0,degToRads,r):i,sa:a.sa?s(t,a.sa,0,degToRads,r):i,s:a.s?s(t,a.s,1,.01,r):i,a:a.a?s(t,a.a,1,0,r):i,o:a.o?s(t,a.o,0,.01,r):i,p:a.p?s(t,a.p,1,0,r):i,sw:a.sw?s(t,a.sw,0,0,r):i,sc:a.sc?s(t,a.sc,1,0,r):i,fc:a.fc?s(t,a.fc,1,0,r):i,fh:a.fh?s(t,a.fh,0,0,r):i,fs:a.fs?s(t,a.fs,0,.01,r):i,fb:a.fb?s(t,a.fb,0,.01,r):i,t:a.t?s(t,a.t,0,0,r):i},this.s=TextSelectorProp.getTextSelectorProp(t,e.s,r),this.s.t=e.s.t}function TextAnimatorProperty(t,e,r){this._isFirstFrame=!0,this._hasMaskedPath=!1,this._frameId=-1,this._textData=t,this._renderType=e,this._elem=r,this._animatorsData=createSizedArray(this._textData.a.length),this._pathData={},this._moreOptions={alignment:{}},this.renderedLetters=[],this.lettersChangedFlag=!1,this.initDynamicPropertyContainer(r)}TextAnimatorProperty.prototype.searchProperties=function(){var t,e=this._textData.a.length,r,i=PropertyFactory.getProp;for(t=0;t=g+et||!C?(V=(g+et-k)/d.partialLength,z=b.point[0]+(d.point[0]-b.point[0])*V,W=b.point[1]+(d.point[1]-b.point[1])*V,a.translate(-r[0]*u[y].an*.005,-(r[1]*H)*.01),c=!1):C&&(k+=d.partialLength,m+=1,m>=C.length&&(m=0,f+=1,_[f]?C=_[f].points:O.v.c?(m=0,f=0,C=_[f].points):(k-=d.partialLength,C=null)),C&&(b=d,d=C[m],T=d.partialLength));G=u[y].an/2-u[y].add,a.translate(-G,0,0)}else G=u[y].an/2-u[y].add,a.translate(-G,0,0),a.translate(-r[0]*u[y].an*.005,-r[1]*H*.01,0);for(S=0;St?this.textSpans[t].span:createNS(l?"g":"text"),f<=t){if(o.setAttribute("stroke-linecap","butt"),o.setAttribute("stroke-linejoin","round"),o.setAttribute("stroke-miterlimit","4"),this.textSpans[t].span=o,l){var C=createNS("g");o.appendChild(C),this.textSpans[t].childSpan=C}this.textSpans[t].span=o,this.layerElement.appendChild(o)}o.style.display="inherit"}if(p.reset(),x&&(n[t].n&&(u=-d,E+=r.yOffset,E+=g?1:0,g=!1),this.applyTextPropertiesToMatrix(r,p,n[t].line,u,E),u+=n[t].l||0,u+=d),l){b=this.globalData.fontManager.getCharData(r.finalText[t],i.fStyle,this.globalData.fontManager.getFontByName(r.f).fFamily);var _;if(b.t===1)_=new SVGCompElement(b.data,this.globalData,this);else{var T=emptyShapeData;b.data&&b.data.shapes&&(T=this.buildShapeData(b.data,r.finalSize)),_=new SVGShapeElement(T,this.globalData,this)}if(this.textSpans[t].glyph){var I=this.textSpans[t].glyph;this.textSpans[t].childSpan.removeChild(I.layerElement),I.destroy()}this.textSpans[t].glyph=_,_._debug=!0,_.prepareFrame(0),_.renderFrame(),this.textSpans[t].childSpan.appendChild(_.layerElement),b.t===1&&this.textSpans[t].childSpan.setAttribute("transform","scale("+r.finalSize/100+","+r.finalSize/100+")")}else x&&o.setAttribute("transform","translate("+p.props[12]+","+p.props[13]+")"),o.textContent=n[t].val,o.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve")}x&&o&&o.setAttribute("d",y)}for(;t=0;e-=1)(this.completeLayers||this.elements[e])&&this.elements[e].prepareFrame(t-this.layers[e].st);if(this.globalData._mdf)for(e=0;e=0;r-=1)(this.completeLayers||this.elements[r])&&(this.elements[r].prepareFrame(this.renderedFrame-this.layers[r].st),this.elements[r]._mdf&&(this._mdf=!0))}},ICompElement.prototype.renderInnerContent=function(){var t,e=this.layers.length;for(t=0;t=0;i-=1)e.finalTransform.multiply(e.transforms[i].transform.mProps.v);e._mdf=a},processSequences:function(e){var r,i=this.sequenceList.length;for(r=0;r=1){this.buffers=[];var e=this.globalData.canvasContext,r=assetLoader.createCanvas(e.canvas.width,e.canvas.height);this.buffers.push(r);var i=assetLoader.createCanvas(e.canvas.width,e.canvas.height);this.buffers.push(i),this.data.tt>=3&&!document._isProxy&&assetLoader.loadLumaCanvas()}this.canvasContext=this.globalData.canvasContext,this.transformCanvas=this.globalData.transformCanvas,this.renderableEffectsManager=new CVEffects(this),this.searchEffectTransforms()},createContent:function(){},setBlendMode:function(){var e=this.globalData;if(e.blendMode!==this.data.bm){e.blendMode=this.data.bm;var r=getBlendMode(this.data.bm);e.canvasContext.globalCompositeOperation=r}},createRenderableComponents:function(){this.maskManager=new CVMaskElement(this.data,this),this.transformEffects=this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT)},hideElement:function(){!this.hidden&&(!this.isInRange||this.isTransparent)&&(this.hidden=!0)},showElement:function(){this.isInRange&&!this.isTransparent&&(this.hidden=!1,this._isFirstFrame=!0,this.maskManager._isFirstFrame=!0)},clearCanvas:function(e){e.clearRect(this.transformCanvas.tx,this.transformCanvas.ty,this.transformCanvas.w*this.transformCanvas.sx,this.transformCanvas.h*this.transformCanvas.sy)},prepareLayer:function(){if(this.data.tt>=1){var e=this.buffers[0],r=e.getContext("2d");this.clearCanvas(r),r.drawImage(this.canvasContext.canvas,0,0),this.currentTransform=this.canvasContext.getTransform(),this.canvasContext.setTransform(1,0,0,1,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.setTransform(this.currentTransform)}},exitLayer:function(){if(this.data.tt>=1){var e=this.buffers[1],r=e.getContext("2d");this.clearCanvas(r),r.drawImage(this.canvasContext.canvas,0,0),this.canvasContext.setTransform(1,0,0,1,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.setTransform(this.currentTransform);var i=this.comp.getElementById("tp"in this.data?this.data.tp:this.data.ind-1);if(i.renderFrame(!0),this.canvasContext.setTransform(1,0,0,1,0,0),this.data.tt>=3&&!document._isProxy){var s=assetLoader.getLumaCanvas(this.canvasContext.canvas),a=s.getContext("2d");a.drawImage(this.canvasContext.canvas,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.drawImage(s,0,0)}this.canvasContext.globalCompositeOperation=operationsMap[this.data.tt],this.canvasContext.drawImage(e,0,0),this.canvasContext.globalCompositeOperation="destination-over",this.canvasContext.drawImage(this.buffers[0],0,0),this.canvasContext.setTransform(this.currentTransform),this.canvasContext.globalCompositeOperation="source-over"}},renderFrame:function(e){if(!(this.hidden||this.data.hd)&&!(this.data.td===1&&!e)){this.renderTransform(),this.renderRenderable(),this.renderLocalTransform(),this.setBlendMode();var r=this.data.ty===0;this.prepareLayer(),this.globalData.renderer.save(r),this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props),this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity),this.renderInnerContent(),this.globalData.renderer.restore(r),this.exitLayer(),this.maskManager.hasMasks&&this.globalData.renderer.restore(!0),this._isFirstFrame&&(this._isFirstFrame=!1)}},destroy:function(){this.canvasContext=null,this.data=null,this.globalData=null,this.maskManager.destroy()},mHelper:new Matrix},CVBaseElement.prototype.hide=CVBaseElement.prototype.hideElement,CVBaseElement.prototype.show=CVBaseElement.prototype.showElement;function CVShapeData(t,e,r,i){this.styledShapes=[],this.tr=[0,0,0,0,0,0];var s=4;e.ty==="rc"?s=5:e.ty==="el"?s=6:e.ty==="sr"&&(s=7),this.sh=ShapePropertyFactory.getShapeProp(t,e,s,t);var a,n=r.length,l;for(a=0;a=0;a-=1){if(x=this.searchProcessedElement(t[a]),x?e[a]=r[x-1]:t[a]._shouldRender=i,t[a].ty==="fl"||t[a].ty==="st"||t[a].ty==="gf"||t[a].ty==="gs")x?e[a].style.closed=!1:e[a]=this.createStyleElement(t[a],g),p.push(e[a].style);else if(t[a].ty==="gr"){if(!x)e[a]=this.createGroupElement(t[a]);else for(o=e[a].it.length,l=0;l=0;s-=1)e[s].ty==="tr"?(n=r[s].transform,this.renderShapeTransform(t,n)):e[s].ty==="sh"||e[s].ty==="el"||e[s].ty==="rc"||e[s].ty==="sr"?this.renderPath(e[s],r[s]):e[s].ty==="fl"?this.renderFill(e[s],r[s],n):e[s].ty==="st"?this.renderStroke(e[s],r[s],n):e[s].ty==="gf"||e[s].ty==="gs"?this.renderGradientFill(e[s],r[s],n):e[s].ty==="gr"?this.renderShape(n,e[s].it,r[s].it):e[s].ty;i&&this.drawLayer()},CVShapeElement.prototype.renderStyledShape=function(t,e){if(this._isFirstFrame||e._mdf||t.transforms._mdf){var r=t.trNodes,i=e.paths,s,a,n,l=i._length;r.length=0;var o=t.transforms.finalTransform;for(n=0;n=1?y=.99:y<=-1&&(y=-.99);var x=o*y,u=Math.cos(p+e.a.v)*x+n[0],E=Math.sin(p+e.a.v)*x+n[1];s=a.createRadialGradient(u,E,0,n[0],n[1],o)}var g,d=t.g.p,k=e.g.c,c=1;for(g=0;ga&&o==="xMidYMid slice"||ss&&l==="meet"||as&&l==="slice")?this.transformCanvas.tx=(r-this.transformCanvas.w*(i/this.transformCanvas.h))/2*this.renderConfig.dpr:p==="xMax"&&(as&&l==="slice")?this.transformCanvas.tx=(r-this.transformCanvas.w*(i/this.transformCanvas.h))*this.renderConfig.dpr:this.transformCanvas.tx=0,y==="YMid"&&(a>s&&l==="meet"||as&&l==="meet"||a=0;t-=1)this.elements[t]&&this.elements[t].destroy&&this.elements[t].destroy();this.elements.length=0,this.globalData.canvasContext=null,this.animationItem.container=null,this.destroyed=!0},CanvasRendererBase.prototype.renderFrame=function(t,e){if(!(this.renderedFrame===t&&this.renderConfig.clearCanvas===!0&&!e||this.destroyed||t===-1)){this.renderedFrame=t,this.globalData.frameNum=t-this.animationItem._isFirstFrame,this.globalData.frameId+=1,this.globalData._mdf=!this.renderConfig.clearCanvas||e,this.globalData.projectInterface.currentFrame=t;var r,i=this.layers.length;for(this.completeLayers||this.checkLayers(t),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&this.elements[r].prepareFrame(t-this.layers[r].st);if(this.globalData._mdf){for(this.renderConfig.clearCanvas===!0?this.canvasContext.clearRect(0,0,this.transformCanvas.w,this.transformCanvas.h):this.save(),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&this.elements[r].renderFrame();this.renderConfig.clearCanvas!==!0&&this.restore()}}},CanvasRendererBase.prototype.buildItem=function(t){var e=this.elements;if(!(e[t]||this.layers[t].ty===99)){var r=this.createItem(this.layers[t],this,this.globalData);e[t]=r,r.initExpressions()}},CanvasRendererBase.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){var t=this.pendingElements.pop();t.checkParenting()}},CanvasRendererBase.prototype.hide=function(){this.animationItem.container.style.display="none"},CanvasRendererBase.prototype.show=function(){this.animationItem.container.style.display="block"};function CanvasContext(){this.opacity=-1,this.transform=createTypedArray("float32",16),this.fillStyle="",this.strokeStyle="",this.lineWidth="",this.lineCap="",this.lineJoin="",this.miterLimit="",this.id=Math.random()}function CVContextData(){this.stack=[],this.cArrPos=0,this.cTr=new Matrix;var t,e=15;for(t=0;t=0;e-=1)(this.completeLayers||this.elements[e])&&this.elements[e].renderFrame()},CVCompElement.prototype.destroy=function(){var t,e=this.layers.length;for(t=e-1;t>=0;t-=1)this.elements[t]&&this.elements[t].destroy();this.layers=null,this.elements=null},CVCompElement.prototype.createComp=function(t){return new CVCompElement(t,this.globalData,this)};function CanvasRenderer(t,e){this.animationItem=t,this.renderConfig={clearCanvas:e&&e.clearCanvas!==void 0?e.clearCanvas:!0,context:e&&e.context||null,progressiveLoad:e&&e.progressiveLoad||!1,preserveAspectRatio:e&&e.preserveAspectRatio||"xMidYMid meet",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||"xMidYMid slice",contentVisibility:e&&e.contentVisibility||"visible",className:e&&e.className||"",id:e&&e.id||"",runExpressions:!e||e.runExpressions===void 0||e.runExpressions},this.renderConfig.dpr=e&&e.dpr||1,this.animationItem.wrapper&&(this.renderConfig.dpr=e&&e.dpr||window.devicePixelRatio||1),this.renderedFrame=-1,this.globalData={frameNum:-1,_mdf:!1,renderConfig:this.renderConfig,currentGlobalAlpha:-1},this.contextData=new CVContextData,this.elements=[],this.pendingElements=[],this.transformMat=new Matrix,this.completeLayers=!1,this.rendererType="canvas",this.renderConfig.clearCanvas&&(this.ctxTransform=this.contextData.transform.bind(this.contextData),this.ctxOpacity=this.contextData.opacity.bind(this.contextData),this.ctxFillStyle=this.contextData.fillStyle.bind(this.contextData),this.ctxStrokeStyle=this.contextData.strokeStyle.bind(this.contextData),this.ctxLineWidth=this.contextData.lineWidth.bind(this.contextData),this.ctxLineCap=this.contextData.lineCap.bind(this.contextData),this.ctxLineJoin=this.contextData.lineJoin.bind(this.contextData),this.ctxMiterLimit=this.contextData.miterLimit.bind(this.contextData),this.ctxFill=this.contextData.fill.bind(this.contextData),this.ctxFillRect=this.contextData.fillRect.bind(this.contextData),this.ctxStroke=this.contextData.stroke.bind(this.contextData),this.save=this.contextData.save.bind(this.contextData))}extendPrototype([CanvasRendererBase],CanvasRenderer),CanvasRenderer.prototype.createComp=function(t){return new CVCompElement(t,this.globalData,this)};function HBaseElement(){}HBaseElement.prototype={checkBlendMode:function(){},initRendererElement:function(){this.baseElement=createTag(this.data.tg||"div"),this.data.hasMask?(this.svgElement=createNS("svg"),this.layerElement=createNS("g"),this.maskedElement=this.layerElement,this.svgElement.appendChild(this.layerElement),this.baseElement.appendChild(this.svgElement)):this.layerElement=this.baseElement,styleDiv(this.baseElement)},createContainerElements:function(){this.renderableEffectsManager=new CVEffects(this),this.transformedElement=this.baseElement,this.maskedElement=this.layerElement,this.data.ln&&this.layerElement.setAttribute("id",this.data.ln),this.data.cl&&this.layerElement.setAttribute("class",this.data.cl),this.data.bm!==0&&this.setBlendMode()},renderElement:function(){var e=this.transformedElement?this.transformedElement.style:{};if(this.finalTransform._matMdf){var r=this.finalTransform.mat.toCSS();e.transform=r,e.webkitTransform=r}this.finalTransform._opMdf&&(e.opacity=this.finalTransform.mProp.o.v)},renderFrame:function(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},destroy:function(){this.layerElement=null,this.transformedElement=null,this.matteElement&&(this.matteElement=null),this.maskManager&&(this.maskManager.destroy(),this.maskManager=null)},createRenderableComponents:function(){this.maskManager=new MaskElement(this.data,this,this.globalData)},addEffects:function(){},setMatte:function(){}},HBaseElement.prototype.getBaseElement=SVGBaseElement.prototype.getBaseElement,HBaseElement.prototype.destroyBaseElement=HBaseElement.prototype.destroy,HBaseElement.prototype.buildElementParenting=BaseRenderer.prototype.buildElementParenting;function HSolidElement(t,e,r){this.initElement(t,e,r)}extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],HSolidElement),HSolidElement.prototype.createContent=function(){var t;this.data.hasMask?(t=createNS("rect"),t.setAttribute("width",this.data.sw),t.setAttribute("height",this.data.sh),t.setAttribute("fill",this.data.sc),this.svgElement.setAttribute("width",this.data.sw),this.svgElement.setAttribute("height",this.data.sh)):(t=createTag("div"),t.style.width=this.data.sw+"px",t.style.height=this.data.sh+"px",t.style.backgroundColor=this.data.sc),this.layerElement.appendChild(t)};function HShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.shapesContainer=createNS("g"),this.initElement(t,e,r),this.prevViewData=[],this.currentBBox={x:999999,y:-999999,h:0,w:0}}extendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement],HShapeElement),HShapeElement.prototype._renderShapeFrame=HShapeElement.prototype.renderInnerContent,HShapeElement.prototype.createContent=function(){var t;if(this.baseElement.style.fontSize=0,this.data.hasMask)this.layerElement.appendChild(this.shapesContainer),t=this.svgElement;else{t=createNS("svg");var e=this.comp.data?this.comp.data:this.globalData.compSize;t.setAttribute("width",e.w),t.setAttribute("height",e.h),t.appendChild(this.shapesContainer),this.layerElement.appendChild(t)}this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0,[],!0),this.filterUniqueShapes(),this.shapeCont=t},HShapeElement.prototype.getTransformedPoint=function(t,e){var r,i=t.length;for(r=0;r0&&o<1&&s[u].push(this.calculateF(o,t,e,r,i,u))):(p=n*n-4*l*a,p>=0&&(y=(-n+bmSqrt(p))/(2*a),y>0&&y<1&&s[u].push(this.calculateF(y,t,e,r,i,u)),x=(-n-bmSqrt(p))/(2*a),x>0&&x<1&&s[u].push(this.calculateF(x,t,e,r,i,u)))));this.shapeBoundingBox.left=bmMin.apply(null,s[0]),this.shapeBoundingBox.top=bmMin.apply(null,s[1]),this.shapeBoundingBox.right=bmMax.apply(null,s[0]),this.shapeBoundingBox.bottom=bmMax.apply(null,s[1])},HShapeElement.prototype.calculateF=function(t,e,r,i,s,a){return bmPow(1-t,3)*e[a]+3*bmPow(1-t,2)*t*r[a]+3*(1-t)*bmPow(t,2)*i[a]+bmPow(t,3)*s[a]},HShapeElement.prototype.calculateBoundingBox=function(t,e){var r,i=t.length;for(r=0;rr&&(r=s)}r*=t.mult}else r=t.v*t.mult;e.x-=r,e.xMax+=r,e.y-=r,e.yMax+=r},HShapeElement.prototype.currentBoxContains=function(t){return this.currentBBox.x<=t.x&&this.currentBBox.y<=t.y&&this.currentBBox.width+this.currentBBox.x>=t.x+t.width&&this.currentBBox.height+this.currentBBox.y>=t.y+t.height},HShapeElement.prototype.renderInnerContent=function(){if(this._renderShapeFrame(),!this.hidden&&(this._isFirstFrame||this._mdf)){var t=this.tempBoundingBox,e=999999;if(t.x=e,t.xMax=-e,t.y=e,t.yMax=-e,this.calculateBoundingBox(this.itemsData,t),t.width=t.xMax=0;e-=1){var i=this.hierarchy[e].finalTransform.mProp;this.mat.translate(-i.p.v[0],-i.p.v[1],i.p.v[2]),this.mat.rotateX(-i.or.v[0]).rotateY(-i.or.v[1]).rotateZ(i.or.v[2]),this.mat.rotateX(-i.rx.v).rotateY(-i.ry.v).rotateZ(i.rz.v),this.mat.scale(1/i.s.v[0],1/i.s.v[1],1/i.s.v[2]),this.mat.translate(i.a.v[0],i.a.v[1],i.a.v[2])}if(this.p?this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]):this.mat.translate(-this.px.v,-this.py.v,this.pz.v),this.a){var s;this.p?s=[this.p.v[0]-this.a.v[0],this.p.v[1]-this.a.v[1],this.p.v[2]-this.a.v[2]]:s=[this.px.v-this.a.v[0],this.py.v-this.a.v[1],this.pz.v-this.a.v[2]];var a=Math.sqrt(Math.pow(s[0],2)+Math.pow(s[1],2)+Math.pow(s[2],2)),n=[s[0]/a,s[1]/a,s[2]/a],l=Math.sqrt(n[2]*n[2]+n[0]*n[0]),o=Math.atan2(n[1],l),p=Math.atan2(n[0],-n[2]);this.mat.rotateY(p).rotateX(-o)}this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v),this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]),this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0),this.mat.translate(0,0,this.pe.v);var y=!this._prevMat.equals(this.mat);if((y||this.pe._mdf)&&this.comp.threeDElements){r=this.comp.threeDElements.length;var x,u,E;for(e=0;e=t)return this.threeDElements[e].perspectiveElem;e+=1}return null},HybridRendererBase.prototype.createThreeDContainer=function(t,e){var r=createTag("div"),i,s;styleDiv(r);var a=createTag("div");if(styleDiv(a),e==="3d"){i=r.style,i.width=this.globalData.compSize.w+"px",i.height=this.globalData.compSize.h+"px";var n="50% 50%";i.webkitTransformOrigin=n,i.mozTransformOrigin=n,i.transformOrigin=n,s=a.style;var l="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";s.transform=l,s.webkitTransform=l}r.appendChild(a);var o={container:a,perspectiveElem:r,startPos:t,endPos:t,type:e};return this.threeDElements.push(o),o},HybridRendererBase.prototype.build3dContainers=function(){var t,e=this.layers.length,r,i="";for(t=0;t=0;t-=1)this.resizerElem.appendChild(this.threeDElements[t].perspectiveElem)},HybridRendererBase.prototype.addTo3dContainer=function(t,e){for(var r=0,i=this.threeDElements.length;rr?(s=t/this.globalData.compSize.w,a=t/this.globalData.compSize.w,n=0,l=(e-this.globalData.compSize.h*(t/this.globalData.compSize.w))/2):(s=e/this.globalData.compSize.h,a=e/this.globalData.compSize.h,n=(t-this.globalData.compSize.w*(e/this.globalData.compSize.h))/2,l=0);var o=this.resizerElem.style;o.webkitTransform="matrix3d("+s+",0,0,0,0,"+a+",0,0,0,0,1,0,"+n+","+l+",0,1)",o.transform=o.webkitTransform},HybridRendererBase.prototype.renderFrame=SVGRenderer.prototype.renderFrame,HybridRendererBase.prototype.hide=function(){this.resizerElem.style.display="none"},HybridRendererBase.prototype.show=function(){this.resizerElem.style.display="block"},HybridRendererBase.prototype.initItems=function(){if(this.buildAllItems(),this.camera)this.camera.setup();else{var t=this.globalData.compSize.w,e=this.globalData.compSize.h,r,i=this.threeDElements.length;for(r=0;r=p;)O/=2,D/=2,N>>>=1;return(O+N)/D};return V.int32=function(){return I.g(4)|0},V.quick=function(){return I.g(4)/4294967296},V.double=V,k(m(I.S),t),(b.pass||C||function(j,O,D,N){return N&&(N.S&&g(N,I),j.state=function(){return g(I,{})}),D?(e[n]=j,O):j})(V,T,"global"in b?b.global:this==e,b.state)}e["seed"+n]=u;function E(f){var b,C=f.length,_=this,T=0,I=_.i=_.j=0,V=_.S=[];for(C||(f=[C++]);Tr){var i=r;r=e,e=i}return Math.min(Math.max(t,e),r)}function radiansToDegrees(t){return t/degToRads}var radians_to_degrees=radiansToDegrees;function degreesToRadians(t){return t*degToRads}var degrees_to_radians=radiansToDegrees,helperLengthArray=[0,0,0,0,0,0];function length(t,e){if(typeof t=="number"||t instanceof Number)return e=e||0,Math.abs(t-e);e||(e=helperLengthArray);var r,i=Math.min(t.length,e.length),s=0;for(r=0;r.5?p/(2-s-a):p/(s+a),s){case e:n=(r-i)/p+(r1&&(r-=1),r<1/6?t+(e-t)*6*r:r<1/2?e:r<2/3?t+(e-t)*(2/3-r)*6:t}function hslToRgb(t){var e=t[0],r=t[1],i=t[2],s,a,n;if(r===0)s=i,n=i,a=i;else{var l=i<.5?i*(1+r):i+r-i*r,o=2*i-l;s=hue2rgb(o,l,e+1/3),a=hue2rgb(o,l,e),n=hue2rgb(o,l,e-1/3)}return[s,a,n,t[3]]}function linear(t,e,r,i,s){if((i===void 0||s===void 0)&&(i=e,s=r,e=0,r=1),r=r)return s;var n=r===e?0:(t-e)/(r-e);if(!i.length)return i+(s-i)*n;var l,o=i.length,p=createTypedArray("float32",o);for(l=0;l1){for(s=0;s1?e=1:e<0&&(e=0);var n=t(e);if($bm_isInstanceOfArray(s)){var l,o=s.length,p=createTypedArray("float32",o);for(l=0;ldata.k[e].t&&tdata.k[e+1].t-t?(i=e+2,s=data.k[e+1].t):(i=e+1,s=data.k[e].t);break}i===-1&&(i=e+1,s=data.k[e].t)}var a={};return a.index=i,a.time=s/elem.comp.globalData.frameRate,a}function key(t){var e,r,i;if(!data.k.length||typeof data.k[0]=="number")throw new Error("The property has no keyframe at index "+t);t-=1,e={time:data.k[t].t/elem.comp.globalData.frameRate,value:[]};var s=Object.prototype.hasOwnProperty.call(data.k[t],"s")?data.k[t].s:data.k[t-1].e;for(i=s.length,r=0;rk.length-1)&&(E=k.length-1),f=k[k.length-1-E].t,m=c-f);var b,C,_;if(u==="pingpong"){var T=Math.floor((d-f)/m);if(T%2!==0)return this.getValueAtTime((m-(d-f)%m+f)/this.comp.globalData.frameRate,0)}else if(u==="offset"){var I=this.getValueAtTime(f/this.comp.globalData.frameRate,0),V=this.getValueAtTime(c/this.comp.globalData.frameRate,0),j=this.getValueAtTime(((d-f)%m+f)/this.comp.globalData.frameRate,0),O=Math.floor((d-f)/m);if(this.pv.length){for(_=new Array(I.length),C=_.length,b=0;b=c)return this.pv;var m,f;g?(E?m=Math.abs(this.elem.comp.globalData.frameRate*E):m=Math.max(0,this.elem.data.op-c),f=c+m):((!E||E>k.length-1)&&(E=k.length-1),f=k[E].t,m=f-c);var b,C,_;if(u==="pingpong"){var T=Math.floor((c-d)/m);if(T%2===0)return this.getValueAtTime(((c-d)%m+c)/this.comp.globalData.frameRate,0)}else if(u==="offset"){var I=this.getValueAtTime(c/this.comp.globalData.frameRate,0),V=this.getValueAtTime(f/this.comp.globalData.frameRate,0),j=this.getValueAtTime((m-(c-d)%m+c)/this.comp.globalData.frameRate,0),O=Math.floor((c-d)/m)+1;if(this.pv.length){for(_=new Array(I.length),C=_.length,b=0;b1?(k-d)/(E-1):1,m=0,f=0,b;this.pv.length?b=createTypedArray("float32",this.pv.length):b=0;for(var C;mm){var T=f,I=d.c&&f===b-1?0:f+1,V=(m-C)/c[f].addedLength;_=bez.getPointInSegment(d.v[T],d.v[I],d.o[T],d.i[I],V,c[f]);break}else C+=c[f].addedLength;f+=1}return _||(_=d.c?[d.v[0][0],d.v[0][1]]:[d.v[d._length-1][0],d.v[d._length-1][1]]),_},vectorOnPath:function(E,g,d){E==1?E=this.v.c:E==0&&(E=.999);var k=this.pointOnPath(E,g),c=this.pointOnPath(E+.001,g),m=c[0]-k[0],f=c[1]-k[1],b=Math.sqrt(Math.pow(m,2)+Math.pow(f,2));if(b===0)return[0,0];var C=d==="tangent"?[m/b,f/b]:[-f/b,m/b];return C},tangentOnPath:function(E,g){return this.vectorOnPath(E,g,"tangent")},normalOnPath:function(E,g){return this.vectorOnPath(E,g,"normal")},setGroupProperty:expressionHelpers.setGroupProperty,getValueAtTime:expressionHelpers.getStaticValueAtTime},extendPrototype([y],o),extendPrototype([y],p),p.prototype.getValueAtTime=l,p.prototype.initiateExpression=ExpressionManager.initiateExpression;var x=ShapePropertyFactory.getShapeProp;ShapePropertyFactory.getShapeProp=function(u,E,g,d,k){var c=x(u,E,g,d,k);return c.propertyIndex=E.ix,c.lock=!1,g===3?expressionHelpers.searchExpressions(u,E.pt,c):g===4&&expressionHelpers.searchExpressions(u,E.ks,c),c.k&&u.addDynamicProperty(c),c}}function initialize$1(){addPropertyDecorator()}function addDecorator(){function t(){return this.data.d.x?(this.calculateExpression=ExpressionManager.initiateExpression.bind(this)(this.elem,this.data.d,this),this.addEffect(this.getExpressionValue.bind(this)),!0):null}TextProperty.prototype.getExpressionValue=function(e,r){var i=this.calculateExpression(r);if(e.t!==i){var s={};return this.copyData(s,e),s.t=i.toString(),s.__complete=!1,s}return e},TextProperty.prototype.searchProperty=function(){var e=this.searchKeyframes(),r=this.searchExpressions();return this.kf=e||r,this.kf},TextProperty.prototype.searchExpressions=t}function initialize(){addDecorator()}function SVGComposableEffect(){}SVGComposableEffect.prototype={createMergeNode:function t(e,r){var i=createNS("feMerge");i.setAttribute("result",e);var s,a;for(a=0;a=p?x=g<0?i:s:x=i+E*Math.pow((l-t)/g,1/r),y[u]=x,u+=1,a+=256/(n-1);return y.join(" ")},SVGProLevelsFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e,r=this.filterManager.effectElements;this.feFuncRComposed&&(t||r[3].p._mdf||r[4].p._mdf||r[5].p._mdf||r[6].p._mdf||r[7].p._mdf)&&(e=this.getTableValue(r[3].p.v,r[4].p.v,r[5].p.v,r[6].p.v,r[7].p.v),this.feFuncRComposed.setAttribute("tableValues",e),this.feFuncGComposed.setAttribute("tableValues",e),this.feFuncBComposed.setAttribute("tableValues",e)),this.feFuncR&&(t||r[10].p._mdf||r[11].p._mdf||r[12].p._mdf||r[13].p._mdf||r[14].p._mdf)&&(e=this.getTableValue(r[10].p.v,r[11].p.v,r[12].p.v,r[13].p.v,r[14].p.v),this.feFuncR.setAttribute("tableValues",e)),this.feFuncG&&(t||r[17].p._mdf||r[18].p._mdf||r[19].p._mdf||r[20].p._mdf||r[21].p._mdf)&&(e=this.getTableValue(r[17].p.v,r[18].p.v,r[19].p.v,r[20].p.v,r[21].p.v),this.feFuncG.setAttribute("tableValues",e)),this.feFuncB&&(t||r[24].p._mdf||r[25].p._mdf||r[26].p._mdf||r[27].p._mdf||r[28].p._mdf)&&(e=this.getTableValue(r[24].p.v,r[25].p.v,r[26].p.v,r[27].p.v,r[28].p.v),this.feFuncB.setAttribute("tableValues",e)),this.feFuncA&&(t||r[31].p._mdf||r[32].p._mdf||r[33].p._mdf||r[34].p._mdf||r[35].p._mdf)&&(e=this.getTableValue(r[31].p.v,r[32].p.v,r[33].p.v,r[34].p.v,r[35].p.v),this.feFuncA.setAttribute("tableValues",e))}};function SVGDropShadowEffect(t,e,r,i,s){var a=e.container.globalData.renderConfig.filterSize,n=e.data.fs||a;t.setAttribute("x",n.x||a.x),t.setAttribute("y",n.y||a.y),t.setAttribute("width",n.width||a.width),t.setAttribute("height",n.height||a.height),this.filterManager=e;var l=createNS("feGaussianBlur");l.setAttribute("in","SourceAlpha"),l.setAttribute("result",i+"_drop_shadow_1"),l.setAttribute("stdDeviation","0"),this.feGaussianBlur=l,t.appendChild(l);var o=createNS("feOffset");o.setAttribute("dx","25"),o.setAttribute("dy","0"),o.setAttribute("in",i+"_drop_shadow_1"),o.setAttribute("result",i+"_drop_shadow_2"),this.feOffset=o,t.appendChild(o);var p=createNS("feFlood");p.setAttribute("flood-color","#00ff00"),p.setAttribute("flood-opacity","1"),p.setAttribute("result",i+"_drop_shadow_3"),this.feFlood=p,t.appendChild(p);var y=createNS("feComposite");y.setAttribute("in",i+"_drop_shadow_3"),y.setAttribute("in2",i+"_drop_shadow_2"),y.setAttribute("operator","in"),y.setAttribute("result",i+"_drop_shadow_4"),t.appendChild(y);var x=this.createMergeNode(i,[i+"_drop_shadow_4",s]);t.appendChild(x)}extendPrototype([SVGComposableEffect],SVGDropShadowEffect),SVGDropShadowEffect.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){if((t||this.filterManager.effectElements[4].p._mdf)&&this.feGaussianBlur.setAttribute("stdDeviation",this.filterManager.effectElements[4].p.v/4),t||this.filterManager.effectElements[0].p._mdf){var e=this.filterManager.effectElements[0].p.v;this.feFlood.setAttribute("flood-color",rgbToHex(Math.round(e[0]*255),Math.round(e[1]*255),Math.round(e[2]*255)))}if((t||this.filterManager.effectElements[1].p._mdf)&&this.feFlood.setAttribute("flood-opacity",this.filterManager.effectElements[1].p.v/255),t||this.filterManager.effectElements[2].p._mdf||this.filterManager.effectElements[3].p._mdf){var r=this.filterManager.effectElements[3].p.v,i=(this.filterManager.effectElements[2].p.v-90)*degToRads,s=r*Math.cos(i),a=r*Math.sin(i);this.feOffset.setAttribute("dx",s),this.feOffset.setAttribute("dy",a)}}};var _svgMatteSymbols=[];function SVGMatte3Effect(t,e,r){this.initialized=!1,this.filterManager=e,this.filterElem=t,this.elem=r,r.matteElement=createNS("g"),r.matteElement.appendChild(r.layerElement),r.matteElement.appendChild(r.transformedElement),r.baseElement=r.matteElement}SVGMatte3Effect.prototype.findSymbol=function(t){for(var e=0,r=_svgMatteSymbols.length;e=0)&&(r[s]=t[s]);return r}function _objectWithoutProperties(t,e){if(t==null)return{};var r=_objectWithoutPropertiesLoose(t,e),i,s;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(t,i)&&(r[i]=t[i])}return r}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _unsupportedIterableToArray(t,e){if(t){if(typeof t=="string")return _arrayLikeToArray(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _arrayLikeToArray(t,e)}}function _arrayLikeToArray(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,i=new Array(e);r0&&arguments[0]!==void 0?arguments[0]:{},G;if(T.current){(G=_.current)===null||G===void 0||G.destroy();var z=_objectSpread2(_objectSpread2(_objectSpread2({},e),B),{},{container:T.current});return _.current=lottie.loadAnimation(z),C(!!_.current),function(){var W;(W=_.current)===null||W===void 0||W.destroy(),_.current=void 0}}};reactExports.useEffect(function(){var F=P();return function(){return F==null?void 0:F()}},[i,s]),reactExports.useEffect(function(){_.current&&(_.current.autoplay=!!a)},[a]),reactExports.useEffect(function(){if(_.current){if(!n){_.current.resetSegments(!0);return}!Array.isArray(n)||!n.length||((_.current.currentRawFramen[1])&&(_.current.currentRawFrame=n[0]),_.current.setSegment(n[0],n[1]))}},[n]),reactExports.useEffect(function(){var F=[{name:"complete",handler:l},{name:"loopComplete",handler:o},{name:"enterFrame",handler:p},{name:"segmentStart",handler:y},{name:"config_ready",handler:x},{name:"data_ready",handler:u},{name:"data_failed",handler:E},{name:"loaded_images",handler:g},{name:"DOMLoaded",handler:d},{name:"destroy",handler:k}],B=F.filter(function(z){return z.handler!=null});if(B.length){var G=B.map(function(z){var W;return(W=_.current)===null||W===void 0||W.addEventListener(z.name,z.handler),function(){var q;(q=_.current)===null||q===void 0||q.removeEventListener(z.name,z.handler)}});return function(){G.forEach(function(z){return z()})}}},[l,o,p,y,x,u,E,g,d,k]);var L=React.createElement("div",_objectSpread2({style:r,ref:T},c));return{View:L,play:I,stop:V,pause:j,setSpeed:O,goToAndStop:N,goToAndPlay:D,setDirection:H,playSegments:R,setSubframe:A,getDuration:M,destroy:S,animationContainerRef:T,animationLoaded:b,animationItem:_.current}};function getContainerVisibility(t){var e=t.getBoundingClientRect(),r=e.top,i=e.height,s=window.innerHeight-r,a=window.innerHeight+i;return s/a}function getContainerCursorPosition(t,e,r){var i=t.getBoundingClientRect(),s=i.top,a=i.left,n=i.width,l=i.height,o=(e-a)/n,p=(r-s)/l;return{x:o,y:p}}var useInitInteractivity=function t(e){var r=e.wrapperRef,i=e.animationItem,s=e.mode,a=e.actions;reactExports.useEffect(function(){var n=r.current;if(!(!n||!i||!a.length)){i.stop();var l=function(){var y=null,x=function(){var E=getContainerVisibility(n),g=a.find(function(k){var c=k.visibility;return c&&E>=c[0]&&E<=c[1]});if(g){if(g.type==="seek"&&g.visibility&&g.frames.length===2){var d=g.frames[0]+Math.ceil((E-g.visibility[0])/(g.visibility[1]-g.visibility[0])*g.frames[1]);//! goToAndStop must be relative to the start of the current segment i.goToAndStop(d-i.firstFrame-1,!0)}g.type==="loop"&&(y===null||y!==g.frames||i.isPaused)&&(i.playSegments(g.frames,!0),y=g.frames),g.type==="play"&&i.isPaused&&(i.resetSegments(!0),i.play()),g.type==="stop"&&i.goToAndStop(g.frames[0]-i.firstFrame-1,!0)}};return document.addEventListener("scroll",x),function(){document.removeEventListener("scroll",x)}},o=function(){var y=function(g,d){var k=g,c=d;if(k!==-1&&c!==-1){var m=getContainerCursorPosition(n,k,c);k=m.x,c=m.y}var f=a.find(function(_){var T=_.position;return T&&Array.isArray(T.x)&&Array.isArray(T.y)?k>=T.x[0]&&k<=T.x[1]&&c>=T.y[0]&&c<=T.y[1]:T&&!Number.isNaN(T.x)&&!Number.isNaN(T.y)?k===T.x&&c===T.y:!1});if(f){if(f.type==="seek"&&f.position&&Array.isArray(f.position.x)&&Array.isArray(f.position.y)&&f.frames.length===2){var b=(k-f.position.x[0])/(f.position.x[1]-f.position.x[0]),C=(c-f.position.y[0])/(f.position.y[1]-f.position.y[0]);i.playSegments(f.frames,!0),i.goToAndStop(Math.ceil((b+C)/2*(f.frames[1]-f.frames[0])),!0)}f.type==="loop"&&i.playSegments(f.frames,!0),f.type==="play"&&(i.isPaused&&i.resetSegments(!1),i.playSegments(f.frames)),f.type==="stop"&&i.goToAndStop(f.frames[0],!0)}},x=function(g){y(g.clientX,g.clientY)},u=function(){y(-1,-1)};return n.addEventListener("mousemove",x),n.addEventListener("mouseout",u),function(){n.removeEventListener("mousemove",x),n.removeEventListener("mouseout",u)}};switch(s){case"scroll":return l();case"cursor":return o()}}},[s,i])},useLottieInteractivity=function t(e){var r=e.actions,i=e.mode,s=e.lottieObj,a=s.animationItem,n=s.View,l=s.animationContainerRef;return useInitInteractivity({actions:r,animationItem:a,mode:i,wrapperRef:l}),n},_excluded=["style","interactivity"],Lottie=function t(e){var r,i,s,a=e.style,n=e.interactivity,l=_objectWithoutProperties(e,_excluded),o=useLottie(l,a),p=o.View,y=o.play,x=o.stop,u=o.pause,E=o.setSpeed,g=o.goToAndStop,d=o.goToAndPlay,k=o.setDirection,c=o.playSegments,m=o.setSubframe,f=o.getDuration,b=o.destroy,C=o.animationContainerRef,_=o.animationLoaded,T=o.animationItem;return reactExports.useEffect(function(){e.lottieRef&&(e.lottieRef.current={play:y,stop:x,pause:u,setSpeed:E,goToAndPlay:d,goToAndStop:g,setDirection:k,playSegments:c,setSubframe:m,getDuration:f,destroy:b,animationContainerRef:C,animationLoaded:_,animationItem:T})},[(r=e.lottieRef)===null||r===void 0?void 0:r.current]),useLottieInteractivity({lottieObj:{View:p,play:y,stop:x,pause:u,setSpeed:E,goToAndStop:g,goToAndPlay:d,setDirection:k,playSegments:c,setSubframe:m,getDuration:f,destroy:b,animationContainerRef:C,animationLoaded:_,animationItem:T},actions:(i=n==null?void 0:n.actions)!==null&&i!==void 0?i:[],mode:(s=n==null?void 0:n.mode)!==null&&s!==void 0?s:"scroll"})};const assets=[{id:"Qe0HNtHmMoBZnWq8BH9Mt",layers:[{ddd:0,ind:3,ty:4,nm:"",ln:"egJ6b2M31YpjHtKmwPaKM3",sr:1,ks:{a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,ip:0,op:157,st:0,bm:0,shapes:[{ty:"gr",hd:!1,bm:0,it:[{ty:"sh",hd:!1,ix:0,ks:{a:1,k:[{t:0,s:[{v:[[0,-140],[140,0],[0,140],[-140,0],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140]],i:[[0,0],[0,-77.32],[77.32,0],[0,77.32],[-77.32,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[77.32,0],[0,77.32],[-77.32,0],[0,-77.32],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:0,s:[{v:[[0,140],[0,140],[0,128.8],[0,128.8],[0,140],[0,140],[0,140],[0,140],[0,140],[0,140],[0,140]],i:[[0,0],[0,-140],[0,0],[0,-128.8],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,-140],[0,0],[0,-128.8],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:1,s:[{v:[[-3.54,139.96],[-10.57,139.6],[-9.72,128.43],[-3.26,128.76],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96]],i:[[0,0],[2.34,.18],[0,0],[-2.16,-.05],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-2.35,-.06],[0,0],[2.15,.16],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:2,s:[{v:[[-8.33,139.75],[-24.91,137.77],[-22.92,126.74],[-7.66,128.57],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75]],i:[[0,0],[5.48,.99],[0,0],[-5.12,-.3],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-5.56,-.33],[0,0],[5.05,.91],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:3,s:[{v:[[-14.46,139.25],[-42.82,133.29],[-39.39,122.63],[-13.31,128.11],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25]],i:[[0,0],[9.22,2.96],[0,0],[-8.86,-.92],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-9.63,-1],[0,0],[8.48,2.73],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:4,s:[{v:[[-22,138.26],[-63.8,124.62],[-58.7,114.65],[-20.24,127.2],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26]],i:[[0,0],[13.13,6.72],[0,0],[-13.4,-2.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-14.57,-2.32],[0,0],[12.08,6.18],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:5,s:[{v:[[-30.9,136.55],[-86.65,109.96],[-79.72,101.17],[-28.43,125.62],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55]],i:[[0,0],[16.37,12.9],[0,0],[-18.71,-4.23],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-20.33,-4.6],[0,0],[15.06,11.87],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:6,s:[{v:[[-41.07,133.84],[-109.09,87.75],[-100.36,80.73],[-37.79,123.13],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84]],i:[[0,0],[17.55,21.82],[0,0],[-24.63,-7.56],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-26.77,-8.22],[0,0],[16.15,20.08],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:7,s:[{v:[[-52.38,129.83],[-127.82,57.11],[-117.6,52.54],[-48.19,119.45],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83]],i:[[0,0],[14.79,33.09],[0,0],[-30.93,-12.48],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-33.61,-13.56],[0,0],[13.6,30.45],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:8,s:[{v:[[-64.51,124.25],[-138.74,18.75],[-127.64,17.25],[-59.35,114.31],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25]],i:[[0,0],[6.1,45.15],[0,0],[-37.2,-19.32],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-40.43,-20.99],[0,0],[5.61,41.54],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:9,s:[{v:[[-77.03,116.91],[-137.8,-24.7],[-126.78,-22.72],[-70.86,107.55],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91]],i:[[0,0],[-9.88,55.11],[0,0],[-43.01,-28.34],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-46.75,-30.8],[0,0],[-9.09,50.7],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:10,s:[{v:[[-89.47,107.68],[-122.24,-68.24],[-112.46,-62.78],[-82.31,99.07],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68]],i:[[0,0],[-32.87,58.88],[0,0],[-47.72,-39.65],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-51.87,-43.09],[0,0],[-30.24,54.17],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:11,s:[{v:[[-101.3,96.64],[-139.84,-6.59],[-91.76,-105.74],[-84.42,-97.28],[-128.66,-6.07],[-93.2,88.9],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64]],i:[[0,0],[-1.8,38.23],[-28.91,25.09],[0,0],[1.66,-35.17],[-24.31,-25.48],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-26.42,-27.69],[1.8,-38.23],[0,0],[-26.6,23.08],[-1.66,35.17],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:12,s:[{v:[[-112.01,83.98],[-134.39,-39.24],[-49.23,-131.06],[-45.29,-120.57],[-123.64,-36.1],[-103.05,77.26],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98]],i:[[0,0],[-12.35,42.3],[-41.26,15.5],[0,0],[11.36,-38.92],[-24.32,-32.44],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-26.44,-35.26],[12.35,-42.3],[0,0],[-37.96,14.26],[-11.36,38.92],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:13,s:[{v:[[-121.24,70],[-121.23,-70.03],[.06,-140],[.05,-128.8],[-111.53,-64.42],[-111.54,64.4],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70]],i:[[0,0],[-25.02,43.32],[-50.03,-.02],[0,0],[23.02,-39.85],[-23.01,-39.86],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-25.01,-43.33],[25.02,-43.32],[0,0],[-46.03,-.02],[-23.02,39.85],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:14,s:[{v:[[-128.71,55.08],[-101.28,-96.66],[49.02,-131.14],[45.1,-120.64],[-93.17,-88.93],[-118.41,50.68],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08]],i:[[0,0],[-38.69,40.53],[-52.49,-19.62],[0,0],[35.59,-37.29],[-20.28,-47.39],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-22.05,-51.51],[38.69,-40.53],[0,0],[-48.29,-18.05],[-35.59,37.29],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:15,s:[{v:[[-134.26,39.69],[-76.13,-117.49],[91.09,-106.31],[83.8,-97.81],[-70.04,-108.09],[-123.52,36.52],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69]],i:[[0,0],[-52.06,33.73],[-47.11,-40.36],[0,0],[47.9,-31.03],[-16.18,-54.73],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-17.59,-59.49],[52.06,-33.73],[0,0],[-43.34,-37.13],[-47.9,31.03],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:16,s:[{v:[[-137.9,24.17],[-47.6,-131.66],[121.47,-69.6],[111.75,-64.03],[-43.79,-121.13],[-126.87,22.23],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17]],i:[[0,0],[-63.95,23.12],[-33.81,-59],[0,0],[58.83,-21.27],[-10.8,-61.62],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-11.74,-66.98],[63.95,-23.12],[0,0],[-31.1,-54.28],[-58.83,21.27],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:17,s:[{v:[[-139.72,8.91],[-17.8,-138.86],[137.45,-26.61],[126.45,-24.48],[-16.37,-127.75],[-128.54,8.2],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91]],i:[[0,0],[-73.26,9.39],[-14.04,-72.51],[0,0],[67.4,-8.64],[-4.33,-67.81],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-4.7,-73.71],[73.26,-9.39],[0,0],[-12.92,-66.71],[-67.4,8.64],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:18,s:[{v:[[-139.88,-5.86],[-61.38,-125.83],[81.48,-113.85],[138.9,17.52],[127.79,16.12],[74.96,-104.74],[-56.47,-115.76],[-128.69,-5.39],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86]],i:[[0,0],[-46.21,22.54],[-41.81,-29.92],[6.43,-51.01],[0,0],[38.46,27.53],[42.51,-20.74],[1.98,-47.26],[0,0],[0,0],[0,0]],o:[[2.15,-51.37],[46.21,-22.54],[41.81,29.92],[0,0],[5.92,-46.93],[-38.46,-27.53],[-42.51,20.74],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:19,s:[{v:[[-138.58,-19.9],[-39.49,-134.32],[105.77,-91.73],[127.38,58.09],[117.19,53.44],[97.3,-84.39],[-36.33,-123.57],[-127.49,-18.3],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9]],i:[[0,0],[-52.58,15.46],[-35.91,-41.4],[22.74,-49.86],[0,0],[33.03,38.09],[48.37,-14.22],[7.17,-49.91],[0,0],[0,0],[0,0]],o:[[7.79,-54.25],[52.58,-15.46],[35.91,41.4],[0,0],[20.92,-45.88],[-33.03,-38.09],[-48.37,14.22],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:20,s:[{v:[[-136.04,-33.06],[-17.62,-138.89],[123.47,-65.99],[105.68,91.82],[97.23,84.47],[113.59,-60.71],[-16.21,-127.78],[-125.16,-30.42],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06]],i:[[0,0],[-57.6,7.31],[-27.37,-51.2],[38.08,-43.83],[0,0],[25.18,47.11],[52.99,-6.72],[12.61,-51.9],[0,0],[0,0],[0,0]],o:[[13.71,-56.42],[57.6,-7.31],[27.37,51.2],[0,0],[35.03,-40.32],[-25.18,-47.11],[-52.99,6.72],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:21,s:[{v:[[-132.48,-45.26],[3.51,-139.96],[134.58,-38.56],[77.09,116.86],[70.92,107.51],[123.82,-35.48],[3.23,-128.76],[-121.88,-41.64],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26]],i:[[0,0],[-61.15,-1.53],[-16.85,-58.8],[51.06,-33.68],[0,0],[15.5,54.1],[56.26,1.41],[18.19,-53.26],[0,0],[0,0],[0,0]],o:[[19.77,-57.89],[61.15,1.53],[16.85,58.8],[0,0],[46.98,-30.99],[-15.5,-54.1],[-56.26,-1.41],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:22,s:[{v:[[-128.1,-56.47],[23.48,-138.02],[139.57,-10.94],[44.7,132.67],[41.12,122.06],[128.41,-10.07],[21.6,-126.98],[-117.86,-51.96],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47]],i:[[0,0],[-63.24,-10.76],[-5.01,-63.95],[60.79,-20.48],[0,0],[4.61,58.84],[58.18,9.9],[23.81,-54],[0,0],[0,0],[0,0]],o:[[25.88,-58.7],[63.24,10.76],[5.01,63.95],[0,0],[55.93,-18.84],[-4.61,-58.84],[-58.18,-9.9],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:23,s:[{v:[[-123.08,-66.72],[41.94,-133.57],[139.13,15.62],[11.29,139.54],[10.38,128.38],[128,14.37],[38.59,-122.88],[-113.23,-61.38],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72]],i:[[0,0],[-63.92,-20.07],[7.47,-66.58],[66.78,-5.4],[0,0],[-6.87,61.25],[58.8,18.46],[29.37,-54.19],[0,0],[0,0],[0,0]],o:[[31.93,-58.9],[63.92,20.07],[-7.47,66.58],[0,0],[61.43,-4.97],[6.87,-61.25],[-58.8,-18.46],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:24,s:[{v:[[-117.6,-75.96],[58.63,-127.13],[134.12,40.14],[-20.84,138.44],[-19.17,127.37],[123.39,36.93],[53.94,-116.96],[-108.19,-69.89],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96]],i:[[0,0],[-63.29,-29.19],[19.98,-66.77],[68.92,10.37],[0,0],[-18.38,61.43],[58.23,26.86],[34.79,-53.86],[0,0],[0,0],[0,0]],o:[[37.82,-58.55],[63.29,29.19],[-19.98,66.77],[0,0],[63.41,9.54],[18.38,-61.43],[-58.23,-26.86],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:25,s:[{v:[[-111.79,-84.27],[73.53,-119.14],[125.45,62.15],[-50.23,130.68],[-46.21,120.22],[115.41,57.18],[67.65,-109.61],[-102.85,-77.53],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27]],i:[[0,0],[-61.51,-37.96],[32.09,-64.77],[67.47,25.93],[0,0],[-29.52,59.59],[56.59,34.93],[40.03,-53.1],[0,0],[0,0],[0,0]],o:[[43.51,-57.72],[61.51,37.96],[-32.09,64.77],[0,0],[62.07,23.86],[29.52,-59.59],[-56.59,-34.93],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:26,s:[{v:[[-105.79,-91.7],[86.59,-110.01],[113.98,81.29],[-75.81,117.7],[-69.74,108.28],[104.86,74.79],[79.67,-101.21],[-97.32,-84.36],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7]],i:[[0,0],[-58.73,-46.23],[43.4,-60.85],[62.84,40.47],[0,0],[-39.93,55.99],[54.03,42.53],[45.04,-51.96],[0,0],[0,0],[0,0]],o:[[48.96,-56.48],[58.73,46.23],[-43.4,60.85],[0,0],[57.81,37.23],[39.93,-55.99],[-54.03,-42.53],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:27,s:[{v:[[-99.67,-98.32],[97.88,-100.1],[100.53,97.44],[-97,100.96],[-89.24,92.88],[92.49,89.64],[90.05,-92.09],[-91.69,-90.45],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32]],i:[[0,0],[-55.11,-53.89],[53.65,-55.35],[55.58,53.4],[0,0],[-49.35,50.92],[50.7,49.58],[49.8,-50.48],[0,0],[0,0],[0,0]],o:[[54.13,-54.87],[55.11,53.89],[-53.65,55.35],[0,0],[51.14,49.13],[49.35,-50.92],[-50.7,-49.58],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:28,s:[{v:[[-93.51,-104.19],[63.86,-124.59],[139.18,15.09],[35.68,135.38],[-113.67,81.73],[-104.57,75.19],[32.83,124.55],[128.05,13.88],[58.75,-114.62],[-86.03,-95.85],[-93.51,-104.19]],i:[[0,0],[-51.62,-26.46],[6.25,-57.67],[56.09,-14.78],[33.86,47.09],[0,0],[-51.6,13.6],[-5.75,53.05],[47.49,24.34],[39.71,-35.65],[0,0]],o:[[43.17,-38.74],[51.62,26.46],[-6.25,57.67],[-56.09,14.78],[0,0],[31.15,43.33],[51.6,-13.6],[5.75,-53.05],[-47.49,-24.34],[0,0],[0,0]]}],h:1},{t:29,s:[{v:[[-87.42,-109.35],[74.27,-118.68],[136.57,30.81],[16.11,139.07],[-125.9,61.22],[-115.83,56.32],[14.82,127.94],[125.64,28.35],[68.32,-109.18],[-80.43,-100.6],[-87.42,-109.35]],i:[[0,0],[-50.41,-31.54],[13.09,-58],[59.07,-6.84],[26,53.48],[0,0],[-54.34,6.3],[-12.04,53.36],[46.37,29.02],[42.73,-34.16],[0,0]],o:[[46.45,-37.13],[50.41,31.54],[-13.09,58],[-59.07,6.84],[0,0],[23.92,49.2],[54.34,-6.3],[12.04,-53.36],[-46.37,-29.02],[0,0],[0,0]]}],h:1},{t:30,s:[{v:[[-81.44,-113.88],[83.56,-112.33],[132.48,45.26],[-2.63,139.98],[-134.09,40.24],[-123.36,37.02],[-2.42,128.78],[121.88,41.64],[76.88,-103.34],[-74.92,-104.77],[-81.44,-113.88]],i:[[0,0],[-48.82,-36.32],[19.67,-57.58],[60.84,1.14],[17.49,58.28],[0,0],[-55.97,-1.05],[-18.1,52.97],[44.91,33.41],[45.53,-32.56],[0,0]],o:[[49.49,-35.39],[48.82,36.32],[-19.67,57.58],[-60.84,-1.14],[0,0],[16.09,53.62],[55.97,1.05],[18.1,-52.97],[-44.91,-33.41],[0,0],[0,0]]}],h:1},{t:31,s:[{v:[[-75.59,-117.84],[91.82,-105.68],[127.24,58.39],[-20.25,138.53],[-138.63,19.53],[-127.54,17.97],[-18.63,127.45],[117.06,53.72],[84.47,-97.23],[-69.55,-108.41],[-75.59,-117.84]],i:[[0,0],[-46.92,-40.76],[25.92,-56.49],[61.5,8.99],[8.67,61.55],[0,0],[-56.58,-8.27],[-23.85,51.97],[43.17,37.5],[48.13,-30.88],[0,0]],o:[[52.32,-33.56],[46.92,40.76],[-25.92,56.49],[-61.5,-8.99],[0,0],[7.98,56.62],[56.58,8.27],[23.85,-51.97],[-43.17,-37.5],[0,0],[0,0]]}],h:1},{t:32,s:[{v:[[-69.92,-121.29],[99.11,-98.88],[121.14,70.19],[-36.5,135.16],[-140,-.33],[-128.8,-.31],[-33.58,124.35],[111.45,64.57],[91.18,-90.97],[-64.32,-111.59],[-69.92,-121.29]],i:[[0,0],[-44.77,-44.87],[31.78,-54.85],[61.19,16.53],[-.15,63.39],[0,0],[-56.3,-15.2],[-29.24,50.46],[41.19,41.28],[50.52,-29.12],[0,0]],o:[[54.92,-31.65],[44.77,44.87],[-31.78,54.85],[-61.19,-16.53],[0,0],[-.14,58.32],[56.3,15.2],[29.24,-50.46],[-41.19,-41.28],[0,0],[0,0]]}],h:1},{t:33,s:[{v:[[-64.43,-124.29],[105.5,-92.03],[114.39,80.71],[-51.32,130.25],[-138.7,-19.02],[-127.61,-17.5],[-47.22,119.83],[105.24,74.25],[97.06,-84.67],[-59.27,-114.35],[-64.43,-124.29]],i:[[0,0],[-42.43,-48.64],[37.21,-52.74],[60.06,23.66],[-8.77,63.95],[0,0],[-55.25,-21.77],[-34.24,48.52],[39.04,44.75],[52.72,-27.33],[0,0]],o:[[57.31,-29.71],[42.43,48.64],[-37.21,52.74],[-60.06,-23.66],[0,0],[-8.07,58.84],[55.25,21.77],[34.24,-48.52],[-39.04,-44.75],[0,0],[0,0]]}],h:1},{t:34,s:[{v:[[-59.19,-126.87],[111.05,-85.25],[107.27,89.97],[-64.62,124.2],[-135.24,-36.2],[-124.42,-33.31],[-59.45,114.26],[98.68,82.77],[102.17,-78.43],[-54.45,-116.72],[-59.19,-126.87]],i:[[0,0],[-39.97,-52.07],[42.18,-50.29],[58.23,30.3],[-16.97,63.41],[0,0],[-53.57,-27.87],[-38.81,46.27],[36.77,47.9],[54.73,-25.53],[0,0]],o:[[59.49,-27.75],[39.97,52.07],[-42.18,50.29],[-58.23,-30.3],[0,0],[-15.62,58.34],[53.57,27.87],[38.81,-46.27],[-36.77,-47.9],[0,0],[0,0]]}],h:1},{t:35,s:[{v:[[-54.16,-129.1],[115.87,-78.58],[99.91,98.07],[-76.42,117.3],[-130.08,-51.76],[-119.67,-47.62],[-70.31,107.92],[91.91,90.23],[106.6,-72.29],[-49.83,-118.77],[-54.16,-129.1]],i:[[0,0],[-37.42,-55.17],[46.7,-47.57],[55.86,36.39],[-24.65,61.94],[0,0],[-51.39,-33.48],[-42.97,43.77],[34.43,50.76],[56.56,-23.73],[0,0]],o:[[61.48,-25.79],[37.42,55.17],[-46.7,47.57],[-55.86,-36.39],[0,0],[-22.68,56.99],[51.39,33.48],[42.97,-43.77],[-34.43,-50.76],[0,0],[0,0]]}],h:1},{t:36,s:[{v:[[-49.4,-131],[120.01,-72.09],[92.44,105.14],[-86.85,109.8],[-123.6,-65.75],[-113.71,-60.49],[-79.91,101.02],[85.05,96.73],[110.41,-66.32],[-45.44,-120.52],[-49.4,-131]],i:[[0,0],[-34.83,-57.98],[50.79,-44.66],[53.05,41.96],[-31.77,59.71],[0,0],[-48.8,-38.6],[-46.73,41.09],[32.04,53.34],[58.22,-21.95],[0,0]],o:[[63.29,-23.86],[34.83,57.98],[-50.79,44.66],[-53.05,-41.96],[0,0],[-29.22,54.93],[48.8,38.6],[46.73,-41.09],[-32.04,-53.34],[0,0],[0,0]]}],h:1},{t:37,s:[{v:[[-44.86,-132.62],[123.58,-65.8],[84.98,111.26],[-95.99,101.91],[-116.14,-78.17],[-106.85,-71.92],[-88.31,93.76],[78.18,102.36],[113.69,-60.53],[-41.27,-122.01],[-44.86,-132.62]],i:[[0,0],[-32.22,-60.51],[54.47,-41.61],[49.9,47],[-38.27,56.87],[0,0],[-45.91,-43.24],[-50.12,38.28],[29.64,55.67],[59.74,-20.21],[0,0]],o:[[64.93,-21.97],[32.22,60.51],[-54.47,41.61],[-49.9,-47],[0,0],[-35.21,52.32],[45.91,43.24],[50.12,-38.28],[-29.64,-55.67],[0,0],[0,0]]}],h:1},{t:38,s:[{v:[[-40.58,-133.99],[126.6,-59.77],[77.67,116.48],[-103.84,93.9],[-108.1,-88.96],[-99.45,-81.85],[-95.53,86.39],[71.46,107.16],[116.47,-54.99],[-37.33,-123.27],[-40.58,-133.99]],i:[[0,0],[-29.63,-62.76],[57.74,-38.5],[46.55,51.47],[-44.1,53.58],[0,0],[-42.82,-47.36],[-53.12,35.42],[27.26,57.73],[61.11,-18.51],[0,0]],o:[[66.42,-20.12],[29.63,62.76],[-57.74,38.5],[-46.55,-51.47],[0,0],[-40.57,49.3],[42.82,47.36],[53.12,-35.42],[-27.26,-57.73],[0,0],[0,0]]}],h:1},{t:39,s:[{v:[[-36.54,-135.15],[129.16,-54.02],[70.57,120.91],[-110.57,85.88],[-99.69,-98.29],[-91.72,-90.43],[-101.72,79.01],[64.92,111.24],[118.82,-49.7],[-33.62,-124.34],[-36.54,-135.15]],i:[[0,0],[-27.09,-64.76],[60.62,-35.38],[43.06,55.43],[-49.28,49.98],[0,0],[-39.61,-51],[-55.77,32.55],[24.92,59.58],[62.34,-16.86],[0,0]],o:[[67.76,-18.32],[27.09,64.76],[-60.62,35.38],[-43.06,-55.43],[0,0],[-45.34,45.99],[39.61,51],[55.77,-32.55],[-24.92,-59.58],[0,0],[0,0]]}],h:1},{t:40,s:[{v:[[-32.75,-136.11],[131.31,-48.57],[63.7,124.67],[-116.29,77.95],[-91.11,-106.29],[-83.82,-97.79],[-106.99,71.71],[58.61,114.69],[120.8,-44.68],[-30.13,-125.23],[-32.75,-136.11]],i:[[0,0],[-24.61,-66.53],[63.17,-32.28],[39.5,58.92],[-53.86,46.17],[0,0],[-36.34,-54.21],[-58.12,29.7],[22.64,61.21],[63.45,-15.27],[0,0]],o:[[68.97,-16.6],[24.61,66.53],[-63.17,32.28],[-39.5,-58.92],[0,0],[-49.55,42.47],[36.34,54.21],[58.12,-29.7],[-22.64,-61.21],[0,0],[0,0]]}],h:1},{t:41,s:[{v:[[-29.2,-136.92],[133.1,-43.4],[57.13,127.81],[-121.12,70.22],[-82.53,-113.08],[-75.93,-104.04],[-111.43,64.6],[52.56,117.59],[122.45,-39.93],[-26.87,-125.97],[-29.2,-136.92]],i:[[0,0],[-22.21,-68.11],[65.4,-29.23],[35.93,61.97],[-57.86,42.23],[0,0],[-33.05,-57.02],[-60.17,26.89],[20.43,62.66],[64.45,-13.75],[0,0]],o:[[70.06,-14.94],[22.21,68.11],[-65.4,29.23],[-35.93,-61.97],[0,0],[-53.23,38.85],[33.05,57.02],[60.17,-26.89],[-20.43,-62.66],[0,0],[0,0]]}],h:1},{t:42,s:[{v:[[-25.9,-137.58],[134.58,-38.56],[50.89,130.42],[-125.13,62.78],[-74.13,-118.76],[-68.2,-109.26],[-115.12,57.76],[46.82,119.99],[123.82,-35.48],[-23.83,-126.58],[-25.9,-137.58]],i:[[0,0],[-19.91,-69.49],[67.34,-26.28],[32.42,64.61],[-61.32,38.27],[0,0],[-29.82,-59.44],[-61.95,24.17],[18.32,63.93],[65.35,-12.3],[0,0]],o:[[71.04,-13.37],[19.91,69.49],[-67.34,26.28],[-32.42,-64.61],[0,0],[-56.41,35.21],[29.82,59.44],[61.95,-24.17],[-18.32,-63.93],[0,0],[0,0]]}],h:1},{t:43,s:[{v:[[-22.82,-138.13],[135.8,-34.03],[45.02,132.56],[-128.44,55.71],[-66.02,-123.46],[-60.74,-113.58],[-118.16,51.25],[41.42,121.96],[124.94,-31.31],[-20.99,-127.08],[-22.82,-138.13]],i:[[0,0],[-17.72,-70.7],[69.01,-23.44],[29,66.86],[-64.27,34.37],[0,0],[-26.68,-61.52],[-63.49,21.56],[16.3,65.04],[66.16,-10.93],[0,0]],o:[[71.91,-11.88],[17.72,70.7],[-69.01,23.44],[-29,-66.86],[0,0],[-59.13,31.62],[26.68,61.52],[63.49,-21.56],[-16.3,-65.04],[0,0],[0,0]]}],h:1},{t:44,s:[{v:[[-19.97,-138.57],[136.78,-29.83],[39.55,134.3],[-131.12,49.06],[-58.31,-127.28],[-53.65,-117.09],[-120.63,45.13],[36.38,123.55],[125.84,-27.45],[-18.37,-127.48],[-19.97,-138.57]],i:[[0,0],[-15.65,-71.75],[70.44,-20.74],[25.73,68.78],[-66.76,30.59],[0,0],[-23.67,-63.27],[-64.81,19.08],[14.4,66.01],[66.87,-9.64],[0,0]],o:[[72.68,-10.47],[15.65,71.75],[-70.44,20.74],[-25.73,-68.78],[0,0],[-61.42,28.14],[23.67,63.27],[64.81,-19.08],[-14.4,-66.01],[0,0],[0,0]]}],h:1},{t:45,s:[{v:[[-17.35,-138.92],[137.58,-25.93],[34.41,135.7],[-133.31,42.76],[-50.95,-130.4],[-46.87,-119.97],[-122.64,39.34],[31.66,124.85],[126.57,-23.86],[-15.96,-127.81],[-17.35,-138.92]],i:[[0,0],[-13.7,-72.67],[71.68,-18.18],[22.59,70.41],[-68.88,26.91],[0,0],[-20.78,-64.78],[-65.95,16.72],[12.6,66.86],[67.51,-8.43],[0,0]],o:[[73.38,-9.17],[13.7,72.67],[-71.68,18.18],[-22.59,-70.41],[0,0],[-63.37,24.76],[20.78,64.78],[65.95,-16.72],[-12.6,-66.86],[0,0],[0,0]]}],h:1},{t:46,s:[{v:[[-14.93,-139.2],[138.21,-22.34],[29.68,136.82],[-135.04,36.94],[-44.1,-132.87],[-40.57,-122.24],[-124.23,33.99],[27.31,125.87],[127.15,-20.55],[-13.73,-128.07],[-14.93,-139.2]],i:[[0,0],[-11.87,-73.46],[72.72,-15.78],[19.64,71.78],[-70.63,23.44],[0,0],[-18.07,-66.04],[-66.91,14.51],[10.92,67.59],[68.07,-7.3],[0,0]],o:[[73.99,-7.93],[11.87,73.46],[-72.72,15.78],[-19.64,-71.78],[0,0],[-64.98,21.56],[18.07,66.04],[66.91,-14.51],[-10.92,-67.59],[0,0],[0,0]]}],h:1},{t:47,s:[{v:[[-12.71,-139.42],[138.7,-19.05],[25.34,137.69],[-136.39,31.59],[-37.77,-134.81],[-34.75,-124.03],[-125.48,29.06],[23.32,126.67],[127.6,-17.52],[-11.7,-128.27],[-12.71,-139.42]],i:[[0,0],[-10.18,-74.14],[73.6,-13.55],[16.89,72.91],[-72.07,20.19],[0,0],[-15.54,-67.08],[-67.72,12.46],[9.37,68.21],[68.57,-6.25],[0,0]],o:[[74.53,-6.8],[10.18,74.14],[-73.6,13.55],[-16.89,-72.91],[0,0],[-66.3,18.57],[15.54,67.08],[67.72,-12.46],[-9.37,-68.21],[0,0],[0,0]]}],h:1},{t:48,s:[{v:[[-10.72,-139.59],[139.08,-16.06],[21.37,138.36],[-137.44,26.66],[-31.91,-136.32],[-29.35,-125.41],[-126.44,24.53],[19.66,127.29],[127.95,-14.77],[-9.86,-128.42],[-10.72,-139.59]],i:[[0,0],[-8.63,-74.74],[74.35,-11.49],[14.33,73.86],[-73.25,17.15],[0,0],[-13.18,-67.95],[-68.4,10.57],[7.94,68.76],[69.01,-5.3],[0,0]],o:[[75.01,-5.76],[8.63,74.74],[-74.35,11.49],[-14.33,-73.86],[0,0],[-67.39,15.77],[13.18,67.95],[68.4,-10.57],[-7.94,-68.76],[0,0],[0,0]]}],h:1},{t:49,s:[{v:[[-8.89,-139.72],[139.37,-13.32],[17.73,138.87],[-138.24,22.13],[-26.5,-137.47],[-24.38,-126.47],[-127.18,20.36],[16.31,127.76],[128.22,-12.25],[-8.18,-128.54],[-8.89,-139.72]],i:[[0,0],[-7.19,-75.25],[74.98,-9.57],[11.95,74.64],[-74.22,14.31],[0,0],[-10.99,-68.67],[-68.98,8.81],[6.61,69.23],[69.4,-4.42],[0,0]],o:[[75.44,-4.8],[7.19,75.25],[-74.98,9.57],[-11.95,-74.64],[0,0],[-68.29,13.16],[10.99,68.67],[68.98,-8.81],[-6.61,-69.23],[0,0],[0,0]]}],h:1},{t:50,s:[{v:[[-7.25,-139.81],[139.58,-10.87],[14.49,139.25],[-138.83,18.09],[-21.68,-138.31],[-19.95,-127.25],[-127.72,16.64],[13.33,128.11],[128.41,-10],[-6.67,-128.63],[-7.25,-139.81]],i:[[0,0],[-5.9,-75.68],[75.5,-7.86],[9.81,75.27],[-74.99,11.76],[0,0],[-9.02,-69.25],[-69.46,7.23],[5.42,69.62],[69.74,-3.62],[0,0]],o:[[75.8,-3.93],[5.9,75.68],[-75.5,7.86],[-9.81,-75.27],[0,0],[-68.99,10.82],[9.02,69.25],[69.46,-7.23],[-5.42,-69.62],[0,0],[0,0]]}],h:1},{t:51,s:[{v:[[-5.81,-139.88],[139.73,-8.71],[11.61,139.52],[-139.25,14.5],[-17.38,-138.92],[-15.99,-127.8],[-128.11,13.34],[10.68,128.36],[128.55,-8.02],[-5.35,-128.69],[-5.81,-139.88]],i:[[0,0],[-4.74,-76.04],[75.93,-6.32],[7.89,75.78],[-75.6,9.46],[0,0],[-7.26,-69.72],[-69.85,5.81],[4.36,69.96],[70.03,-2.91],[0,0]],o:[[76.12,-3.16],[4.74,76.04],[-75.93,6.32],[-7.89,-75.78],[0,0],[-69.55,8.7],[7.26,69.72],[69.85,-5.81],[-4.36,-69.96],[0,0],[0,0]]}],h:1},{t:52,s:[{v:[[-4.54,-139.93],[139.83,-6.81],[9.07,139.71],[-139.54,11.33],[-13.58,-139.34],[-12.5,-128.19],[-128.38,10.42],[8.34,128.53],[128.65,-6.26],[-4.18,-128.73],[-4.54,-139.93]],i:[[0,0],[-3.72,-76.35],[76.28,-4.95],[6.18,76.19],[-76.08,7.42],[0,0],[-5.69,-70.09],[-70.17,4.56],[3.42,70.24],[70.28,-2.28],[0,0]],o:[[76.4,-2.48],[3.72,76.35],[-76.28,4.95],[-6.18,-76.19],[0,0],[-69.99,6.82],[5.69,70.09],[70.17,-4.56],[-3.42,-70.24],[0,0],[0,0]]}],h:1},{t:53,s:[{v:[[-3.44,-139.96],[139.9,-5.16],[6.87,139.83],[-139.74,8.59],[-10.3,-139.62],[-9.47,-128.45],[-128.56,7.9],[6.32,128.64],[128.71,-4.75],[-3.17,-128.76],[-3.44,-139.96]],i:[[0,0],[-2.82,-76.6],[76.56,-3.76],[4.7,76.51],[-76.44,5.64],[0,0],[-4.32,-70.39],[-70.43,3.46],[2.6,70.47],[70.5,-1.74],[0,0]],o:[[76.63,-1.89],[2.82,76.6],[-76.56,3.76],[-4.7,-76.51],[0,0],[-70.33,5.19],[4.32,70.39],[70.43,-3.46],[-2.6,-70.47],[0,0],[0,0]]}],h:1},{t:54,s:[{v:[[-2.49,-139.98],[139.95,-3.75],[5,139.91],[-139.86,6.25],[-7.5,-139.8],[-6.9,-128.61],[-128.67,5.75],[4.6,128.72],[128.75,-3.45],[-2.29,-128.78],[-2.49,-139.98]],i:[[0,0],[-2.06,-76.8],[76.78,-2.74],[3.43,76.75],[-76.72,4.12],[0,0],[-3.16,-70.61],[-70.64,2.52],[1.89,70.66],[70.67,-1.26],[0,0]],o:[[76.82,-1.37],[2.06,76.8],[-76.78,2.74],[-3.43,-76.75],[0,0],[-70.58,3.79],[3.16,70.61],[70.64,-2.52],[-1.89,-70.66],[0,0],[0,0]]}],h:1},{t:55,s:[{v:[[-1.71,-139.99],[139.98,-2.57],[3.43,139.96],[-139.93,4.28],[-5.14,-139.91],[-4.73,-128.71],[-128.74,3.94],[3.15,128.76],[128.78,-2.36],[-1.57,-128.79],[-1.71,-139.99]],i:[[0,0],[-1.41,-76.97],[76.96,-1.88],[2.36,76.95],[-76.93,2.83],[0,0],[-2.17,-70.79],[-70.81,1.73],[1.3,70.81],[70.82,-.87],[0,0]],o:[[76.98,-.94],[1.41,76.97],[-76.96,1.88],[-2.36,-76.95],[0,0],[-70.78,2.6],[2.17,70.79],[70.81,-1.73],[-1.3,-70.81],[0,0],[0,0]]}],h:1},{t:56,s:[{v:[[-1.08,-140],[139.99,-1.62],[2.17,139.98],[-139.97,2.72],[-3.27,-139.96],[-3.01,-128.76],[-128.78,2.51],[2,128.78],[128.79,-1.49],[-.99,-128.8],[-1.08,-140]],i:[[0,0],[-.89,-77.1],[77.1,-1.2],[1.5,77.09],[-77.08,1.8],[0,0],[-1.38,-70.92],[-70.93,1.1],[.82,70.93],[70.93,-.54],[0,0]],o:[[77.1,-.59],[.89,77.1],[-77.1,1.2],[-1.5,-77.09],[0,0],[-70.92,1.66],[1.38,70.92],[70.93,-1.1],[-.82,-70.93],[0,0],[0,0]]}],h:1},{t:57,s:[{v:[[-.61,-140],[140,-.92],[1.23,139.99],[-139.99,1.53],[-1.84,-139.99],[-1.69,-128.79],[-128.79,1.41],[1.13,128.8],[128.8,-.85],[-.56,-128.8],[-.61,-140]],i:[[0,0],[-.51,-77.2],[77.2,-.68],[.85,77.2],[-77.19,1.02],[0,0],[-.78,-71.02],[-71.02,.62],[.47,71.02],[71.02,-.31],[0,0]],o:[[77.2,-.34],[.51,77.2],[-77.2,.68],[-.85,-77.2],[0,0],[-71.02,.93],[.78,71.02],[71.02,-.62],[-.47,-71.02],[0,0],[0,0]]}],h:1},{t:58,s:[{v:[[-.27,-140],[140,-.4],[.53,140],[-140,.67],[-.8,-140],[-.27,-140],[-.27,-140],[-.27,-140],[-.27,-140],[-.27,-140],[-.27,-140]],i:[[0,0],[-.22,-77.27],[77.27,-.29],[.37,77.27],[-77.27,.44],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[77.27,-.15],[.22,77.27],[-77.27,.29],[-.37,-77.27],[0,0],[-.53,0],[-.53,0],[-.53,0],[-.53,0],[-.53,0],[-.53,0]]}],h:1},{t:59,s:[{v:[[-.07,-140],[140,-.1],[.12,140],[-140,.14],[-.16,-140],[-.07,-140],[-.07,-140],[-.07,-140],[-.07,-140],[-.07,-140],[-.07,-140]],i:[[0,0],[-.05,-77.31],[77.31,-.07],[.08,77.31],[-77.31,.09],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[77.31,-.04],[.05,77.31],[-77.31,.07],[-.08,-77.31],[0,0],[-.09,0],[-.09,0],[-.09,0],[-.09,0],[-.09,0],[-.09,0]]}],h:1},{t:60,s:[{v:[[0,-140],[140,0],[0,140],[-140,0],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140]],i:[[0,0],[0,-77.32],[77.32,0],[0,77.32],[-77.32,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[77.32,0],[0,77.32],[-77.32,0],[0,-77.32],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:96,s:[{v:[[0,-140],[140,0],[0,140],[-140,0],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140],[0,-140]],i:[[0,0],[0,-77.32],[77.32,0],[0,77.32],[-77.32,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[77.32,0],[0,77.32],[-77.32,0],[0,-77.32],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:97,s:[{v:[[.05,-140],[140,.05],[-.05,140],[-140,-.05],[.05,-140],[.05,-140],[.05,-140],[.05,-140],[.05,-140],[.05,-140],[.05,-140]],i:[[0,0],[.03,-77.32],[77.32,.03],[-.03,77.32],[-77.32,-.03],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[77.32,.03],[-.03,77.32],[-77.32,-.03],[.03,-77.32],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:98,s:[{v:[[.32,-140],[140,.25],[-.18,140],[-140,-.12],[.05,-140],[.32,-140],[.32,-140],[.32,-140],[.32,-140],[.32,-140],[.32,-140]],i:[[0,0],[.14,-77.29],[77.29,.1],[-.07,77.29],[-77.29,-.03],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[77.29,.18],[-.14,77.29],[-77.29,-.1],[.07,-77.29],[0,0],[-.27,0],[-.27,0],[-.27,0],[-.27,0],[-.27,0],[-.27,0]]}],h:1},{t:99,s:[{v:[[1.1,-140],[140,.88],[-.66,140],[-140,-.44],[.22,-140],[1.1,-140],[1.1,-140],[1.1,-140],[1.1,-140],[1.1,-140],[1.1,-140]],i:[[0,0],[.48,-77.23],[77.23,.36],[-.24,77.23],[-77.23,-.12],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[77.23,.61],[-.48,77.23],[-77.23,-.36],[.24,-77.23],[0,0],[-.88,0],[-.88,0],[-.88,0],[-.88,0],[-.88,0],[-.88,0]]}],h:1},{t:100,s:[{v:[[2.61,-139.98],[139.98,2.09],[-1.56,139.99],[-140,-1.03],[.5,-140],[.46,-128.8],[-128.8,-.95],[-1.43,128.79],[128.79,1.92],[2.41,-128.78],[2.61,-139.98]],i:[[0,0],[1.15,-77.11],[77.11,.86],[-.57,77.11],[-77.11,-.28],[0,0],[.52,-70.94],[-70.94,-.79],[-1.06,70.94],[70.93,1.32],[0,0]],o:[[77.1,1.44],[-1.15,77.11],[-77.11,-.86],[.57,-77.11],[0,0],[-70.94,-.26],[-.52,70.94],[70.94,.79],[1.06,-70.94],[0,0],[0,0]]}],h:1},{t:101,s:[{v:[[5.08,-139.91],[139.94,4.07],[-3.06,139.97],[-139.99,-2.05],[1.04,-140],[.95,-128.8],[-128.79,-1.88],[-2.81,128.77],[128.75,3.74],[4.67,-128.72],[5.08,-139.91]],i:[[0,0],[2.24,-76.89],[76.91,1.68],[-1.13,76.92],[-76.92,-.57],[0,0],[1.04,-70.76],[-70.75,-1.55],[-2.06,70.74],[70.72,2.57],[0,0]],o:[[76.87,2.79],[-2.24,76.89],[-76.91,-1.68],[1.13,-76.92],[0,0],[-70.77,-.52],[-1.04,70.76],[70.75,1.55],[2.06,-70.74],[0,0],[0,0]]}],h:1},{t:102,s:[{v:[[8.79,-139.72],[139.82,7.03],[-5.28,139.9],[-139.96,-3.52],[1.76,-139.99],[1.62,-128.79],[-128.76,-3.24],[-4.85,128.71],[128.64,6.47],[8.09,-128.55],[8.79,-139.72]],i:[[0,0],[3.85,-76.54],[76.58,2.89],[-1.93,76.61],[-76.63,-.96],[0,0],[1.77,-70.48],[-70.45,-2.66],[-3.54,70.41],[70.36,4.43],[0,0]],o:[[76.48,4.81],[-3.85,76.54],[-76.58,-2.89],[1.93,-76.61],[0,0],[-70.5,-.89],[-1.77,70.48],[70.45,2.66],[3.54,-70.41],[0,0],[0,0]]}],h:1},{t:103,s:[{v:[[13.95,-139.3],[139.55,11.17],[-8.39,139.75],[-139.89,-5.6],[2.8,-139.97],[2.58,-128.77],[-128.7,-5.15],[-7.71,128.57],[128.39,10.28],[12.84,-128.16],[13.95,-139.3]],i:[[0,0],[6.08,-75.99],[76.09,4.57],[-3.05,76.17],[-76.22,-1.53],[0,0],[2.8,-70.08],[-70.01,-4.2],[-5.6,69.91],[69.78,6.99],[0,0]],o:[[75.85,7.6],[-6.08,75.99],[-76.09,-4.57],[3.05,-76.17],[0,0],[-70.12,-1.41],[-2.8,70.08],[70.01,4.2],[5.6,-69.91],[0,0],[0,0]]}],h:1},{t:104,s:[{v:[[20.77,-138.45],[139.01,16.63],[-12.47,139.44],[-139.75,-8.3],[4.13,-139.94],[3.8,-128.74],[-128.57,-7.64],[-11.47,128.29],[127.89,15.3],[19.1,-127.38],[20.77,-138.45]],i:[[0,0],[8.99,-75.16],[75.39,6.74],[-4.49,75.56],[-75.66,-2.23],[0,0],[4.13,-69.52],[-69.36,-6.2],[-8.27,69.14],[68.87,10.33],[0,0]],o:[[74.86,11.23],[-8.99,75.16],[-75.39,-6.74],[4.49,-75.56],[0,0],[-69.61,-2.05],[-4.13,69.52],[69.36,6.2],[8.27,-69.14],[0,0],[0,0]]}],h:1},{t:105,s:[{v:[[29.47,-136.86],[137.99,23.64],[-17.76,138.87],[-139.5,-11.86],[5.94,-139.87],[5.46,-128.68],[-128.34,-10.91],[-16.34,127.76],[126.95,21.75],[27.11,-125.91],[29.47,-136.86]],i:[[0,0],[12.66,-73.93],[74.4,9.52],[-6.36,74.74],[-74.94,-3.18],[0,0],[5.85,-68.76],[-68.45,-8.76],[-11.65,68.02],[67.46,14.52],[0,0]],o:[[73.33,15.79],[-12.66,73.93],[-74.4,-9.52],[6.36,-74.74],[0,0],[-68.95,-2.93],[-5.85,68.76],[68.45,8.76],[11.65,-68.02],[0,0],[0,0]]}],h:1},{t:106,s:[{v:[[40.16,-134.12],[136.22,32.3],[-24.33,137.87],[-139.05,-16.29],[8.18,-139.76],[7.53,-128.58],[-127.93,-14.98],[-22.39,126.84],[125.32,29.72],[36.95,-123.39],[40.16,-134.12]],i:[[0,0],[17.11,-72.16],[73.03,12.89],[-8.63,73.66],[-74.03,-4.33],[0,0],[7.94,-67.77],[-67.19,-11.86],[-15.74,66.39],[65.36,19.57],[0,0]],o:[[71.04,21.27],[-17.11,72.16],[-73.03,-12.89],[8.63,-73.66],[0,0],[-68.11,-3.99],[-7.94,67.77],[67.19,11.86],[15.74,-66.39],[0,0],[0,0]]}],h:1},{t:107,s:[{v:[[52.85,-129.64],[133.34,42.66],[-32.22,136.24],[-138.33,-21.58],[10.82,-139.58],[9.95,-128.41],[-127.26,-19.86],[-29.64,125.34],[122.67,39.25],[48.62,-119.27],[52.85,-129.64]],i:[[0,0],[22.28,-69.64],[71.16,16.83],[-11.27,72.24],[-72.9,-5.65],[0,0],[10.37,-66.47],[-65.46,-15.48],[-20.5,64.07],[62.29,25.4],[0,0]],o:[[67.71,27.6],[-22.28,69.64],[-71.16,-16.83],[11.27,-72.24],[0,0],[-67.07,-5.2],[-10.37,66.47],[65.46,15.48],[20.5,-64.07],[0,0],[0,0]]}],h:1},{t:108,s:[{v:[[67.45,-122.68],[128.83,54.79],[-41.59,133.68],[-137.18,-27.96],[14.05,-139.29],[12.93,-128.15],[-126.21,-25.72],[-38.26,122.99],[118.53,50.41],[62.05,-112.87],[67.45,-122.68]],i:[[0,0],[28.13,-66.15],[68.63,21.35],[-14.35,70.43],[-71.52,-7.21],[0,0],[13.21,-64.8],[-63.14,-19.64],[-25.88,60.85],[57.95,31.86],[0,0]],o:[[62.99,34.63],[-28.13,66.15],[-68.63,-21.35],[14.35,-70.43],[0,0],[-65.79,-6.64],[-13.21,64.8],[63.14,19.64],[25.88,-60.85],[0,0],[0,0]]}],h:1},{t:109,s:[{v:[[83.51,-112.37],[122.1,68.5],[-52.37,129.84],[-135.45,-35.39],[17.83,-138.86],[16.4,-127.75],[-124.62,-32.56],[-48.18,119.45],[112.33,63.02],[76.83,-103.38],[83.51,-112.37]],i:[[0,0],[34.46,-61.41],[65.31,26.34],[-17.8,68.13],[-69.84,-8.97],[0,0],[16.38,-62.68],[-60.08,-24.24],[-31.7,56.5],[52,38.64],[0,0]],o:[[56.52,42],[-34.46,61.41],[-65.31,-26.34],[17.8,-68.13],[0,0],[-64.26,-8.25],[-16.38,62.68],[60.08,24.24],[31.7,-56.5],[0,0],[0,0]]}],h:1},{t:110,s:[{v:[[100.25,-97.73],[112.41,83.44],[-64.52,124.25],[-132.92,-43.95],[22.27,-138.22],[20.49,-127.16],[-122.29,-40.44],[-59.36,114.31],[103.42,76.77],[92.23,-89.91],[100.25,-97.73]],i:[[0,0],[40.97,-55.19],[61,31.68],[-21.58,65.26],[-67.86,-10.93],[0,0],[19.85,-60.04],[-56.12,-29.14],[-37.69,50.77],[44.14,45.28],[0,0]],o:[[47.98,49.22],[-40.97,55.19],[-61,-31.68],[21.58,-65.26],[0,0],[-62.43,-10.06],[-19.85,60.04],[56.12,29.14],[37.69,-50.77],[0,0],[0,0]]}],h:1},{t:111,s:[{v:[[116.41,-77.78],[98.99,98.99],[-77.78,116.41],[-129.34,-53.58],[27.31,-137.31],[25.13,-126.33],[-119,-49.29],[-71.56,107.09],[91.08,91.08],[107.09,-71.56],[116.41,-77.78]],i:[[0,0],[47.23,-47.23],[55.53,37.11],[-25.56,61.71],[-65.51,-13.03],[0,0],[23.51,-56.77],[-51.09,-34.14],[-43.45,43.45],[34.14,51.09],[0,0]],o:[[37.11,55.53],[-47.23,47.23],[-55.53,-37.11],[25.56,-61.71],[0,0],[-60.27,-11.99],[-23.51,56.77],[51.09,34.14],[43.45,-43.45],[0,0],[0,0]]}],h:1},{t:112,s:[{v:[[130.05,-51.83],[81.07,114.14],[-91.78,105.72],[-124.39,-64.23],[33.06,-136.04],[30.41,-125.16],[-114.44,-59.1],[-84.44,97.26],[74.58,105.01],[119.65,-47.69],[130.05,-51.83]],i:[[0,0],[52.66,-37.4],[48.77,42.34],[-29.64,57.39],[-62.76,-15.25],[0,0],[27.26,-52.8],[-44.87,-38.96],[-48.45,34.41],[22,55.2],[0,0]],o:[[23.91,60],[-52.66,37.4],[-48.77,-42.34],[29.64,-57.39],[0,0],[-57.74,-14.03],[-27.26,52.8],[44.87,38.96],[48.45,-34.41],[0,0],[0,0]]}],h:1},{t:113,s:[{v:[[138.6,-19.77],[58.06,127.39],[-105.85,91.63],[-117.76,-75.72],[39.43,-134.33],[36.28,-123.58],[-108.34,-69.66],[-97.38,84.3],[53.41,117.2],[127.51,-18.19],[138.6,-19.77]],i:[[0,0],[56.52,-25.76],[40.65,46.96],[-33.59,52.25],[-59.6,-17.5],[0,0],[30.91,-48.07],[-37.4,-43.21],[-52,23.7],[8.07,56.57],[0,0]],o:[[8.77,61.49],[-56.52,25.76],[-40.65,-46.96],[33.59,-52.25],[0,0],[-54.83,-16.1],[-30.91,48.07],[37.4,43.21],[52,-23.7],[0,0],[0,0]]}],h:1},{t:114,s:[{v:[[138.9,17.55],[29.68,136.82],[-119.14,73.52],[-108.98,-87.88],[46.59,-132.02],[42.87,-121.46],[-100.27,-80.85],[-109.61,67.64],[27.31,125.87],[127.78,16.14],[138.9,17.55]],i:[[0,0],[58.01,-12.58],[31.17,50.51],[-37.26,46.21],[-55.97,-19.76],[0,0],[34.28,-42.51],[-28.68,-46.47],[-53.37,11.58],[-6.84,54.18],[0,0]],o:[[-7.44,58.89],[-58.01,12.58],[-31.17,-50.51],[37.26,-46.21],[0,0],[-51.5,-18.17],[-34.28,42.51],[28.68,46.47],[53.37,-11.58],[0,0],[0,0]]}],h:1},{t:115,s:[{v:[[127.58,57.66],[-56.59,128.05],[-128.52,-55.51],[54.43,-128.98],[50.08,-118.67],[-118.24,-51.07],[-52.06,117.81],[117.37,53.04],[127.58,57.66],[127.58,57.66],[127.58,57.66]],i:[[0,0],[70.3,31.07],[-30.48,70.56],[-70.81,-29.88],[0,0],[28.04,-64.92],[-64.68,-28.58],[-29.12,64.44],[0,0],[0,0],[0,0]],o:[[-31.65,70.04],[-70.3,-31.07],[30.48,-70.56],[0,0],[-65.15,-27.49],[-28.04,64.92],[64.68,28.58],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:116,s:[{v:[[101.84,96.07],[-85.76,110.66],[-118.44,-74.64],[62.82,-125.11],[57.8,-115.1],[-108.97,-68.67],[-78.9,101.81],[93.69,88.38],[101.84,96.07],[101.84,96.07],[101.84,96.07]],i:[[0,0],[56.97,44.15],[-38.42,60.97],[-64.41,-32.34],[0,0],[35.35,-56.1],[-52.41,-40.61],[-45.5,48.23],[0,0],[0,0],[0,0]],o:[[-49.45,52.42],[-56.97,-44.15],[38.42,-60.97],[0,0],[-59.25,-29.75],[-35.35,56.1],[52.41,40.61],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:117,s:[{v:[[60.6,126.2],[-112.09,83.88],[-103.99,-93.73],[71.83,-120.17],[66.09,-110.55],[-95.67,-86.23],[-103.12,77.17],[55.75,116.11],[60.6,126.2],[60.6,126.2],[60.6,126.2]],i:[[0,0],[40.07,53.54],[-44.77,49.67],[-57.4,-34.31],[0,0],[41.19,-45.7],[-36.86,-49.26],[-55.46,26.63],[0,0],[0,0],[0,0]],o:[[-60.28,28.95],[-40.07,-53.54],[44.77,-49.67],[0,0],[-52.81,-31.57],[-41.19,45.7],[36.86,49.26],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:118,s:[{v:[[6.18,139.86],[-131.68,47.56],[-84.62,-111.53],[81.27,-114],[74.77,-104.88],[-77.85,-102.61],[-121.14,43.75],[5.69,128.67],[6.18,139.86],[6.18,139.86],[6.18,139.86]],i:[[0,0],[20.81,57.61],[-48.8,37.02],[-49.88,-35.56],[0,0],[44.9,-34.06],[-19.14,-53.01],[-56.3,2.49],[0,0],[0,0],[0,0]],o:[[-61.2,2.7],[-20.81,-57.61],[48.8,-37.02],[0,0],[-45.89,-32.72],[-44.9,34.06],[19.14,53.01],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:119,s:[{v:[[-54.21,129.08],[-139.96,3.16],[-59.97,-126.5],[91.04,-106.36],[83.76,-97.85],[-55.17,-116.38],[-128.77,2.9],[-49.87,118.75],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08]],i:[[0,0],[1.25,55.22],[-49.91,23.66],[-41.96,-35.92],[0,0],[45.91,-21.77],[-1.15,-50.8],[-46.85,-19.67],[0,0],[0,0],[0,0]],o:[[-50.92,-21.38],[-1.25,-55.22],[49.91,-23.66],[0,0],[-38.6,-33.04],[-45.91,21.77],[1.15,50.8],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:120,s:[{v:[[-107.87,89.24],[-93.24,-104.43],[100.84,-97.11],[92.78,-89.34],[-85.78,-96.08],[-99.24,82.1],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24]],i:[[0,0],[-56.14,50.13],[-52.21,-54.22],[0,0],[51.65,-46.12],[-44.14,-53.35],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-47.98,-57.99],[56.14,-50.13],[0,0],[-48.03,-49.88],[-51.65,46.12],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:121,s:[{v:[[-138.05,23.3],[-56.38,-128.15],[110.45,-86.02],[101.62,-79.14],[-51.87,-117.9],[-127,21.44],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3]],i:[[0,0],[-58.69,25.82],[-39.4,-50.59],[0,0],[54,-23.76],[-9.82,-58.17],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-10.67,-63.23],[58.69,-25.82],[0,0],[-36.25,-46.54],[-54,23.76],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:122,s:[{v:[[-128.94,-54.54],[-10.38,-139.62],[119.46,-73],[109.9,-67.16],[-9.55,-128.45],[-118.62,-50.18],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54]],i:[[0,0],[-52.34,3.89],[-27.37,-44.79],[0,0],[48.16,-3.58],[18.81,-44.47],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[20.45,-48.34],[52.34,-3.89],[0,0],[-25.18,-41.2],[-48.16,3.58],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:123,s:[{v:[[-74.09,-118.79],[40.53,-134],[127.51,-57.81],[117.31,-53.19],[37.29,-123.28],[-68.16,-109.29],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79]],i:[[0,0],[-38.61,-11.68],[-16.66,-36.74],[0,0],[35.52,10.75],[31.49,-19.64],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[34.23,-21.35],[38.61,11.68],[0,0],[-15.33,-33.8],[-35.52,-10.75],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:124,s:[{v:[[14.32,-139.27],[134.02,-40.49],[123.3,-37.25],[13.17,-128.12],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27]],i:[[0,0],[-16.33,-54.05],[0,0],[51.68,5.31],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[56.17,5.77],[0,0],[-15.02,-49.73],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:125,s:[{v:[[101.52,-96.41],[138.39,-21.2],[127.32,-19.5],[93.4,-88.69],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41]],i:[[0,0],[-4.33,-28.24],[0,0],[18.1,19.06],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[19.68,20.72],[0,0],[-3.98,-25.99],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:126,s:[{v:[[140,0],[140,0],[128.8,0],[128.8,0],[140,0],[140,0],[140,0],[140,0],[140,0],[140,0],[140,0]],i:[[0,0],[-140,0],[0,0],[-128.8,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-140,0],[0,0],[-128.8,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1}]}},{ty:"sh",hd:!1,ix:1,ks:{a:1,k:[{t:0,s:[{v:[[0,-128.8],[-128.8,0],[0,128.8],[128.8,0],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8]],i:[[0,0],[0,-71.13],[-71.13,0],[0,71.13],[71.13,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-71.13,0],[0,71.13],[71.13,0],[0,-71.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:0,s:[{v:[[0,140],[0,140],[0,140],[0,140],[0,140],[0,140],[0,140],[0,140],[0,140],[0,140],[0,140]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:1,s:[{v:[[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96],[-3.54,139.96]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:2,s:[{v:[[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75],[-8.33,139.75]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:3,s:[{v:[[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25],[-14.46,139.25]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:4,s:[{v:[[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26],[-22,138.26]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:5,s:[{v:[[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55],[-30.9,136.55]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:6,s:[{v:[[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84],[-41.07,133.84]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:7,s:[{v:[[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83],[-52.38,129.83]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:8,s:[{v:[[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25],[-64.51,124.25]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:9,s:[{v:[[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91],[-77.03,116.91]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:10,s:[{v:[[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68],[-89.47,107.68]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:11,s:[{v:[[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64],[-101.3,96.64]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:12,s:[{v:[[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98],[-112.01,83.98]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:13,s:[{v:[[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70],[-121.24,70]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:14,s:[{v:[[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08],[-128.71,55.08]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:15,s:[{v:[[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69],[-134.26,39.69]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:16,s:[{v:[[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17],[-137.9,24.17]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:17,s:[{v:[[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91],[-139.72,8.91]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:18,s:[{v:[[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86],[-139.88,-5.86]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:19,s:[{v:[[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9],[-138.58,-19.9]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:20,s:[{v:[[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06],[-136.04,-33.06]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:21,s:[{v:[[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26],[-132.48,-45.26]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:22,s:[{v:[[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47],[-128.1,-56.47]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:23,s:[{v:[[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72],[-123.08,-66.72]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:24,s:[{v:[[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96],[-117.6,-75.96]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:25,s:[{v:[[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27],[-111.79,-84.27]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:26,s:[{v:[[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7],[-105.79,-91.7]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:27,s:[{v:[[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32],[-99.67,-98.32]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:28,s:[{v:[[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19],[-93.51,-104.19]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:29,s:[{v:[[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35],[-87.42,-109.35]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:30,s:[{v:[[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88],[-81.44,-113.88]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:31,s:[{v:[[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84],[-75.59,-117.84]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:32,s:[{v:[[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29],[-69.92,-121.29]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:33,s:[{v:[[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29],[-64.43,-124.29]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:34,s:[{v:[[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87],[-59.19,-126.87]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:35,s:[{v:[[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1],[-54.16,-129.1]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:36,s:[{v:[[-49.4,-131],[-49.4,-131],[-49.4,-131],[-49.4,-131],[-49.4,-131],[-49.4,-131],[-49.4,-131],[-49.4,-131],[-49.4,-131],[-49.4,-131],[-49.4,-131]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:37,s:[{v:[[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62],[-44.86,-132.62]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:38,s:[{v:[[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99],[-40.58,-133.99]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:39,s:[{v:[[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15],[-36.54,-135.15]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:40,s:[{v:[[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11],[-32.75,-136.11]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:41,s:[{v:[[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92],[-29.2,-136.92]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:42,s:[{v:[[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58],[-25.9,-137.58]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:43,s:[{v:[[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13],[-22.82,-138.13]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:44,s:[{v:[[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57],[-19.97,-138.57]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:45,s:[{v:[[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92],[-17.35,-138.92]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:46,s:[{v:[[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2],[-14.93,-139.2]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:47,s:[{v:[[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42],[-12.71,-139.42]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:48,s:[{v:[[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59],[-10.72,-139.59]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:49,s:[{v:[[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72],[-8.89,-139.72]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:50,s:[{v:[[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81],[-7.25,-139.81]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:51,s:[{v:[[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88],[-5.81,-139.88]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:52,s:[{v:[[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93],[-4.54,-139.93]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:53,s:[{v:[[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96],[-3.44,-139.96]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:54,s:[{v:[[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98],[-2.49,-139.98]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:55,s:[{v:[[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99],[-1.71,-139.99]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:56,s:[{v:[[-1.08,-140],[-1.08,-140],[-1.08,-140],[-1.08,-140],[-1.08,-140],[-1.08,-140],[-1.08,-140],[-1.08,-140],[-1.08,-140],[-1.08,-140],[-1.08,-140]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:57,s:[{v:[[-.61,-140],[-.61,-140],[-.61,-140],[-.61,-140],[-.61,-140],[-.61,-140],[-.61,-140],[-.61,-140],[-.61,-140],[-.61,-140],[-.61,-140]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:58,s:[{v:[[-.74,-128.8],[-128.8,.61],[.49,128.8],[128.8,-.37],[-.25,-128.8],[-.74,-128.8],[-.74,-128.8],[-.74,-128.8],[-.74,-128.8],[-.74,-128.8],[-.74,-128.8]],i:[[0,0],[-.34,-71.09],[-71.09,.27],[.2,71.09],[71.09,-.14],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-71.09,.41],[.34,71.09],[71.09,-.27],[-.2,-71.09],[0,0],[.49,0],[.49,0],[.49,0],[.49,0],[.49,0],[.49,0]]}],h:1},{t:59,s:[{v:[[-.15,-128.8],[-128.8,.13],[.11,128.8],[128.8,-.09],[-.07,-128.8],[-.15,-128.8],[-.15,-128.8],[-.15,-128.8],[-.15,-128.8],[-.15,-128.8],[-.15,-128.8]],i:[[0,0],[-.07,-71.13],[-71.13,.06],[.05,71.13],[71.13,-.04],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-71.13,.08],[.07,71.13],[71.13,-.06],[-.05,-71.13],[0,0],[.08,0],[.08,0],[.08,0],[.08,0],[.08,0],[.08,0]]}],h:1},{t:60,s:[{v:[[0,-128.8],[-128.8,0],[0,128.8],[128.8,0],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8]],i:[[0,0],[0,-71.13],[-71.13,0],[0,71.13],[71.13,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-71.13,0],[0,71.13],[71.13,0],[0,-71.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:96,s:[{v:[[0,-128.8],[-128.8,0],[0,128.8],[128.8,0],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8],[0,-128.8]],i:[[0,0],[0,-71.13],[-71.13,0],[0,71.13],[71.13,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-71.13,0],[0,71.13],[71.13,0],[0,-71.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:97,s:[{v:[[.04,-128.8],[-128.8,-.04],[-.04,128.8],[128.8,.04],[.04,-128.8],[.04,-128.8],[.04,-128.8],[.04,-128.8],[.04,-128.8],[.04,-128.8],[.04,-128.8]],i:[[0,0],[.02,-71.13],[-71.13,-.02],[-.02,71.13],[71.13,.02],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-71.13,-.02],[-.02,71.13],[71.13,.02],[.02,-71.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:98,s:[{v:[[.05,-128.8],[-128.8,-.11],[-.17,128.8],[128.8,.23],[.29,-128.8],[.05,-128.8],[.05,-128.8],[.05,-128.8],[.05,-128.8],[.05,-128.8],[.05,-128.8]],i:[[0,0],[.06,-71.11],[-71.11,-.09],[-.13,71.11],[71.11,.16],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-71.11,-.03],[-.06,71.11],[71.11,.09],[.13,-71.11],[0,0],[.25,0],[.25,0],[.25,0],[.25,0],[.25,0],[.25,0]]}],h:1},{t:99,s:[{v:[[.2,-128.8],[-128.8,-.4],[-.61,128.8],[128.8,.81],[1.01,-128.8],[.2,-128.8],[.2,-128.8],[.2,-128.8],[.2,-128.8],[.2,-128.8],[.2,-128.8]],i:[[0,0],[.22,-71.05],[-71.05,-.33],[-.45,71.05],[71.05,.56],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[-71.05,-.11],[-.22,71.05],[71.05,.33],[.45,-71.05],[0,0],[.81,0],[.81,0],[.81,0],[.81,0],[.81,0],[.81,0]]}],h:1},{t:100,s:[{v:[[2.61,-139.98],[2.61,-139.98],[2.61,-139.98],[2.61,-139.98],[2.61,-139.98],[2.61,-139.98],[2.61,-139.98],[2.61,-139.98],[2.61,-139.98],[2.61,-139.98],[2.61,-139.98]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:101,s:[{v:[[5.08,-139.91],[5.08,-139.91],[5.08,-139.91],[5.08,-139.91],[5.08,-139.91],[5.08,-139.91],[5.08,-139.91],[5.08,-139.91],[5.08,-139.91],[5.08,-139.91],[5.08,-139.91]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:102,s:[{v:[[8.79,-139.72],[8.79,-139.72],[8.79,-139.72],[8.79,-139.72],[8.79,-139.72],[8.79,-139.72],[8.79,-139.72],[8.79,-139.72],[8.79,-139.72],[8.79,-139.72],[8.79,-139.72]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:103,s:[{v:[[13.95,-139.3],[13.95,-139.3],[13.95,-139.3],[13.95,-139.3],[13.95,-139.3],[13.95,-139.3],[13.95,-139.3],[13.95,-139.3],[13.95,-139.3],[13.95,-139.3],[13.95,-139.3]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:104,s:[{v:[[20.77,-138.45],[20.77,-138.45],[20.77,-138.45],[20.77,-138.45],[20.77,-138.45],[20.77,-138.45],[20.77,-138.45],[20.77,-138.45],[20.77,-138.45],[20.77,-138.45],[20.77,-138.45]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:105,s:[{v:[[29.47,-136.86],[29.47,-136.86],[29.47,-136.86],[29.47,-136.86],[29.47,-136.86],[29.47,-136.86],[29.47,-136.86],[29.47,-136.86],[29.47,-136.86],[29.47,-136.86],[29.47,-136.86]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:106,s:[{v:[[40.16,-134.12],[40.16,-134.12],[40.16,-134.12],[40.16,-134.12],[40.16,-134.12],[40.16,-134.12],[40.16,-134.12],[40.16,-134.12],[40.16,-134.12],[40.16,-134.12],[40.16,-134.12]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:107,s:[{v:[[52.85,-129.64],[52.85,-129.64],[52.85,-129.64],[52.85,-129.64],[52.85,-129.64],[52.85,-129.64],[52.85,-129.64],[52.85,-129.64],[52.85,-129.64],[52.85,-129.64],[52.85,-129.64]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:108,s:[{v:[[67.45,-122.68],[67.45,-122.68],[67.45,-122.68],[67.45,-122.68],[67.45,-122.68],[67.45,-122.68],[67.45,-122.68],[67.45,-122.68],[67.45,-122.68],[67.45,-122.68],[67.45,-122.68]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:109,s:[{v:[[83.51,-112.37],[83.51,-112.37],[83.51,-112.37],[83.51,-112.37],[83.51,-112.37],[83.51,-112.37],[83.51,-112.37],[83.51,-112.37],[83.51,-112.37],[83.51,-112.37],[83.51,-112.37]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:110,s:[{v:[[100.25,-97.73],[100.25,-97.73],[100.25,-97.73],[100.25,-97.73],[100.25,-97.73],[100.25,-97.73],[100.25,-97.73],[100.25,-97.73],[100.25,-97.73],[100.25,-97.73],[100.25,-97.73]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:111,s:[{v:[[116.41,-77.78],[116.41,-77.78],[116.41,-77.78],[116.41,-77.78],[116.41,-77.78],[116.41,-77.78],[116.41,-77.78],[116.41,-77.78],[116.41,-77.78],[116.41,-77.78],[116.41,-77.78]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:112,s:[{v:[[130.05,-51.83],[130.05,-51.83],[130.05,-51.83],[130.05,-51.83],[130.05,-51.83],[130.05,-51.83],[130.05,-51.83],[130.05,-51.83],[130.05,-51.83],[130.05,-51.83],[130.05,-51.83]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:113,s:[{v:[[138.6,-19.77],[138.6,-19.77],[138.6,-19.77],[138.6,-19.77],[138.6,-19.77],[138.6,-19.77],[138.6,-19.77],[138.6,-19.77],[138.6,-19.77],[138.6,-19.77],[138.6,-19.77]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:114,s:[{v:[[138.9,17.55],[138.9,17.55],[138.9,17.55],[138.9,17.55],[138.9,17.55],[138.9,17.55],[138.9,17.55],[138.9,17.55],[138.9,17.55],[138.9,17.55],[138.9,17.55]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:115,s:[{v:[[127.58,57.66],[127.58,57.66],[127.58,57.66],[127.58,57.66],[127.58,57.66],[127.58,57.66],[127.58,57.66],[127.58,57.66],[127.58,57.66],[127.58,57.66],[127.58,57.66]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:116,s:[{v:[[101.84,96.07],[101.84,96.07],[101.84,96.07],[101.84,96.07],[101.84,96.07],[101.84,96.07],[101.84,96.07],[101.84,96.07],[101.84,96.07],[101.84,96.07],[101.84,96.07]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:117,s:[{v:[[60.6,126.2],[60.6,126.2],[60.6,126.2],[60.6,126.2],[60.6,126.2],[60.6,126.2],[60.6,126.2],[60.6,126.2],[60.6,126.2],[60.6,126.2],[60.6,126.2]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:118,s:[{v:[[6.18,139.86],[6.18,139.86],[6.18,139.86],[6.18,139.86],[6.18,139.86],[6.18,139.86],[6.18,139.86],[6.18,139.86],[6.18,139.86],[6.18,139.86],[6.18,139.86]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:119,s:[{v:[[-54.21,129.08],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08],[-54.21,129.08]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:120,s:[{v:[[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24],[-107.87,89.24]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:121,s:[{v:[[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3],[-138.05,23.3]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:122,s:[{v:[[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54],[-128.94,-54.54]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:123,s:[{v:[[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79],[-74.09,-118.79]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:124,s:[{v:[[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27],[14.32,-139.27]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:125,s:[{v:[[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41],[101.52,-96.41]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1},{t:126,s:[{v:[[140,0],[140,0],[140,0],[140,0],[140,0],[140,0],[140,0],[140,0],[140,0],[140,0],[140,0]],i:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],o:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}],h:1}]}},{ty:"gf",hd:!1,bm:0,e:{a:0,k:[140,0]},g:{p:3,k:{a:0,k:[0,.97,.77,.63,.49,.92,.68,.78,1,.88,.61,.91,0,1,.49,1,1,1]}},t:1,a:{a:0,k:0},h:{a:0,k:0},o:{a:0,k:100},r:1,s:{a:0,k:[-140,0]}},{ty:"tr",nm:"Transform",a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[0,0]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}}],np:0}]}]},{id:"hkNLTi0l45YuREyb8CHPb",layers:[]},{id:"1GgzJloKZ5FArLgzY-xHu",layers:[{ddd:0,ind:8,ty:4,nm:"",ln:"LM8zQfJDxZS-UAa5GEA3z8",sr:1,ks:{a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[49909,49926.12]},r:{a:0,k:0},s:{a:0,k:[1155.5266666666666,1158.872988235294]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,ip:0,op:157,st:0,bm:0,shapes:[{ty:"gr",nm:"surface1",it:[{ty:"gr",it:[{ty:"gr",it:[{ty:"sh",d:1,ks:{a:0,k:{c:!0,i:[[0,0],[3.81,0],[0,-3.83],[0,0],[-.1,-.11],[-.15,0],[0,0],[-.1,.1],[0,.15],[0,0],[-.3,0],[0,0],[0,-.31],[0,0],[-.11,-.11],[-.14,0],[0,0],[-.1,.1],[0,.15],[0,0],[-.94,.55],[-.94,-.55],[0,-1.09],[0,0],[-.3,0],[0,0],[0,.31]],o:[[0,-3.83],[-3.81,0],[0,0],[0,.15],[.1,.1],[0,0],[.14,0],[.11,-.11],[0,0],[0,-.31],[0,0],[.3,0],[0,0],[0,.15],[.1,.1],[0,0],[.15,0],[.11,-.11],[0,0],[0,-1.09],[.94,-.55],[.94,.55],[0,0],[0,.31],[0,0],[.3,0],[0,0]],v:[[15.21,7.28],[8.32,.34],[1.27,7.28],[1.27,11.61],[1.43,12],[1.82,12.16],[2.61,12.16],[3,12],[3.16,11.61],[3.16,8.01],[3.71,7.46],[4.83,7.46],[5.38,8.01],[5.38,11.61],[5.54,12],[5.93,12.16],[6.71,12.16],[7.1,12],[7.26,11.61],[7.26,10.52],[8.78,7.87],[11.82,7.87],[13.34,10.52],[13.34,11.61],[13.89,12.16],[14.67,12.16],[15.22,11.61]]}}},{ty:"sh",d:1,ks:{a:0,k:{c:!0,i:[[0,0],[.17,-.1],[.32,.11],[.04,.02],[0,.41],[-.36,.2],[-.05,.01],[-.31,-.3],[0,-.3],[.11,-.17]],o:[[-.1,.17],[-.29,.17],[-.05,-.01],[-.36,-.2],[0,-.41],[.04,-.03],[.41,-.15],[.22,.21],[0,.2],[0,0]],v:[[5.24,5.8],[4.83,6.21],[3.87,6.29],[3.74,6.23],[3.15,5.23],[3.74,4.23],[3.88,4.18],[5.06,4.44],[5.4,5.23],[5.24,5.8]]}}},{ty:"fl",c:{a:0,k:[.99,.99,.99,1]},r:1,o:{a:0,k:100}},{ty:"tr",nm:"Transform",a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[0,0]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}}]},{ty:"tr",nm:"Transform",a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[0,0]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}}]},{ty:"gr",it:[{ty:"gr",it:[{ty:"sh",d:1,ks:{a:0,k:{c:!0,i:[[0,0],[3.81,0],[0,-3.83],[0,0],[-.1,-.11],[-.15,0],[0,0],[-.1,.1],[0,.15],[0,0],[-.3,0],[0,0],[0,-.31],[0,0],[-.11,-.11],[-.14,0],[0,0],[-.1,.1],[0,.15],[0,0],[-.94,.55],[-.94,-.55],[0,-1.09],[0,0],[-.3,0],[0,0],[0,.31]],o:[[0,-3.83],[-3.81,0],[0,0],[0,.15],[.1,.1],[0,0],[.14,0],[.11,-.11],[0,0],[0,-.31],[0,0],[.3,0],[0,0],[0,.15],[.1,.1],[0,0],[.15,0],[.11,-.11],[0,0],[0,-1.09],[.94,-.55],[.94,.55],[0,0],[0,.31],[0,0],[.3,0],[0,0]],v:[[14.6,7.28],[7.71,.34],[.66,7.28],[.66,11.61],[.82,12],[1.21,12.16],[2,12.16],[2.38,12],[2.55,11.61],[2.55,8.01],[3.09,7.46],[4.21,7.46],[4.77,8.01],[4.77,11.61],[4.93,12],[5.31,12.16],[6.1,12.16],[6.49,12],[6.65,11.61],[6.65,10.52],[8.17,7.87],[11.21,7.87],[12.73,10.52],[12.73,11.61],[13.28,12.16],[14.05,12.16],[14.61,11.61]]}}},{ty:"sh",d:1,ks:{a:0,k:{c:!0,i:[[0,0],[.17,-.1],[.32,.11],[.04,.02],[0,.41],[-.36,.2],[-.05,.01],[-.31,-.3],[0,-.3],[.11,-.17]],o:[[-.1,.17],[-.29,.17],[-.05,-.01],[-.36,-.2],[0,-.41],[.04,-.03],[.41,-.15],[.22,.21],[0,.2],[0,0]],v:[[4.63,5.8],[4.22,6.21],[3.26,6.29],[3.13,6.23],[2.54,5.23],[3.13,4.23],[3.27,4.18],[4.45,4.44],[4.79,5.23],[4.63,5.8]]}}},{ty:"fl",c:{a:0,k:[.86,.86,.86,1]},r:1,o:{a:0,k:100}},{ty:"tr",nm:"Transform",a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[0,0]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}}]},{ty:"tr",nm:"Transform",a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[0,0]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}}]},{ty:"tr",nm:"Transform",a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[0,0]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}}]}]}]},{id:"dyN8tSSNzvO2wX5_Dtjla",layers:[{ddd:0,ind:10,ty:4,nm:"",ln:"_GIj9ZeA7rwWCuRAnwK0b10",sr:1,ks:{a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,ip:0,op:157,st:0,bm:0,shapes:[{ty:"gr",hd:!1,bm:0,it:[{ty:"rc",hd:!1,p:{a:0,k:[0,0]},r:{a:0,k:0},s:{a:0,k:[182,147.76]}},{ty:"fl",hd:!1,bm:0,c:{a:0,k:[0,0,0]},r:1,o:{a:0,k:100}},{ty:"tr",nm:"Transform",a:{a:0,k:[0,0]},o:{a:0,k:100},p:{a:0,k:[0,0]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}}],np:0}]}]},{id:"cHVRDk8IVgVTI7H-xrQ5X",layers:[{ddd:0,ind:9,ty:0,nm:"",td:1,ln:"precomp_ZtOb0OCgqiQQYswd_bYsZ9",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"dyN8tSSNzvO2wX5_Dtjla"},{ddd:0,ind:7,ty:0,nm:"",tt:1,ln:"precomp_5oZ83-FT3oshDyBMTbHvB7",sr:1,ks:{a:{a:0,k:[1e5,1e5]},o:{a:0,k:100},p:{a:0,k:[1e5,1e5]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"1GgzJloKZ5FArLgzY-xHu"}]},{id:"XsSIV0z0ZSNYl1T_eIymc",layers:[]},{id:"VuiL0lwCg13eB6LBe74VD",layers:[{ddd:0,ind:5,ty:0,nm:"",ln:"precomp_axBdqkXukWmZZtt1lLTYO5",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"hkNLTi0l45YuREyb8CHPb"},{ddd:0,ind:6,ty:0,nm:"",ln:"precomp_5oZ83-FT3oshDyBMTbHvB6",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"cHVRDk8IVgVTI7H-xrQ5X"},{ddd:0,ind:11,ty:0,nm:"",ln:"precomp_la5YlE_GV_4BPZbinraQb11",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"XsSIV0z0ZSNYl1T_eIymc"}]},{id:"-c2Xn1AzRrKvkPfONMGjS",layers:[]},{id:"bFwLslNtClblskRaDTJ47",layers:[]},{id:"VurtnAUi2i84HIyFiKf0R",layers:[{ddd:0,ind:2,ty:0,nm:"",ln:"precomp_19:2262",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"Qe0HNtHmMoBZnWq8BH9Mt"},{ddd:0,ind:4,ty:0,nm:"",ln:"precomp_62:864",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[49997,49986]},r:{a:1,k:[{t:0,s:[0],h:1},{t:0,s:[-15],i:{x:.25,y:1},o:{x:.25,y:.1}},{t:45,s:[0],h:1}]},s:{a:1,k:[{t:0,s:[100,100],h:1},{t:0,s:[0,0],i:{x:.68,y:1},o:{x:.33,y:1}},{t:45,s:[100,100],h:1}]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"VuiL0lwCg13eB6LBe74VD"},{ddd:0,ind:12,ty:0,nm:"",ln:"precomp_iOD4psOXBXQeK5pSsY_7E12",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"-c2Xn1AzRrKvkPfONMGjS"},{ddd:0,ind:13,ty:0,nm:"",ln:"precomp_Z6TzdKXLEm4izCTbzf9_H13",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"bFwLslNtClblskRaDTJ47"}]},{id:"nVfSuOBGnEIT-28K-U4PB",layers:[]},{id:"agFvKdbZlin7heACCH5oS",layers:[]},{id:"6Th_lJJtxwVWXUGkxtS3J",layers:[{ddd:0,ind:1,ty:0,nm:"",ln:"precomp_Zche5tnE1",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:1,k:[{t:0,s:[100,100],h:1},{t:102,s:[100,100],i:{x:.67,y:0},o:{x:.32,y:0}},{t:132,s:[0,0],h:1}]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"VurtnAUi2i84HIyFiKf0R"},{ddd:0,ind:14,ty:0,nm:"",ln:"precomp_xSOdPSa5U7L0QXvotJz_N14",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"nVfSuOBGnEIT-28K-U4PB"},{ddd:0,ind:15,ty:0,nm:"",ln:"precomp_EUwLytwoOE93GiW7MQYMh15",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[5e4,5e4]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"agFvKdbZlin7heACCH5oS"}]}],ddd=0,fr=60,h=400,ip=0,layers=[{ddd:0,ind:0,ty:0,nm:"",ln:"precomp_19:2220",sr:1,ks:{a:{a:0,k:[5e4,5e4]},o:{a:0,k:100},p:{a:0,k:[200,200]},r:{a:0,k:0},s:{a:0,k:[100,100]},sk:{a:0,k:0},sa:{a:0,k:0}},ao:0,w:1e5,h:1e5,ip:0,op:157,st:0,bm:0,refId:"6Th_lJJtxwVWXUGkxtS3J"}],meta={g:"https://jitter.video"},nm="Profile-New-Story-[remix]",op=156,v="5.7.4",w=400,arioLoading={assets,ddd,fr,h,ip,layers,meta,nm,op,v,w},BlockingMessageModal=({onClose:t,message:e})=>jsxRuntimeExports.jsx(BaseModal,{onClose:t,showCloseButton:!1,children:jsxRuntimeExports.jsxs("div",{className:"flex w-[24.5rem] flex-col items-center justify-center",children:[jsxRuntimeExports.jsx("div",{className:"flex size-[4.5rem] items-center pb-4",children:jsxRuntimeExports.jsx(Lottie,{animationData:arioLoading,loop:!0,width:24,height:24})}),jsxRuntimeExports.jsx("div",{className:"text-sm text-mid",children:e})]})}),SuccessModal=({onClose:t,title:e,bodyText:r})=>jsxRuntimeExports.jsx(BaseModal,{onClose:t,children:jsxRuntimeExports.jsxs("div",{className:"w-[24.5rem]",children:[jsxRuntimeExports.jsx("div",{className:"flex grow justify-center pb-3",children:jsxRuntimeExports.jsx(SvgSuccessCheck,{className:"size-8"})}),jsxRuntimeExports.jsx("div",{className:"pb-3 text-2xl text-high",children:e}),typeof r=="string"?jsxRuntimeExports.jsx("div",{className:"pb-8 text-center text-low",children:r}):r,jsxRuntimeExports.jsx("div",{className:"flex grow justify-center",children:jsxRuntimeExports.jsx(Button,{onClick:t,buttonType:ButtonType.PRIMARY,title:"Close",text:"Close"})})]})});export{BlockingMessageModal as B,ErrorMessageIcon as E,SuccessModal as S,validateDomainName as a,validateWalletAddress as b,validateTransactionId as c,validateIOAmount as d,validateNumberRange as e,validateUnstakeAmount as f,validateString as v}; -//# sourceMappingURL=SuccessModal-CtcgJ46_.js.map +//# sourceMappingURL=SuccessModal-B5bjpxfT.js.map diff --git a/assets/SuccessModal-CtcgJ46_.js.map b/assets/SuccessModal-B5bjpxfT.js.map similarity index 99% rename from assets/SuccessModal-CtcgJ46_.js.map rename to assets/SuccessModal-B5bjpxfT.js.map index 5619641a..9a62cf7d 100644 --- a/assets/SuccessModal-CtcgJ46_.js.map +++ b/assets/SuccessModal-B5bjpxfT.js.map @@ -1 +1 @@ -{"version":3,"file":"SuccessModal-CtcgJ46_.js","sources":["../../src/components/icons/form_error.svg?react","../../src/components/icons/success_check.svg?react","../../src/components/forms/ErrorMessageIcon.tsx","../../src/components/forms/validation.ts","../../node_modules/lottie-web/build/player/lottie.js","../../node_modules/lottie-react/build/index.es.js","../../src/components/modals/BlockingMessageModal.tsx","../../src/components/modals/SuccessModal.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgFormError = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 18, height: 18, viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \" \", clipPath: \"url(#clip0_2062_980)\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M9 16.5C13.1421 16.5 16.5 13.1421 16.5 9C16.5 4.85786 13.1421 1.5 9 1.5C4.85786 1.5 1.5 4.85786 1.5 9C1.5 13.1421 4.85786 16.5 9 16.5Z\", stroke: \"#DB4354\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_2\", d: \"M9 12V9\", stroke: \"#DB4354\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_3\", d: \"M9 6H9.0075\", stroke: \"#DB4354\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_2062_980\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 18, height: 18, fill: \"white\" }))));\nexport default SvgFormError;\n","import * as React from \"react\";\nconst SvgSuccessCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 32, height: 32, viewBox: \"0 0 32 32\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Frame\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M5.13359 11.4941C4.93898 10.6175 4.96886 9.7059 5.22047 8.8439C5.47207 7.9819 5.93725 7.19737 6.57288 6.56308C7.20851 5.92878 7.994 5.46524 8.85653 5.21544C9.71906 4.96564 10.6307 4.93767 11.5069 5.13411C11.9892 4.37985 12.6536 3.75913 13.4389 3.32916C14.2241 2.8992 15.105 2.67383 16.0003 2.67383C16.8955 2.67383 17.7764 2.8992 18.5617 3.32916C19.3469 3.75913 20.0113 4.37985 20.4936 5.13411C21.3711 4.93681 22.2844 4.96466 23.1483 5.21507C24.0122 5.46547 24.7987 5.9303 25.4347 6.56632C26.0707 7.20234 26.5356 7.98888 26.786 8.85278C27.0364 9.71669 27.0642 10.6299 26.8669 11.5074C27.6212 11.9897 28.2419 12.6541 28.6719 13.4394C29.1018 14.2246 29.3272 15.1055 29.3272 16.0008C29.3272 16.8961 29.1018 17.7769 28.6719 18.5622C28.2419 19.3474 27.6212 20.0118 26.8669 20.4941C27.0634 21.3703 27.0354 22.282 26.7856 23.1445C26.5358 24.007 26.0723 24.7925 25.438 25.4282C24.8037 26.0638 24.0191 26.529 23.1571 26.7806C22.2951 27.0322 21.3836 27.0621 20.5069 26.8674C20.0253 27.6246 19.3604 28.248 18.5738 28.6799C17.7872 29.1118 16.9043 29.3382 16.0069 29.3382C15.1096 29.3382 14.2267 29.1118 13.4401 28.6799C12.6535 28.248 11.9886 27.6246 11.5069 26.8674C10.6307 27.0639 9.71906 27.0359 8.85653 26.7861C7.994 26.5363 7.20851 26.0728 6.57288 25.4385C5.93725 24.8042 5.47207 24.0197 5.22047 23.1577C4.96886 22.2957 4.93898 21.3841 5.13359 20.5074C4.37353 20.0264 3.74748 19.361 3.31366 18.5731C2.87983 17.7851 2.65234 16.9003 2.65234 16.0008C2.65234 15.1013 2.87983 14.2164 3.31366 13.4285C3.74748 12.6406 4.37353 11.9751 5.13359 11.4941Z\", stroke: \"url(#paint0_linear_1391_2499)\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_2\", d: \"M12 16.0007L14.6667 18.6673L20 13.334\", stroke: \"url(#paint1_linear_1391_2499)\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"paint0_linear_1391_2499\", x1: 4.7627, y1: 23.7247, x2: 29.5913, y2: 23.1188, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#F7C3A1\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.52, stopColor: \"#EBAEC6\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#DF9BE8\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"paint1_linear_1391_2499\", x1: 12.6329, y1: 17.5445, x2: 20.0737, y2: 17.2723, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#F7C3A1\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.52, stopColor: \"#EBAEC6\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#DF9BE8\" }))));\nexport default SvgSuccessCheck;\n","import * as Tooltip from '@radix-ui/react-tooltip';\nimport { FormErrorIcon } from '../icons';\n\nconst ErrorMessageIcon = ({\n errorMessage,\n tooltipPadding,\n}: {\n errorMessage: string;\n tooltipPadding?: string;\n}) => {\n const marginBottom = tooltipPadding ? `mb-${tooltipPadding}` : '';\n\n return (\n
\n \n \n \n \n \n \n \n \n
{errorMessage}
\n
\n
\n
\n
\n
\n );\n};\n\nexport default ErrorMessageIcon;\n","import { ARWEAVE_TX_REGEX, FQDN_REGEX } from '@ar.io/sdk/web';\n\n/* Higher-order functions that return a FormValidationFunction for use with FormRowDefs */\n\nexport type FormValidationFunction = (v: string) => string | undefined;\n\nexport const validateString = (\n propertyName: string,\n min: number,\n max: number,\n): FormValidationFunction => {\n return (v: string) => {\n return v.trim().length < min || v.trim().length > max\n ? `${propertyName} is required and must be ${min}-${max} characters in length.`\n : undefined;\n };\n};\n\nexport const validateDomainName = (\n propertyName: string,\n): FormValidationFunction => {\n return (v: string) => {\n return v.trim() === '' || !FQDN_REGEX.test(v)\n ? `${propertyName} is required and must be a valid domain name.`\n : undefined;\n };\n};\n\nexport const validateWalletAddress = (\n propertyName: string,\n): FormValidationFunction => {\n return (v: string) => {\n return v.trim() === '' || !ARWEAVE_TX_REGEX.test(v)\n ? `${propertyName} is required and must be a wallet address.`\n : undefined;\n };\n};\n\nexport const validateTransactionId = (\n propertyName: string,\n): FormValidationFunction => {\n return (v: string) => {\n return v.trim() === '' || !ARWEAVE_TX_REGEX.test(v)\n ? `${propertyName} is required and must be a valid Arweave transaction ID.`\n : undefined;\n };\n};\n\nexport const validateIOAmount = (\n propertyName: string,\n ticker: string,\n min: number,\n max?: number,\n): FormValidationFunction => {\n return (v: string) => {\n const value = +v;\n\n if (max) {\n if (isNaN(value)) {\n return `${propertyName} must be a number.`;\n } else if (max <= min && value < min) {\n return `${propertyName} must be a number >= ${min} ${ticker}.`;\n }\n\n return value < min || value > max\n ? `${propertyName} must be a number from ${min} to ${max} ${ticker}.`\n : undefined;\n }\n return value < min || isNaN(value)\n ? `${propertyName} must be a number >= ${min} ${ticker}.`\n : undefined;\n };\n};\n\nexport const validateNumberRange = (\n propertyName: string,\n min: number,\n max: number,\n): FormValidationFunction => {\n return (v: string) => {\n const value = +v;\n\n return v.length == 0 || value < min || value > max || isNaN(value)\n ? `${propertyName} must be a number from ${min} to ${max}.`\n : undefined;\n };\n};\n\nexport const validateUnstakeAmount = (\n propertyName: string,\n ticker: string,\n currentStake: number,\n minDelegatedStake: number,\n): FormValidationFunction => {\n return (v: string) => {\n const value = +v;\n\n if (isNaN(value) || v.length === 0) {\n return `${propertyName} must be a number.`;\n }\n\n if (value < 1) {\n return `${propertyName} must be at least 1 ${ticker}.`;\n }\n\n if (value > currentStake) {\n return `${propertyName} cannot be greater than your current stake of ${currentStake} ${ticker}.`;\n }\n\n if (\n currentStake - value < minDelegatedStake &&\n value != minDelegatedStake &&\n value != currentStake\n ) {\n return `Withdrawing this amount will put you below the gateway's minimum stake of ${minDelegatedStake} ${ticker}. You can either: withdraw a smaller amount so your remaining stake is above the minimum - or - withdraw your full delegated stake.`;\n }\n\n return undefined;\n };\n};\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","import lottie from 'lottie-web';\nexport { default as LottiePlayer } from 'lottie-web';\nimport React, { useState, useRef, useEffect } from 'react';\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar _excluded$1 = [\"animationData\", \"loop\", \"autoplay\", \"initialSegment\", \"onComplete\", \"onLoopComplete\", \"onEnterFrame\", \"onSegmentStart\", \"onConfigReady\", \"onDataReady\", \"onDataFailed\", \"onLoadedImages\", \"onDOMLoaded\", \"onDestroy\", \"lottieRef\", \"renderer\", \"name\", \"assetsPath\", \"rendererSettings\"];\nvar useLottie = function useLottie(props, style) {\n var animationData = props.animationData,\n loop = props.loop,\n autoplay = props.autoplay,\n initialSegment = props.initialSegment,\n onComplete = props.onComplete,\n onLoopComplete = props.onLoopComplete,\n onEnterFrame = props.onEnterFrame,\n onSegmentStart = props.onSegmentStart,\n onConfigReady = props.onConfigReady,\n onDataReady = props.onDataReady,\n onDataFailed = props.onDataFailed,\n onLoadedImages = props.onLoadedImages,\n onDOMLoaded = props.onDOMLoaded,\n onDestroy = props.onDestroy;\n props.lottieRef;\n props.renderer;\n props.name;\n props.assetsPath;\n props.rendererSettings;\n var rest = _objectWithoutProperties(props, _excluded$1);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n animationLoaded = _useState2[0],\n setAnimationLoaded = _useState2[1];\n var animationInstanceRef = useRef();\n var animationContainer = useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n var play = function play() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n var stop = function stop() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n var pause = function pause() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n var setSpeed = function setSpeed(speed) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n var goToAndPlay = function goToAndPlay(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n var goToAndStop = function goToAndStop(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n var setDirection = function setDirection(direction) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n var playSegments = function playSegments(segments, forceFlag) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n var setSubframe = function setSubframe(useSubFrames) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n var getDuration = function getDuration(inFrames) {\n var _a;\n return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames);\n };\n /**\n * Destroy animation\n */\n var destroy = function destroy() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n var loadAnimation = function loadAnimation() {\n var forcedConfigs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, {\n container: animationContainer.current\n });\n // Save the animation instance\n animationInstanceRef.current = lottie.loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n useEffect(function () {\n var onUnmount = loadAnimation();\n // Clean up on unmount\n return function () {\n return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n useEffect(function () {\n var partialListeners = [{\n name: \"complete\",\n handler: onComplete\n }, {\n name: \"loopComplete\",\n handler: onLoopComplete\n }, {\n name: \"enterFrame\",\n handler: onEnterFrame\n }, {\n name: \"segmentStart\",\n handler: onSegmentStart\n }, {\n name: \"config_ready\",\n handler: onConfigReady\n }, {\n name: \"data_ready\",\n handler: onDataReady\n }, {\n name: \"data_failed\",\n handler: onDataFailed\n }, {\n name: \"loaded_images\",\n handler: onLoadedImages\n }, {\n name: \"DOMLoaded\",\n handler: onDOMLoaded\n }, {\n name: \"destroy\",\n handler: onDestroy\n }];\n var listeners = partialListeners.filter(function (listener) {\n return listener.handler != null;\n });\n if (!listeners.length) {\n return;\n }\n var deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n function (listener) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return function () {\n deregisterList.forEach(function (deregister) {\n return deregister();\n });\n };\n }, [onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy]);\n /**\n * Build the animation view\n */\n var View = /*#__PURE__*/React.createElement(\"div\", _objectSpread2({\n style: style,\n ref: animationContainer\n }, rest));\n return {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainer,\n animationLoaded: animationLoaded,\n animationItem: animationInstanceRef.current\n };\n};\n\n// helpers\nfunction getContainerVisibility(container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n top = _container$getBoundin.top,\n height = _container$getBoundin.height;\n var current = window.innerHeight - top;\n var max = window.innerHeight + height;\n return current / max;\n}\nfunction getContainerCursorPosition(container, cursorX, cursorY) {\n var _container$getBoundin2 = container.getBoundingClientRect(),\n top = _container$getBoundin2.top,\n left = _container$getBoundin2.left,\n width = _container$getBoundin2.width,\n height = _container$getBoundin2.height;\n var x = (cursorX - left) / width;\n var y = (cursorY - top) / height;\n return {\n x: x,\n y: y\n };\n}\nvar useInitInteractivity = function useInitInteractivity(_ref) {\n var wrapperRef = _ref.wrapperRef,\n animationItem = _ref.animationItem,\n mode = _ref.mode,\n actions = _ref.actions;\n useEffect(function () {\n var wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n var scrollModeHandler = function scrollModeHandler() {\n var assignedSegment = null;\n var scrollHandler = function scrollHandler() {\n var currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref2) {\n var visibility = _ref2.visibility;\n return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1];\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" && action.visibility && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return function () {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n var cursorModeHandler = function cursorModeHandler() {\n var handleCursor = function handleCursor(_x, _y) {\n var x = _x;\n var y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n var pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref3) {\n var position = _ref3.position;\n if (position && Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n }\n if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n var mouseMoveHandler = function mouseMoveHandler(ev) {\n handleCursor(ev.clientX, ev.clientY);\n };\n var mouseOutHandler = function mouseOutHandler() {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return function () {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n};\nvar useLottieInteractivity = function useLottieInteractivity(_ref4) {\n var actions = _ref4.actions,\n mode = _ref4.mode,\n lottieObj = _ref4.lottieObj;\n var animationItem = lottieObj.animationItem,\n View = lottieObj.View,\n animationContainerRef = lottieObj.animationContainerRef;\n useInitInteractivity({\n actions: actions,\n animationItem: animationItem,\n mode: mode,\n wrapperRef: animationContainerRef\n });\n return View;\n};\n\nvar _excluded = [\"style\", \"interactivity\"];\nvar Lottie = function Lottie(props) {\n var _a, _b, _c;\n var style = props.style,\n interactivity = props.interactivity,\n lottieProps = _objectWithoutProperties(props, _excluded);\n /**\n * Initialize the 'useLottie' hook\n */\n var _useLottie = useLottie(lottieProps, style),\n View = _useLottie.View,\n play = _useLottie.play,\n stop = _useLottie.stop,\n pause = _useLottie.pause,\n setSpeed = _useLottie.setSpeed,\n goToAndStop = _useLottie.goToAndStop,\n goToAndPlay = _useLottie.goToAndPlay,\n setDirection = _useLottie.setDirection,\n playSegments = _useLottie.playSegments,\n setSubframe = _useLottie.setSubframe,\n getDuration = _useLottie.getDuration,\n destroy = _useLottie.destroy,\n animationContainerRef = _useLottie.animationContainerRef,\n animationLoaded = _useLottie.animationLoaded,\n animationItem = _useLottie.animationItem;\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n useEffect(function () {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndPlay: goToAndPlay,\n goToAndStop: goToAndStop,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\"\n });\n};\n\nexport { Lottie as default, useLottie, useLottieInteractivity };\n//# sourceMappingURL=index.es.js.map\n","import Lottie from 'lottie-react';\nimport arioLoading from '../../animations/ario-spinner.json';\nimport BaseModal from './BaseModal';\n\nconst BlockingMessageModal = ({\n onClose,\n message,\n}: {\n onClose: () => void;\n message: string;\n}) => {\n return (\n \n
\n
\n \n
\n
{message}
\n
\n
\n );\n};\n\nexport default BlockingMessageModal;\n","import { ReactNode } from 'react';\nimport Button, { ButtonType } from '../Button';\nimport { SuccessCheck } from '../icons';\nimport BaseModal from './BaseModal';\n\nconst SuccessModal = ({\n onClose,\n title,\n bodyText,\n}: {\n onClose: () => void;\n title: string;\n bodyText: ReactNode;\n}) => {\n return (\n \n
\n
\n \n
\n
{title}
\n { typeof bodyText === 'string' ?
{bodyText}
: bodyText }\n
\n \n
\n
\n
\n );\n};\n\nexport default SuccessModal;\n"],"names":["props","errorMessage","tooltipPadding","marginBottom","propertyName","min","max","v","ticker","value","currentStake","minDelegatedStake","flag","type","sources","destination","len","i","attr","sourcePrototype","object","prop","prototype","ProxyFunction","AudioController","audioFactory","audio","rateValue","assetPath","createRegularArray","arr","createTypedArrayFactory","obj","propertyNames","val","tOfVal","absArr","element","currentTime","totalTime","frameMultiplier","currentLoop","totalLoops","firstFrame","totalFrames","target","nativeError","_count","f","h","t","s","r","g","b","d","color","offset","hsv","colorMap","hex","_counterId","processes","path","workerFn","data","createWorker","fn","blob","url","completeLayers","layers","comps","layerData","maskProps","jLen","j","kLen","k","convertPathsToAbsoluteValues","findCompLayers","completeShapes","completeText","completeChars","chars","assets","findComp","id","comp","checkVersion","minimum","animVersionString","animVersion","updateTextLayer","textLayer","iterateLayers","animationData","minimumVersion","charData","pathData","iterateShapes","shapes","completeClosingShapes","completeData","checkColors","checkText","checkChars","checkPathProperties","checkShapes","moduleOb","_workerSelf","dataFunctionManager","formatResponse","xhr","contentTypeHeader","response","callback","errorCallback","err","e","workerInstance","event","process","createProcess","onComplete","onError","canvas","ctx","assetData","imagePath","assetsPath","testImageLoaded","img","intervalId","box","createImageData","getAssetsPath","ob","proxyImage","createImgData","createFootageData","footageData","loadAssets","cb","setPath","setAssetsPath","getAsset","setCacheType","elementHelper","eventName","callbacks","args","parsePayloadLines","payload","keys","keysCount","lines","line","markers","_markers","_marker","markerData","registerComposition","_thisProjectFunction","name","key","animType","params","RendererClass","wrapperAttributes","wrapper","loop","autoplay","prerender","newLayers","expressionsPlugin","segments","segment","segmentPath","animData","error","marker","markerName","isFrame","numValue","nextValue","_isComplete","pendingFrame","end","init","isLooping","documentData","index","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","registerAnimation","setupAnimation","lenAnims","animations","loadAnimation","setSpeed","animation","setDirection","play","resume","nowTime","elapsedTime","first","pause","stop","togglePause","destroy","animElements","standalone","body","div","setVolume","mute","unmute","searchAnimations","resize","goToAndStop","freeze","unfreeze","getRegisteredAnimations","getBezierEasing","beziers","a","c","nm","str","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","float32ArraySupported","A","aA1","aA2","B","C","aT","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","calcBezier","currentSlope","aGuessT","points","x","mY1","mY2","kSampleStepSize","mSampleValues","intervalStart","currentSample","lastSample","initialSlope","_double","initialLength","_create","_release","_length","_maxLength","pool","release","create","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","z1","z2","z3","dist1","dist2","dist3","diffDist","curveSegments","addedLength","point","lastPoint","lengthData","pt3","ptCoord","perc","pt1","pt4","pt2","ptDistance","getSegmentsLength","shapeData","segmentsLength","closed","pathV","pathO","pathI","lengths","totalLength","getBezierLength","BezierData","length","PointData","partial","storedData","bezierName","bezierData","getDistancePerc","percents","initPos","lPerc","lengthPos","dir","getPointInSegment","percent","u1","t1","ptX","ptY","getNewSegment","startPerc","endPerc","u0","t0","frameNum","caching","offsetTime","newValue","iterationIndex","nextKeyData","keyData","keyframeMetadata","ind","nextKeyTime","fnc","keyTime","distanceInLine","segmentPerc","quatEnd","endValue","time","quatStart","outX","outY","inX","inY","keyValue","out","ax","ay","az","aw","bx","by","bz","bw","cosom","scale0","omega","sinom","scale1","quat","qx","qy","qz","qw","heading","attitude","bank","values","w","c1","c2","c3","s1","s2","s3","y","z","endTime","renderResult","multipliedValue","finalValue","effectFunction","mult","elem","container","to","ti","arrLen","getProp","p","pos","replace","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","shapePath","clone","shape","cloned","factory","shapeCollection","initFrame","kf","keyPropS","isHold","keyPropE","previousValue","lastFrame","shapesEqual","shape1","shape2","setVValue","resetShape","addEffect","ShapeProperty","interpolateShape","processEffectsSequence","interpolateShapeCurrentTime","KeyframedShapeProperty","cPoint","EllShapePropertyFactory","s0","_v","p1","_cw","p0","StarShapePropertyFactory","numPts","longFlag","longPerimSegment","longRad","shortPerimSegment","shortRad","currentAng","rad","roundness","longRound","shortRound","perimSegment","oy","angle","RectShapePropertyFactory","v0","v1","round","dataProp","getShapeProp","getConstructorFunction","getKeyframedConstructorFunction","_cos","_sin","_tan","_rnd","rotate","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","sy","skew","skewFromAxis","sz","setTransform","l","m","n","o","tz","tx","ty","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_p","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","equals","matr","cloneFromProps","determinant","inverseMatrix","inversePoint","pt","inversePoints","pts","retPts","applyToPointStringified","cssValue","roundMatrixProperty","reset","scale","translate","applyToPoint","applyToX","applyToY","applyToZ","applyToPointArray","applyToTriplePoints","toCSS","to2dCSS","getInverseMatrix","isIdentity","href","prefix","plugin","variable","vars","pair","modifiers","registerModifier","getModifier","shapeLength","totalModifierLength","shapeSegments","segmentOb","shapeS","shapeE","pathsData","_isFirstFrame","_s","shapePaths","totalShapeLength","localShapeCollection","edges","newShapesData","lastShapeInCollection","lastShape","newPaths","newShape","shapeSegment","segmentCount","currentLengthData","segmentLength","amount","pathLength","centerPoint","clonedPath","applyToMatrix","mat","_mdf","processKeys","forceRender","frameRate","v2","px","py","addDynamicProperty","TransformProperty","pMatrix","rMatrix","sMatrix","inv","scaleX","scaleY","elemsData","elements","newElements","renderFlag","hasReloaded","copies","group","cont","offsetModulo","iteration","roundOffset","itemsTransform","items","rProps","sProps","pProps","currentV","currentO","currentI","distance","closerV","newPosPerc","rd","delta","p3","linearize","coeffx","coeffy","denom","tcusp","square","root","p10","p20","p21","p12","bez","bounds","t2","split","depth","tolerance","intersections","maxRecursion","d1s","d2s","other","nextIndex","start1","end1","v3","start2","v4","end2","outputBezier","direction","amplitude","outAmplitude","inAmplitude","cur","prevIndex","frequency","pointType","nextPoint","nextDist","prevDist","dist","count","p1a","p1b","p2b","p2a","seg1","seg2","lineJoin","miterLimit","angleIn","center","angleOut","tan","radius","intersection","outa","outb","intersect","flex","left","right","mid","inputBezier","multiSegments","lastSeg","multiSegment","fontData","styles","fWeight","fStyle","styleName","maxWaitingTime","combinedCharacters","BLACK_FLAG_CODE_POINT","CANCEL_TAG_CODE_POINT","A_TAG_CODE_POINT","Z_TAG_CODE_POINT","VARIATION_SELECTOR_16_CODE_POINT","ZERO_WIDTH_JOINER_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","parentNode","node","width","loadedCount","createHelper","def","engine","fontProps","tHelper","tCanvasHelper","measure","text","helper","addFonts","defs","fontArr","_pendingFonts","shouldLoadFont","loadedSelector","sc","addChars","_char","style","_char2","doubleSize","singleSize","getFontByName","getCodePoint","string","codePoint","second","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isVariationSelector","isRegionalCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","Font","fontPrototype","component","num","blendModeEnums","mode","effects","effectItem","eff","expressionsInterfaces","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","effectsInterface","globalData","isVisible","FootageInterface","timeRemapped","totalVolume","volumeValue","layer","pInterface","parentName","hierarchy","pathValue","fontsContainer","finalMat","localMat","lmat","localOp","transformEffects","transforms","ptNew","properties","currentMasks","layerId","maskType","maskRef","rect","filterID","expansor","feMorph","mask","isFirstFrame","pathNodes","viewData","pathString","pathShapeValue","createFilter","createAlphaToLuminanceFilter","filId","skipCoordinates","fil","feColorMatrix","source","layerElementParent","gg","cp","clipId","cpGroup","matteType","masker","useElement","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","_prototype","position","shouldBreakProcess","transformers","level","renderer","styleOb","cLength","diff","gradientId","gfill","stops","maskElement","opacityId","maskId","opFill","_o","_i","shapeString","_identityMatrix","_matrixHelper","createRenderFunction","itemData","lvl","lLen","iterations","redraw","paths","pathStringTransformed","styleData","styleElem","attr1","attr2","cValues","oValues","tempShapes","areAnimated","pathElement","GradientConstructor","elementData","transformProperty","ownTransformers","shapeProperty","ownStyles","ownModifiers","itemsData","render","currentTransform","modifier","animatedContent","sw","fc","updated","currentValue","currentIndex","_finalValue","textKeys","charactersArray","shouldCombine","shouldCombineNext","currentChars","letters","currentSize","currentPos","currentLine","lineWidths","lineWidth","maxLineWidth","trackingOffset","finalText","lastSpaceIndex","fontManager","newLineFlag","boxWidth","boxHeight","currentHeight","uncollapsedSpaces","currentChar","anchorGrouping","animators","indexes","animatorData","based","letterData","currentInd","dData","_canResize","_fontValue","floor","TextSelectorPropFactory","easer","tot","smoothness","threshold","newCharsFlag","divisor","textAnimatorAnimatables","animatorProps","textData","renderType","lettersChangedFlag","matrixHelper","pathInfo","currentLength","segmentInd","pointInd","currentPoint","partialLength","firstLine","initPathPos","initSegmentInd","initPointInd","letterM","letterP","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","lastIndex","isNewLine","yPos","alignment","animatorOffset","yOff","offf","xPos","elemOpacity","tanAngle","prevPoint","rot","renderedLettersCount","letterValue","letterO","letterSw","letterSc","letterFc","shapeStr","lineNumber","textArray","textContents","currentTextContent","shapeItem","usesGlyphs","tElement","justify","textContent","tSpan","cachedSpansLength","childSpan","glyphElement","glyph","singleShape","textBox","renderedLetter","renderedLetters","elementIndex","matteElement","matteMask","newElement","elems","animationItem","config","ariaLabel","titleElement","titleId","descElement","descId","sequence","lumaBuffer","lumaBufferCtx","svg","_svg","createLumaSvgFilter","getLuma","height","filterManager","Effect","effect","hasMasks","bufferCanvas","canvasContext","bufferCanvas2","blendModeValue","bufferCtx","buffer","styledShape","transformsManager","prevViewData","shouldRender","ownTransforms","parentTransform","groupTransform","currentStyle","nodes","isMain","shapeNodes","groupTransformMat","opacity","grd","hasFill","hasStroke","cnt","commandsCounter","pathArr","commands","lastFill","lastStroke","lastStrokeW","imgRel","imgW","imgH","canvasRel","par","widthCrop","heightCrop","op","containerStyle","origin","elementWidth","elementHeight","elementRel","animationRel","fillType","newLength","currentContext","prevStack","forceRestore","newStack","currentStack","trProps","currentOpacity","transformedElementStyle","matrixValue","item","vPoint","oPoint","nextIPoint","nextVPoint","boundingBox","b2ac","widthProperty","kfw","tempBoundingBox","changed","shapeStyle","shapeTransform","textColor","innerElemStyle","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","margin","svgTransform","perspectiveStyle","perspective","mTransf","mag","diffVector","mRotationX","lookDir","lookLengthOnXZ","mRotationY","hasMatrixChanged","matValue","newDOMElement","nextDOMElement","tmpDOMElement","perspectiveElem","currentContainer","lastThreeDContainerData","nextElement","resizerElem","cWidth","cHeight","floatingContainer","_thisLayerFunction","overflow","significance","nodecrypto","options","shortseed","mixkey","flatten","seed","tostring","autoseed","prng","is_math_call","state","copy","arc4","rngname","ARC4","keylen","me","typ","result","stringseed","smear","global","browser","plugins","BMMath","tOfV","tOfA","lenA","retArr","tOfB","lenB","mm","arr1","arr2","vec","q","tMin","tMax","value1","value2","_tMin","rnd","rndm","inVertexPoint","inTangents","arrPlaceholder","outVertexPoint","outTangents","_value","lenWiggle","iWiggle","addedAmps","amp","periods","freq","duration","elem1","elem2","fVec","pitch","val1","val2","lenKey","iKey","obKey","fr","fps","framesPerSecond","initExpressions","stackCount","registers","registerExpressionProperty","expression","MaskInterface","MaskManager","maskManager","maskFunction","_masksInterfaces","expressionValue","property","valueProp","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","arrValue","_thisFunction","_px","_py","_pz","getMatrix","toWorldMat","propMatrix","transformMat","toWorldVec","toWorld","fromWorldVec","fromWorld","applyPoint","invertPoint","fromComp","_registerMaskInterface","_registerEffectsInterface","sampleImage","transformInterface","interfaceFunction","parentPropertyGroup","propertyGroup","_propertyGroup","createEffectsInterface","effectElements","groupInterface","createGroupInterface","view","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","interfaces","iterateElements","transformInterfaceFactory","content","contentsInterfaceFactory","addPropertyToDashOb","dashOb","_dashPropertyGroup","_interfaceFunction","_sourceText","stringValue","outlineInterfaceFactory","currentPropertyName","currentProperty","searchProperty","propertyNameIndex","dataInterfaceFactory","getValueAtTime","getSpeedAtTime","speed","getVelocityAtTime","velocity","setGroupProperty","keyframes","lastKeyFrame","currentFrame","cycleDuration","firstKeyFrame","initV","endV","repeats","ret","lastValue","nextLastValue","current","firstValue","nextFirstValue","smooth","samples","endFrame","sampleFrequency","sampleValue","getTransformValueAtTime","anchor","rotation","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformProperty","propertyGetProp","loopOut","loopIn","getShapeValueAtTime","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","accumulatedLength","initIndex","endIndex","xLength","yLength","magnitude","propertyGetShapeProp","trims","newData","isKeyframed","hasExpressions","searchExpressions","feMerge","ins","feMergeNode","filter","colorBlack","colorWhite","elemChildren","groupPath","units","dasharrayValue","feComponentTransfer","feFuncR","feFuncG","feFuncB","color1","color2","color3","inputBlack","inputWhite","gamma","outputBlack","outputWhite","outputDelta","inputDelta","table","colorValue","globalFilterSize","filterSize","feGaussianBlur","feOffset","feFlood","feComposite","col","filterElem","children","useElem","symbolId","symbol","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","effectsManager","isUniformScale","scaleWidth","scaleHeight","skewAxis","_","_e","_x","_r","_arr","_n","_d","enumerableOnly","symbols","sym","excluded","sourceKeys","sourceSymbolKeys","minLen","input","hint","prim","res","arg","useLottie","initialSegment","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","rest","_useState","_useState2","animationLoaded","setAnimationLoaded","animationInstanceRef","animationContainer","_a","goToAndPlay","playSegments","forceFlag","setSubframe","useSubFrames","getDuration","inFrames","forcedConfigs","onUnmount","partialListeners","listeners","listener","deregisterList","deregister","View","_container$getBoundin","top","cursorX","cursorY","_container$getBoundin2","useInitInteractivity","_ref","wrapperRef","actions","scrollModeHandler","assignedSegment","scrollHandler","currentPercent","action","_ref2","visibility","frameToGo","cursorModeHandler","handleCursor","_y","_ref3","xPercent","yPercent","mouseMoveHandler","mouseOutHandler","useLottieInteractivity","_ref4","lottieObj","animationContainerRef","Lottie","_b","_c","interactivity","lottieProps","_useLottie","onClose","message","title","bodyText"],"mappings":"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","x_google_ignoreList":[4,5]} \ No newline at end of file +{"version":3,"file":"SuccessModal-B5bjpxfT.js","sources":["../../src/components/icons/form_error.svg?react","../../src/components/icons/success_check.svg?react","../../src/components/forms/ErrorMessageIcon.tsx","../../src/components/forms/validation.ts","../../node_modules/lottie-web/build/player/lottie.js","../../node_modules/lottie-react/build/index.es.js","../../src/components/modals/BlockingMessageModal.tsx","../../src/components/modals/SuccessModal.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgFormError = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 18, height: 18, viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \" \", clipPath: \"url(#clip0_2062_980)\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M9 16.5C13.1421 16.5 16.5 13.1421 16.5 9C16.5 4.85786 13.1421 1.5 9 1.5C4.85786 1.5 1.5 4.85786 1.5 9C1.5 13.1421 4.85786 16.5 9 16.5Z\", stroke: \"#DB4354\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_2\", d: \"M9 12V9\", stroke: \"#DB4354\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_3\", d: \"M9 6H9.0075\", stroke: \"#DB4354\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_2062_980\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 18, height: 18, fill: \"white\" }))));\nexport default SvgFormError;\n","import * as React from \"react\";\nconst SvgSuccessCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 32, height: 32, viewBox: \"0 0 32 32\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Frame\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M5.13359 11.4941C4.93898 10.6175 4.96886 9.7059 5.22047 8.8439C5.47207 7.9819 5.93725 7.19737 6.57288 6.56308C7.20851 5.92878 7.994 5.46524 8.85653 5.21544C9.71906 4.96564 10.6307 4.93767 11.5069 5.13411C11.9892 4.37985 12.6536 3.75913 13.4389 3.32916C14.2241 2.8992 15.105 2.67383 16.0003 2.67383C16.8955 2.67383 17.7764 2.8992 18.5617 3.32916C19.3469 3.75913 20.0113 4.37985 20.4936 5.13411C21.3711 4.93681 22.2844 4.96466 23.1483 5.21507C24.0122 5.46547 24.7987 5.9303 25.4347 6.56632C26.0707 7.20234 26.5356 7.98888 26.786 8.85278C27.0364 9.71669 27.0642 10.6299 26.8669 11.5074C27.6212 11.9897 28.2419 12.6541 28.6719 13.4394C29.1018 14.2246 29.3272 15.1055 29.3272 16.0008C29.3272 16.8961 29.1018 17.7769 28.6719 18.5622C28.2419 19.3474 27.6212 20.0118 26.8669 20.4941C27.0634 21.3703 27.0354 22.282 26.7856 23.1445C26.5358 24.007 26.0723 24.7925 25.438 25.4282C24.8037 26.0638 24.0191 26.529 23.1571 26.7806C22.2951 27.0322 21.3836 27.0621 20.5069 26.8674C20.0253 27.6246 19.3604 28.248 18.5738 28.6799C17.7872 29.1118 16.9043 29.3382 16.0069 29.3382C15.1096 29.3382 14.2267 29.1118 13.4401 28.6799C12.6535 28.248 11.9886 27.6246 11.5069 26.8674C10.6307 27.0639 9.71906 27.0359 8.85653 26.7861C7.994 26.5363 7.20851 26.0728 6.57288 25.4385C5.93725 24.8042 5.47207 24.0197 5.22047 23.1577C4.96886 22.2957 4.93898 21.3841 5.13359 20.5074C4.37353 20.0264 3.74748 19.361 3.31366 18.5731C2.87983 17.7851 2.65234 16.9003 2.65234 16.0008C2.65234 15.1013 2.87983 14.2164 3.31366 13.4285C3.74748 12.6406 4.37353 11.9751 5.13359 11.4941Z\", stroke: \"url(#paint0_linear_1391_2499)\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector_2\", d: \"M12 16.0007L14.6667 18.6673L20 13.334\", stroke: \"url(#paint1_linear_1391_2499)\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"paint0_linear_1391_2499\", x1: 4.7627, y1: 23.7247, x2: 29.5913, y2: 23.1188, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#F7C3A1\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.52, stopColor: \"#EBAEC6\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#DF9BE8\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"paint1_linear_1391_2499\", x1: 12.6329, y1: 17.5445, x2: 20.0737, y2: 17.2723, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#F7C3A1\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.52, stopColor: \"#EBAEC6\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#DF9BE8\" }))));\nexport default SvgSuccessCheck;\n","import * as Tooltip from '@radix-ui/react-tooltip';\nimport { FormErrorIcon } from '../icons';\n\nconst ErrorMessageIcon = ({\n errorMessage,\n tooltipPadding,\n}: {\n errorMessage: string;\n tooltipPadding?: string;\n}) => {\n const marginBottom = tooltipPadding ? `mb-${tooltipPadding}` : '';\n\n return (\n
\n \n \n \n \n \n \n \n \n
{errorMessage}
\n
\n
\n
\n
\n
\n );\n};\n\nexport default ErrorMessageIcon;\n","import { ARWEAVE_TX_REGEX, FQDN_REGEX } from '@ar.io/sdk/web';\n\n/* Higher-order functions that return a FormValidationFunction for use with FormRowDefs */\n\nexport type FormValidationFunction = (v: string) => string | undefined;\n\nexport const validateString = (\n propertyName: string,\n min: number,\n max: number,\n): FormValidationFunction => {\n return (v: string) => {\n return v.trim().length < min || v.trim().length > max\n ? `${propertyName} is required and must be ${min}-${max} characters in length.`\n : undefined;\n };\n};\n\nexport const validateDomainName = (\n propertyName: string,\n): FormValidationFunction => {\n return (v: string) => {\n return v.trim() === '' || !FQDN_REGEX.test(v)\n ? `${propertyName} is required and must be a valid domain name.`\n : undefined;\n };\n};\n\nexport const validateWalletAddress = (\n propertyName: string,\n): FormValidationFunction => {\n return (v: string) => {\n return v.trim() === '' || !ARWEAVE_TX_REGEX.test(v)\n ? `${propertyName} is required and must be a wallet address.`\n : undefined;\n };\n};\n\nexport const validateTransactionId = (\n propertyName: string,\n): FormValidationFunction => {\n return (v: string) => {\n return v.trim() === '' || !ARWEAVE_TX_REGEX.test(v)\n ? `${propertyName} is required and must be a valid Arweave transaction ID.`\n : undefined;\n };\n};\n\nexport const validateIOAmount = (\n propertyName: string,\n ticker: string,\n min: number,\n max?: number,\n): FormValidationFunction => {\n return (v: string) => {\n const value = +v;\n\n if (max) {\n if (isNaN(value)) {\n return `${propertyName} must be a number.`;\n } else if (max <= min && value < min) {\n return `${propertyName} must be a number >= ${min} ${ticker}.`;\n }\n\n return value < min || value > max\n ? `${propertyName} must be a number from ${min} to ${max} ${ticker}.`\n : undefined;\n }\n return value < min || isNaN(value)\n ? `${propertyName} must be a number >= ${min} ${ticker}.`\n : undefined;\n };\n};\n\nexport const validateNumberRange = (\n propertyName: string,\n min: number,\n max: number,\n): FormValidationFunction => {\n return (v: string) => {\n const value = +v;\n\n return v.length == 0 || value < min || value > max || isNaN(value)\n ? `${propertyName} must be a number from ${min} to ${max}.`\n : undefined;\n };\n};\n\nexport const validateUnstakeAmount = (\n propertyName: string,\n ticker: string,\n currentStake: number,\n minDelegatedStake: number,\n): FormValidationFunction => {\n return (v: string) => {\n const value = +v;\n\n if (isNaN(value) || v.length === 0) {\n return `${propertyName} must be a number.`;\n }\n\n if (value < 1) {\n return `${propertyName} must be at least 1 ${ticker}.`;\n }\n\n if (value > currentStake) {\n return `${propertyName} cannot be greater than your current stake of ${currentStake} ${ticker}.`;\n }\n\n if (\n currentStake - value < minDelegatedStake &&\n value != minDelegatedStake &&\n value != currentStake\n ) {\n return `Withdrawing this amount will put you below the gateway's minimum stake of ${minDelegatedStake} ${ticker}. You can either: withdraw a smaller amount so your remaining stake is above the minimum - or - withdraw your full delegated stake.`;\n }\n\n return undefined;\n };\n};\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","import lottie from 'lottie-web';\nexport { default as LottiePlayer } from 'lottie-web';\nimport React, { useState, useRef, useEffect } from 'react';\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar _excluded$1 = [\"animationData\", \"loop\", \"autoplay\", \"initialSegment\", \"onComplete\", \"onLoopComplete\", \"onEnterFrame\", \"onSegmentStart\", \"onConfigReady\", \"onDataReady\", \"onDataFailed\", \"onLoadedImages\", \"onDOMLoaded\", \"onDestroy\", \"lottieRef\", \"renderer\", \"name\", \"assetsPath\", \"rendererSettings\"];\nvar useLottie = function useLottie(props, style) {\n var animationData = props.animationData,\n loop = props.loop,\n autoplay = props.autoplay,\n initialSegment = props.initialSegment,\n onComplete = props.onComplete,\n onLoopComplete = props.onLoopComplete,\n onEnterFrame = props.onEnterFrame,\n onSegmentStart = props.onSegmentStart,\n onConfigReady = props.onConfigReady,\n onDataReady = props.onDataReady,\n onDataFailed = props.onDataFailed,\n onLoadedImages = props.onLoadedImages,\n onDOMLoaded = props.onDOMLoaded,\n onDestroy = props.onDestroy;\n props.lottieRef;\n props.renderer;\n props.name;\n props.assetsPath;\n props.rendererSettings;\n var rest = _objectWithoutProperties(props, _excluded$1);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n animationLoaded = _useState2[0],\n setAnimationLoaded = _useState2[1];\n var animationInstanceRef = useRef();\n var animationContainer = useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n var play = function play() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n var stop = function stop() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n var pause = function pause() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n var setSpeed = function setSpeed(speed) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n var goToAndPlay = function goToAndPlay(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n var goToAndStop = function goToAndStop(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n var setDirection = function setDirection(direction) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n var playSegments = function playSegments(segments, forceFlag) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n var setSubframe = function setSubframe(useSubFrames) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n var getDuration = function getDuration(inFrames) {\n var _a;\n return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames);\n };\n /**\n * Destroy animation\n */\n var destroy = function destroy() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n var loadAnimation = function loadAnimation() {\n var forcedConfigs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, {\n container: animationContainer.current\n });\n // Save the animation instance\n animationInstanceRef.current = lottie.loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n useEffect(function () {\n var onUnmount = loadAnimation();\n // Clean up on unmount\n return function () {\n return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n useEffect(function () {\n var partialListeners = [{\n name: \"complete\",\n handler: onComplete\n }, {\n name: \"loopComplete\",\n handler: onLoopComplete\n }, {\n name: \"enterFrame\",\n handler: onEnterFrame\n }, {\n name: \"segmentStart\",\n handler: onSegmentStart\n }, {\n name: \"config_ready\",\n handler: onConfigReady\n }, {\n name: \"data_ready\",\n handler: onDataReady\n }, {\n name: \"data_failed\",\n handler: onDataFailed\n }, {\n name: \"loaded_images\",\n handler: onLoadedImages\n }, {\n name: \"DOMLoaded\",\n handler: onDOMLoaded\n }, {\n name: \"destroy\",\n handler: onDestroy\n }];\n var listeners = partialListeners.filter(function (listener) {\n return listener.handler != null;\n });\n if (!listeners.length) {\n return;\n }\n var deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n function (listener) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return function () {\n deregisterList.forEach(function (deregister) {\n return deregister();\n });\n };\n }, [onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy]);\n /**\n * Build the animation view\n */\n var View = /*#__PURE__*/React.createElement(\"div\", _objectSpread2({\n style: style,\n ref: animationContainer\n }, rest));\n return {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainer,\n animationLoaded: animationLoaded,\n animationItem: animationInstanceRef.current\n };\n};\n\n// helpers\nfunction getContainerVisibility(container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n top = _container$getBoundin.top,\n height = _container$getBoundin.height;\n var current = window.innerHeight - top;\n var max = window.innerHeight + height;\n return current / max;\n}\nfunction getContainerCursorPosition(container, cursorX, cursorY) {\n var _container$getBoundin2 = container.getBoundingClientRect(),\n top = _container$getBoundin2.top,\n left = _container$getBoundin2.left,\n width = _container$getBoundin2.width,\n height = _container$getBoundin2.height;\n var x = (cursorX - left) / width;\n var y = (cursorY - top) / height;\n return {\n x: x,\n y: y\n };\n}\nvar useInitInteractivity = function useInitInteractivity(_ref) {\n var wrapperRef = _ref.wrapperRef,\n animationItem = _ref.animationItem,\n mode = _ref.mode,\n actions = _ref.actions;\n useEffect(function () {\n var wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n var scrollModeHandler = function scrollModeHandler() {\n var assignedSegment = null;\n var scrollHandler = function scrollHandler() {\n var currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref2) {\n var visibility = _ref2.visibility;\n return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1];\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" && action.visibility && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return function () {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n var cursorModeHandler = function cursorModeHandler() {\n var handleCursor = function handleCursor(_x, _y) {\n var x = _x;\n var y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n var pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref3) {\n var position = _ref3.position;\n if (position && Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n }\n if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n var mouseMoveHandler = function mouseMoveHandler(ev) {\n handleCursor(ev.clientX, ev.clientY);\n };\n var mouseOutHandler = function mouseOutHandler() {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return function () {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n};\nvar useLottieInteractivity = function useLottieInteractivity(_ref4) {\n var actions = _ref4.actions,\n mode = _ref4.mode,\n lottieObj = _ref4.lottieObj;\n var animationItem = lottieObj.animationItem,\n View = lottieObj.View,\n animationContainerRef = lottieObj.animationContainerRef;\n useInitInteractivity({\n actions: actions,\n animationItem: animationItem,\n mode: mode,\n wrapperRef: animationContainerRef\n });\n return View;\n};\n\nvar _excluded = [\"style\", \"interactivity\"];\nvar Lottie = function Lottie(props) {\n var _a, _b, _c;\n var style = props.style,\n interactivity = props.interactivity,\n lottieProps = _objectWithoutProperties(props, _excluded);\n /**\n * Initialize the 'useLottie' hook\n */\n var _useLottie = useLottie(lottieProps, style),\n View = _useLottie.View,\n play = _useLottie.play,\n stop = _useLottie.stop,\n pause = _useLottie.pause,\n setSpeed = _useLottie.setSpeed,\n goToAndStop = _useLottie.goToAndStop,\n goToAndPlay = _useLottie.goToAndPlay,\n setDirection = _useLottie.setDirection,\n playSegments = _useLottie.playSegments,\n setSubframe = _useLottie.setSubframe,\n getDuration = _useLottie.getDuration,\n destroy = _useLottie.destroy,\n animationContainerRef = _useLottie.animationContainerRef,\n animationLoaded = _useLottie.animationLoaded,\n animationItem = _useLottie.animationItem;\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n useEffect(function () {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndPlay: goToAndPlay,\n goToAndStop: goToAndStop,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\"\n });\n};\n\nexport { Lottie as default, useLottie, useLottieInteractivity };\n//# sourceMappingURL=index.es.js.map\n","import Lottie from 'lottie-react';\nimport arioLoading from '../../animations/ario-spinner.json';\nimport BaseModal from './BaseModal';\n\nconst BlockingMessageModal = ({\n onClose,\n message,\n}: {\n onClose: () => void;\n message: string;\n}) => {\n return (\n \n
\n
\n \n
\n
{message}
\n
\n
\n );\n};\n\nexport default BlockingMessageModal;\n","import { ReactNode } from 'react';\nimport Button, { ButtonType } from '../Button';\nimport { SuccessCheck } from '../icons';\nimport BaseModal from './BaseModal';\n\nconst SuccessModal = ({\n onClose,\n title,\n bodyText,\n}: {\n onClose: () => void;\n title: string;\n bodyText: ReactNode;\n}) => {\n return (\n \n
\n
\n \n
\n
{title}
\n { typeof bodyText === 'string' ?
{bodyText}
: bodyText }\n
\n \n
\n
\n
\n );\n};\n\nexport default SuccessModal;\n"],"names":["props","errorMessage","tooltipPadding","marginBottom","propertyName","min","max","v","ticker","value","currentStake","minDelegatedStake","flag","type","sources","destination","len","i","attr","sourcePrototype","object","prop","prototype","ProxyFunction","AudioController","audioFactory","audio","rateValue","assetPath","createRegularArray","arr","createTypedArrayFactory","obj","propertyNames","val","tOfVal","absArr","element","currentTime","totalTime","frameMultiplier","currentLoop","totalLoops","firstFrame","totalFrames","target","nativeError","_count","f","h","t","s","r","g","b","d","color","offset","hsv","colorMap","hex","_counterId","processes","path","workerFn","data","createWorker","fn","blob","url","completeLayers","layers","comps","layerData","maskProps","jLen","j","kLen","k","convertPathsToAbsoluteValues","findCompLayers","completeShapes","completeText","completeChars","chars","assets","findComp","id","comp","checkVersion","minimum","animVersionString","animVersion","updateTextLayer","textLayer","iterateLayers","animationData","minimumVersion","charData","pathData","iterateShapes","shapes","completeClosingShapes","completeData","checkColors","checkText","checkChars","checkPathProperties","checkShapes","moduleOb","_workerSelf","dataFunctionManager","formatResponse","xhr","contentTypeHeader","response","callback","errorCallback","err","e","workerInstance","event","process","createProcess","onComplete","onError","canvas","ctx","assetData","imagePath","assetsPath","testImageLoaded","img","intervalId","box","createImageData","getAssetsPath","ob","proxyImage","createImgData","createFootageData","footageData","loadAssets","cb","setPath","setAssetsPath","getAsset","setCacheType","elementHelper","eventName","callbacks","args","parsePayloadLines","payload","keys","keysCount","lines","line","markers","_markers","_marker","markerData","registerComposition","_thisProjectFunction","name","key","animType","params","RendererClass","wrapperAttributes","wrapper","loop","autoplay","prerender","newLayers","expressionsPlugin","segments","segment","segmentPath","animData","error","marker","markerName","isFrame","numValue","nextValue","_isComplete","pendingFrame","end","init","isLooping","documentData","index","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","registerAnimation","setupAnimation","lenAnims","animations","loadAnimation","setSpeed","animation","setDirection","play","resume","nowTime","elapsedTime","first","pause","stop","togglePause","destroy","animElements","standalone","body","div","setVolume","mute","unmute","searchAnimations","resize","goToAndStop","freeze","unfreeze","getRegisteredAnimations","getBezierEasing","beziers","a","c","nm","str","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","float32ArraySupported","A","aA1","aA2","B","C","aT","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","calcBezier","currentSlope","aGuessT","points","x","mY1","mY2","kSampleStepSize","mSampleValues","intervalStart","currentSample","lastSample","initialSlope","_double","initialLength","_create","_release","_length","_maxLength","pool","release","create","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","z1","z2","z3","dist1","dist2","dist3","diffDist","curveSegments","addedLength","point","lastPoint","lengthData","pt3","ptCoord","perc","pt1","pt4","pt2","ptDistance","getSegmentsLength","shapeData","segmentsLength","closed","pathV","pathO","pathI","lengths","totalLength","getBezierLength","BezierData","length","PointData","partial","storedData","bezierName","bezierData","getDistancePerc","percents","initPos","lPerc","lengthPos","dir","getPointInSegment","percent","u1","t1","ptX","ptY","getNewSegment","startPerc","endPerc","u0","t0","frameNum","caching","offsetTime","newValue","iterationIndex","nextKeyData","keyData","keyframeMetadata","ind","nextKeyTime","fnc","keyTime","distanceInLine","segmentPerc","quatEnd","endValue","time","quatStart","outX","outY","inX","inY","keyValue","out","ax","ay","az","aw","bx","by","bz","bw","cosom","scale0","omega","sinom","scale1","quat","qx","qy","qz","qw","heading","attitude","bank","values","w","c1","c2","c3","s1","s2","s3","y","z","endTime","renderResult","multipliedValue","finalValue","effectFunction","mult","elem","container","to","ti","arrLen","getProp","p","pos","replace","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","shapePath","clone","shape","cloned","factory","shapeCollection","initFrame","kf","keyPropS","isHold","keyPropE","previousValue","lastFrame","shapesEqual","shape1","shape2","setVValue","resetShape","addEffect","ShapeProperty","interpolateShape","processEffectsSequence","interpolateShapeCurrentTime","KeyframedShapeProperty","cPoint","EllShapePropertyFactory","s0","_v","p1","_cw","p0","StarShapePropertyFactory","numPts","longFlag","longPerimSegment","longRad","shortPerimSegment","shortRad","currentAng","rad","roundness","longRound","shortRound","perimSegment","oy","angle","RectShapePropertyFactory","v0","v1","round","dataProp","getShapeProp","getConstructorFunction","getKeyframedConstructorFunction","_cos","_sin","_tan","_rnd","rotate","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","sy","skew","skewFromAxis","sz","setTransform","l","m","n","o","tz","tx","ty","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_p","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","equals","matr","cloneFromProps","determinant","inverseMatrix","inversePoint","pt","inversePoints","pts","retPts","applyToPointStringified","cssValue","roundMatrixProperty","reset","scale","translate","applyToPoint","applyToX","applyToY","applyToZ","applyToPointArray","applyToTriplePoints","toCSS","to2dCSS","getInverseMatrix","isIdentity","href","prefix","plugin","variable","vars","pair","modifiers","registerModifier","getModifier","shapeLength","totalModifierLength","shapeSegments","segmentOb","shapeS","shapeE","pathsData","_isFirstFrame","_s","shapePaths","totalShapeLength","localShapeCollection","edges","newShapesData","lastShapeInCollection","lastShape","newPaths","newShape","shapeSegment","segmentCount","currentLengthData","segmentLength","amount","pathLength","centerPoint","clonedPath","applyToMatrix","mat","_mdf","processKeys","forceRender","frameRate","v2","px","py","addDynamicProperty","TransformProperty","pMatrix","rMatrix","sMatrix","inv","scaleX","scaleY","elemsData","elements","newElements","renderFlag","hasReloaded","copies","group","cont","offsetModulo","iteration","roundOffset","itemsTransform","items","rProps","sProps","pProps","currentV","currentO","currentI","distance","closerV","newPosPerc","rd","delta","p3","linearize","coeffx","coeffy","denom","tcusp","square","root","p10","p20","p21","p12","bez","bounds","t2","split","depth","tolerance","intersections","maxRecursion","d1s","d2s","other","nextIndex","start1","end1","v3","start2","v4","end2","outputBezier","direction","amplitude","outAmplitude","inAmplitude","cur","prevIndex","frequency","pointType","nextPoint","nextDist","prevDist","dist","count","p1a","p1b","p2b","p2a","seg1","seg2","lineJoin","miterLimit","angleIn","center","angleOut","tan","radius","intersection","outa","outb","intersect","flex","left","right","mid","inputBezier","multiSegments","lastSeg","multiSegment","fontData","styles","fWeight","fStyle","styleName","maxWaitingTime","combinedCharacters","BLACK_FLAG_CODE_POINT","CANCEL_TAG_CODE_POINT","A_TAG_CODE_POINT","Z_TAG_CODE_POINT","VARIATION_SELECTOR_16_CODE_POINT","ZERO_WIDTH_JOINER_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","parentNode","node","width","loadedCount","createHelper","def","engine","fontProps","tHelper","tCanvasHelper","measure","text","helper","addFonts","defs","fontArr","_pendingFonts","shouldLoadFont","loadedSelector","sc","addChars","_char","style","_char2","doubleSize","singleSize","getFontByName","getCodePoint","string","codePoint","second","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isVariationSelector","isRegionalCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","Font","fontPrototype","component","num","blendModeEnums","mode","effects","effectItem","eff","expressionsInterfaces","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","effectsInterface","globalData","isVisible","FootageInterface","timeRemapped","totalVolume","volumeValue","layer","pInterface","parentName","hierarchy","pathValue","fontsContainer","finalMat","localMat","lmat","localOp","transformEffects","transforms","ptNew","properties","currentMasks","layerId","maskType","maskRef","rect","filterID","expansor","feMorph","mask","isFirstFrame","pathNodes","viewData","pathString","pathShapeValue","createFilter","createAlphaToLuminanceFilter","filId","skipCoordinates","fil","feColorMatrix","source","layerElementParent","gg","cp","clipId","cpGroup","matteType","masker","useElement","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","_prototype","position","shouldBreakProcess","transformers","level","renderer","styleOb","cLength","diff","gradientId","gfill","stops","maskElement","opacityId","maskId","opFill","_o","_i","shapeString","_identityMatrix","_matrixHelper","createRenderFunction","itemData","lvl","lLen","iterations","redraw","paths","pathStringTransformed","styleData","styleElem","attr1","attr2","cValues","oValues","tempShapes","areAnimated","pathElement","GradientConstructor","elementData","transformProperty","ownTransformers","shapeProperty","ownStyles","ownModifiers","itemsData","render","currentTransform","modifier","animatedContent","sw","fc","updated","currentValue","currentIndex","_finalValue","textKeys","charactersArray","shouldCombine","shouldCombineNext","currentChars","letters","currentSize","currentPos","currentLine","lineWidths","lineWidth","maxLineWidth","trackingOffset","finalText","lastSpaceIndex","fontManager","newLineFlag","boxWidth","boxHeight","currentHeight","uncollapsedSpaces","currentChar","anchorGrouping","animators","indexes","animatorData","based","letterData","currentInd","dData","_canResize","_fontValue","floor","TextSelectorPropFactory","easer","tot","smoothness","threshold","newCharsFlag","divisor","textAnimatorAnimatables","animatorProps","textData","renderType","lettersChangedFlag","matrixHelper","pathInfo","currentLength","segmentInd","pointInd","currentPoint","partialLength","firstLine","initPathPos","initSegmentInd","initPointInd","letterM","letterP","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","lastIndex","isNewLine","yPos","alignment","animatorOffset","yOff","offf","xPos","elemOpacity","tanAngle","prevPoint","rot","renderedLettersCount","letterValue","letterO","letterSw","letterSc","letterFc","shapeStr","lineNumber","textArray","textContents","currentTextContent","shapeItem","usesGlyphs","tElement","justify","textContent","tSpan","cachedSpansLength","childSpan","glyphElement","glyph","singleShape","textBox","renderedLetter","renderedLetters","elementIndex","matteElement","matteMask","newElement","elems","animationItem","config","ariaLabel","titleElement","titleId","descElement","descId","sequence","lumaBuffer","lumaBufferCtx","svg","_svg","createLumaSvgFilter","getLuma","height","filterManager","Effect","effect","hasMasks","bufferCanvas","canvasContext","bufferCanvas2","blendModeValue","bufferCtx","buffer","styledShape","transformsManager","prevViewData","shouldRender","ownTransforms","parentTransform","groupTransform","currentStyle","nodes","isMain","shapeNodes","groupTransformMat","opacity","grd","hasFill","hasStroke","cnt","commandsCounter","pathArr","commands","lastFill","lastStroke","lastStrokeW","imgRel","imgW","imgH","canvasRel","par","widthCrop","heightCrop","op","containerStyle","origin","elementWidth","elementHeight","elementRel","animationRel","fillType","newLength","currentContext","prevStack","forceRestore","newStack","currentStack","trProps","currentOpacity","transformedElementStyle","matrixValue","item","vPoint","oPoint","nextIPoint","nextVPoint","boundingBox","b2ac","widthProperty","kfw","tempBoundingBox","changed","shapeStyle","shapeTransform","textColor","innerElemStyle","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","margin","svgTransform","perspectiveStyle","perspective","mTransf","mag","diffVector","mRotationX","lookDir","lookLengthOnXZ","mRotationY","hasMatrixChanged","matValue","newDOMElement","nextDOMElement","tmpDOMElement","perspectiveElem","currentContainer","lastThreeDContainerData","nextElement","resizerElem","cWidth","cHeight","floatingContainer","_thisLayerFunction","overflow","significance","nodecrypto","options","shortseed","mixkey","flatten","seed","tostring","autoseed","prng","is_math_call","state","copy","arc4","rngname","ARC4","keylen","me","typ","result","stringseed","smear","global","browser","plugins","BMMath","tOfV","tOfA","lenA","retArr","tOfB","lenB","mm","arr1","arr2","vec","q","tMin","tMax","value1","value2","_tMin","rnd","rndm","inVertexPoint","inTangents","arrPlaceholder","outVertexPoint","outTangents","_value","lenWiggle","iWiggle","addedAmps","amp","periods","freq","duration","elem1","elem2","fVec","pitch","val1","val2","lenKey","iKey","obKey","fr","fps","framesPerSecond","initExpressions","stackCount","registers","registerExpressionProperty","expression","MaskInterface","MaskManager","maskManager","maskFunction","_masksInterfaces","expressionValue","property","valueProp","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","arrValue","_thisFunction","_px","_py","_pz","getMatrix","toWorldMat","propMatrix","transformMat","toWorldVec","toWorld","fromWorldVec","fromWorld","applyPoint","invertPoint","fromComp","_registerMaskInterface","_registerEffectsInterface","sampleImage","transformInterface","interfaceFunction","parentPropertyGroup","propertyGroup","_propertyGroup","createEffectsInterface","effectElements","groupInterface","createGroupInterface","view","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","interfaces","iterateElements","transformInterfaceFactory","content","contentsInterfaceFactory","addPropertyToDashOb","dashOb","_dashPropertyGroup","_interfaceFunction","_sourceText","stringValue","outlineInterfaceFactory","currentPropertyName","currentProperty","searchProperty","propertyNameIndex","dataInterfaceFactory","getValueAtTime","getSpeedAtTime","speed","getVelocityAtTime","velocity","setGroupProperty","keyframes","lastKeyFrame","currentFrame","cycleDuration","firstKeyFrame","initV","endV","repeats","ret","lastValue","nextLastValue","current","firstValue","nextFirstValue","smooth","samples","endFrame","sampleFrequency","sampleValue","getTransformValueAtTime","anchor","rotation","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformProperty","propertyGetProp","loopOut","loopIn","getShapeValueAtTime","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","accumulatedLength","initIndex","endIndex","xLength","yLength","magnitude","propertyGetShapeProp","trims","newData","isKeyframed","hasExpressions","searchExpressions","feMerge","ins","feMergeNode","filter","colorBlack","colorWhite","elemChildren","groupPath","units","dasharrayValue","feComponentTransfer","feFuncR","feFuncG","feFuncB","color1","color2","color3","inputBlack","inputWhite","gamma","outputBlack","outputWhite","outputDelta","inputDelta","table","colorValue","globalFilterSize","filterSize","feGaussianBlur","feOffset","feFlood","feComposite","col","filterElem","children","useElem","symbolId","symbol","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","effectsManager","isUniformScale","scaleWidth","scaleHeight","skewAxis","_","_e","_x","_r","_arr","_n","_d","enumerableOnly","symbols","sym","excluded","sourceKeys","sourceSymbolKeys","minLen","input","hint","prim","res","arg","useLottie","initialSegment","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","rest","_useState","_useState2","animationLoaded","setAnimationLoaded","animationInstanceRef","animationContainer","_a","goToAndPlay","playSegments","forceFlag","setSubframe","useSubFrames","getDuration","inFrames","forcedConfigs","onUnmount","partialListeners","listeners","listener","deregisterList","deregister","View","_container$getBoundin","top","cursorX","cursorY","_container$getBoundin2","useInitInteractivity","_ref","wrapperRef","actions","scrollModeHandler","assignedSegment","scrollHandler","currentPercent","action","_ref2","visibility","frameToGo","cursorModeHandler","handleCursor","_y","_ref3","xPercent","yPercent","mouseMoveHandler","mouseOutHandler","useLottieInteractivity","_ref4","lottieObj","animationContainerRef","Lottie","_b","_c","interactivity","lottieProps","_useLottie","onClose","message","title","bodyText"],"mappings":"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","x_google_ignoreList":[4,5]} \ No newline at end of file diff --git a/assets/TableView-B18KJ6xK.js b/assets/TableView---XONMAN.js similarity index 99% rename from assets/TableView-B18KJ6xK.js rename to assets/TableView---XONMAN.js index 32eb7af4..48039cbb 100644 --- a/assets/TableView-B18KJ6xK.js +++ b/assets/TableView---XONMAN.js @@ -1,4 +1,4 @@ -import{r as P,j as _,P as Ce}from"./index-B4O4S1jL.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},o=new Error().stack;o&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[o]="83289331-2c00-4b63-2339-0b72761fe3ee",e._sentryDebugIdIdentifier="sentry-dbid-83289331-2c00-4b63-2339-0b72761fe3ee")}catch{}})();const we=e=>P.createElement("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},P.createElement("g",{id:"Frame"},P.createElement("path",{id:"Vector",d:"M4 10L8 6L12 10",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"}))),Re=e=>P.createElement("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},P.createElement("g",{id:"Frame"},P.createElement("path",{id:"Vector",d:"M4 6L8 10L12 6",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"})));/** +import{r as P,j as _,P as Ce}from"./index-D-aTdIHH.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},o=new Error().stack;o&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[o]="83289331-2c00-4b63-2339-0b72761fe3ee",e._sentryDebugIdIdentifier="sentry-dbid-83289331-2c00-4b63-2339-0b72761fe3ee")}catch{}})();const we=e=>P.createElement("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},P.createElement("g",{id:"Frame"},P.createElement("path",{id:"Vector",d:"M4 10L8 6L12 10",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"}))),Re=e=>P.createElement("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},P.createElement("g",{id:"Frame"},P.createElement("path",{id:"Vector",d:"M4 6L8 10L12 6",stroke:"#7F7F87",strokeLinecap:"round",strokeLinejoin:"round"})));/** * table-core * * Copyright (c) TanStack @@ -20,4 +20,4 @@ import{r as P,j as _,P as Ce}from"./index-B4O4S1jL.js";(function(){try{var e=typ * * @license MIT */function ie(e,o){return e?st(e)?P.createElement(e,o):e:null}function st(e){return ut(e)||typeof e=="function"||at(e)}function ut(e){return typeof e=="function"&&(()=>{const o=Object.getPrototypeOf(e);return o.prototype&&o.prototype.isReactComponent})()}function at(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function gt(e){const o={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[t]=P.useState(()=>({current:rt(o)})),[n,r]=P.useState(()=>t.current.initialState);return t.current.setOptions(i=>({...i,...e,state:{...n,...e.state},onStateChange:l=>{r(l),e.onStateChange==null||e.onStateChange(l)}})),t.current}const ft=({columns:e,data:o,defaultSortingState:t,isLoading:n,noDataFoundText:r="No data found.",onRowClick:i})=>{const[l,s]=P.useState([t]),u=gt({columns:e,data:o,getCoreRowModel:it(),getSortedRowModel:lt(),state:{sorting:l},onSortingChange:s});return _.jsxs(_.Fragment,{children:[_.jsx("div",{className:"overflow-x-auto scrollbar",children:_.jsxs("table",{className:"w-full table-auto border-x border-b border-grey-500",children:[_.jsx("thead",{className:"text-xs text-low",children:u.getHeaderGroups().map(a=>_.jsx("tr",{children:a.headers.map(d=>{const p=d.column.getIsSorted();return _.jsx("th",{className:"py-2 pl-6",children:_.jsxs("button",{className:"flex items-center gap-1 text-left",onClick:()=>{s([{id:d.column.id,desc:p?p!=="desc":d.column.columnDef.sortDescFirst??!0}])},children:[ie(d.column.columnDef.header,d.getContext()),p?p==="desc"?_.jsx(Re,{}):_.jsx(we,{}):_.jsx("div",{className:"w-4"})]})},d.id)})},a.id))}),_.jsx("tbody",{className:"text-sm",children:u.getRowModel().rows.map(a=>_.jsx("tr",{className:`border-t border-grey-500 text-low *:py-4 *:pl-6 ${i?"cursor-pointer":""}`,onClick:i?()=>i(a.original):void 0,children:a.getAllCells().map(d=>_.jsx("td",{children:ie(d.column.columnDef.cell,d.getContext())},d.id))},a.id))})]})}),n&&_.jsx("div",{className:"flex items-center justify-center border-x border-b border-grey-500 px-6 py-4 text-low",children:_.jsx(Ce,{className:"w-full"})}),!n&&u.getRowCount()===0&&_.jsx("div",{className:"flex h-[6.25rem] items-center justify-center border-x border-b border-grey-500 text-low",children:r})]})};export{we as S,ft as T,Re as a,ct as c}; -//# sourceMappingURL=TableView-B18KJ6xK.js.map +//# sourceMappingURL=TableView---XONMAN.js.map diff --git a/assets/TableView-B18KJ6xK.js.map b/assets/TableView---XONMAN.js.map similarity index 99% rename from assets/TableView-B18KJ6xK.js.map rename to assets/TableView---XONMAN.js.map index f413152b..9c5f83a6 100644 --- a/assets/TableView-B18KJ6xK.js.map +++ b/assets/TableView---XONMAN.js.map @@ -1 +1 @@ -{"version":3,"file":"TableView-B18KJ6xK.js","sources":["../../src/components/icons/sort_asc.svg?react","../../src/components/icons/sort_desc.svg?react","../../node_modules/@tanstack/table-core/build/lib/index.mjs","../../node_modules/@tanstack/react-table/build/lib/index.mjs","../../src/components/TableView.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgSortAsc = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Frame\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M4 10L8 6L12 10\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })));\nexport default SvgSortAsc;\n","import * as React from \"react\";\nconst SvgSortDesc = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Frame\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M4 6L8 10L12 6\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })));\nexport default SvgSortDesc;\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys = 'nested.foo.0.bar'\n// const test2: DeepKeys = 'nested.bar'\n\n// const helper = createColumnHelper()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? accessorKey.replace('.', '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _row$getValue;\n const search = filterValue.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = _contextDocument || typeof document !== 'undefined' ? document : null;\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _table$_getPinnedRows, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_table$_getPinnedRows = table._getPinnedRows(position)) == null ? void 0 : _table$_getPinnedRows.map(_ref4 => {\n let {\n id\n } = _ref4;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = memo(position => [table.getRowModel().rows, table.getState().rowPinning[position], position], (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n }, getMemoOptions(table.options, 'debugRows', '_getPinnedRows'));\n table.getTopRows = () => table._getPinnedRows('top');\n table.getBottomRows = () => table._getPinnedRows('bottom');\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n var _facetedRowModel$flat;\n if (!facetedRowModel) return undefined;\n const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);\n if (typeof firstValue === 'undefined') {\n return undefined;\n }\n let facetedMinMaxValues = [firstValue, firstValue];\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value;\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value;\n }\n }\n }\n return facetedMinMaxValues;\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import {\n ColumnDef,\n ColumnSort,\n SortingState,\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useState } from 'react';\nimport Placeholder from './Placeholder';\nimport { SortAsc, SortDesc } from './icons';\n\nconst TableView = ({\n columns,\n data,\n defaultSortingState,\n isLoading,\n noDataFoundText = 'No data found.',\n onRowClick,\n}: {\n columns: ColumnDef[];\n data: T[];\n defaultSortingState: ColumnSort;\n isLoading: boolean;\n noDataFoundText?: string;\n onRowClick?: (row: T) => void;\n}) => {\n const [sorting, setSorting] = useState([defaultSortingState]);\n\n const table = useReactTable({\n columns,\n data,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(), //provide a sorting row model\n state: { sorting },\n onSortingChange: setSorting,\n });\n\n return (\n <>\n
\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => {\n const sortState = header.column.getIsSorted();\n return (\n \n );\n })}\n \n ))}\n \n \n {table.getRowModel().rows.map((row) => {\n return (\n onRowClick(row.original) : undefined\n }\n >\n {row.getAllCells().map((cell) => (\n \n ))}\n \n );\n })}\n \n
\n {\n setSorting([\n {\n id: header.column.id,\n desc: sortState\n ? sortState === 'desc'\n ? false\n : true\n : header.column.columnDef.sortDescFirst ?? true,\n },\n ]);\n }}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {sortState ? (\n sortState === 'desc' ? (\n \n ) : (\n \n )\n ) : (\n
\n )}\n \n
\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n
\n
\n {isLoading && (\n
\n \n
\n )}\n {!isLoading && table.getRowCount() === 0 && (\n
\n {noDataFoundText}\n
\n )}\n \n );\n};\n\nexport default TableView;\n"],"names":["SvgSortAsc","props","reactExports","SvgSortDesc","createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","key","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","children","memo","getDeps","fn","opts","deps","result","depArgs","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","getMemoOptions","tableOptions","debugLevel","onChange","_tableOptions$debugAl","createCell","table","row","columnId","getRenderValue","_cell$getValue","cell","table2","column2","row2","cell2","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","id","accessorFn","originalRow","_result","_column$columns","orderColumns2","_column$columns2","leafColumns","debug","createHeader","options","_options$id","header","leafHeaders","recurseHeader","h","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","acc","i","ColumnFaceting","includesString","filterValue","search","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","min2","max2","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","value","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","sum2","next","nextValue","min","max","extent","mean","leafRows","count2","median","values","mid","nums","a","b","unique","uniqueCount","count","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","orderColumns","grouping","groupedColumnMode","nonGroupingColumns","col","g","ColumnOrdering","position","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","rest","header2","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","e","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","e2","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop2","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","expanded","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_table$_getPinnedRows","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref4","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","isSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","isString","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","options2","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","error","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","columnDefs2","groupingColumnDef","flatColumns","getCoreRowModel","data","accessRows","originalRows","_row$originalSubRows","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","_table$getColumn","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","prev","TableView","defaultSortingState","isLoading","noDataFoundText","onRowClick","setSorting","jsxRuntimeExports","sortState","Placeholder"],"mappings":"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","x_google_ignoreList":[2,3]} \ No newline at end of file +{"version":3,"file":"TableView---XONMAN.js","sources":["../../src/components/icons/sort_asc.svg?react","../../src/components/icons/sort_desc.svg?react","../../node_modules/@tanstack/table-core/build/lib/index.mjs","../../node_modules/@tanstack/react-table/build/lib/index.mjs","../../src/components/TableView.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgSortAsc = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Frame\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M4 10L8 6L12 10\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })));\nexport default SvgSortAsc;\n","import * as React from \"react\";\nconst SvgSortDesc = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Frame\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M4 6L8 10L12 6\", stroke: \"#7F7F87\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })));\nexport default SvgSortDesc;\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys = 'nested.foo.0.bar'\n// const test2: DeepKeys = 'nested.bar'\n\n// const helper = createColumnHelper()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? accessorKey.replace('.', '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _row$getValue;\n const search = filterValue.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = _contextDocument || typeof document !== 'undefined' ? document : null;\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _table$_getPinnedRows, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_table$_getPinnedRows = table._getPinnedRows(position)) == null ? void 0 : _table$_getPinnedRows.map(_ref4 => {\n let {\n id\n } = _ref4;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = memo(position => [table.getRowModel().rows, table.getState().rowPinning[position], position], (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n }, getMemoOptions(table.options, 'debugRows', '_getPinnedRows'));\n table.getTopRows = () => table._getPinnedRows('top');\n table.getBottomRows = () => table._getPinnedRows('bottom');\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n var _facetedRowModel$flat;\n if (!facetedRowModel) return undefined;\n const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);\n if (typeof firstValue === 'undefined') {\n return undefined;\n }\n let facetedMinMaxValues = [firstValue, firstValue];\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value;\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value;\n }\n }\n }\n return facetedMinMaxValues;\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import {\n ColumnDef,\n ColumnSort,\n SortingState,\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useState } from 'react';\nimport Placeholder from './Placeholder';\nimport { SortAsc, SortDesc } from './icons';\n\nconst TableView = ({\n columns,\n data,\n defaultSortingState,\n isLoading,\n noDataFoundText = 'No data found.',\n onRowClick,\n}: {\n columns: ColumnDef[];\n data: T[];\n defaultSortingState: ColumnSort;\n isLoading: boolean;\n noDataFoundText?: string;\n onRowClick?: (row: T) => void;\n}) => {\n const [sorting, setSorting] = useState([defaultSortingState]);\n\n const table = useReactTable({\n columns,\n data,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(), //provide a sorting row model\n state: { sorting },\n onSortingChange: setSorting,\n });\n\n return (\n <>\n
\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => {\n const sortState = header.column.getIsSorted();\n return (\n \n );\n })}\n \n ))}\n \n \n {table.getRowModel().rows.map((row) => {\n return (\n onRowClick(row.original) : undefined\n }\n >\n {row.getAllCells().map((cell) => (\n \n ))}\n \n );\n })}\n \n
\n {\n setSorting([\n {\n id: header.column.id,\n desc: sortState\n ? sortState === 'desc'\n ? false\n : true\n : header.column.columnDef.sortDescFirst ?? true,\n },\n ]);\n }}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {sortState ? (\n sortState === 'desc' ? (\n \n ) : (\n \n )\n ) : (\n
\n )}\n \n
\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n
\n
\n {isLoading && (\n
\n \n
\n )}\n {!isLoading && table.getRowCount() === 0 && (\n
\n {noDataFoundText}\n
\n )}\n \n );\n};\n\nexport default TableView;\n"],"names":["SvgSortAsc","props","reactExports","SvgSortDesc","createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","key","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","children","memo","getDeps","fn","opts","deps","result","depArgs","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","getMemoOptions","tableOptions","debugLevel","onChange","_tableOptions$debugAl","createCell","table","row","columnId","getRenderValue","_cell$getValue","cell","table2","column2","row2","cell2","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","id","accessorFn","originalRow","_result","_column$columns","orderColumns2","_column$columns2","leafColumns","debug","createHeader","options","_options$id","header","leafHeaders","recurseHeader","h","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","acc","i","ColumnFaceting","includesString","filterValue","search","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","min2","max2","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","value","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","sum2","next","nextValue","min","max","extent","mean","leafRows","count2","median","values","mid","nums","a","b","unique","uniqueCount","count","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","orderColumns","grouping","groupedColumnMode","nonGroupingColumns","col","g","ColumnOrdering","position","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","rest","header2","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","e","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","e2","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop2","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","expanded","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_table$_getPinnedRows","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref4","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","isSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","isString","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","options2","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","error","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","columnDefs2","groupingColumnDef","flatColumns","getCoreRowModel","data","accessRows","originalRows","_row$originalSubRows","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","_table$getColumn","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","prev","TableView","defaultSortingState","isLoading","noDataFoundText","onRowClick","setSorting","jsxRuntimeExports","sortState","Placeholder"],"mappings":"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","x_google_ignoreList":[2,3]} \ No newline at end of file diff --git a/assets/formData-Co9zNgOI.js b/assets/formData-5kDyLkJ6.js similarity index 98% rename from assets/formData-Co9zNgOI.js rename to assets/formData-5kDyLkJ6.js index 9f27830c..3fe311a4 100644 --- a/assets/formData-Co9zNgOI.js +++ b/assets/formData-5kDyLkJ6.js @@ -1,2 +1,2 @@ -import{r as s,z as y,U as I,A as M,D as S,F as z,G as D,R as v,J as P,K as B,N as H,Q as U,V as Z,X as R,Y as K,Z as Y,_ as T,j as o}from"./index-B4O4S1jL.js";import{E as q}from"./SuccessModal-CtcgJ46_.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},r=new Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="077db13f-7630-40a1-29ff-b54ad5b243aa",e._sentryDebugIdIdentifier="sentry-dbid-077db13f-7630-40a1-29ff-b54ad5b243aa")}catch{}})();const pe=e=>s.createElement("svg",{width:16,height:12,viewBox:"0 0 16 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},s.createElement("g",{id:"Group"},s.createElement("path",{id:"Vector",d:"M1.77797 11.3339H3.55594C4.53383 11.3339 5.33391 10.5338 5.33391 9.55594V7.77797C5.33391 6.80009 4.53383 6 3.55594 6H1.77797C0.800087 6 0 6.80009 0 7.77797V9.55594C0 10.5338 0.800087 11.3339 1.77797 11.3339Z",fill:"#CACAD6"}),s.createElement("path",{id:"Vector_2",d:"M7.11196 5.99993H8.88993C9.86781 5.99993 10.6679 5.19984 10.6679 4.22196V2.44399C10.6679 1.4661 9.86781 0.666016 8.88993 0.666016H7.11196C6.13407 0.666016 5.33398 1.4661 5.33398 2.44399V4.22196C5.33398 5.19984 6.13407 5.99993 7.11196 5.99993Z",fill:"#CACAD6"}),s.createElement("path",{id:"Vector_3",d:"M14.2239 11.3339H12.4459C11.4681 11.3339 10.668 10.5338 10.668 9.55594V7.77797C10.668 6.80009 11.4681 6 12.4459 6H14.2239C15.2018 6 16.0019 6.80009 16.0019 7.77797V9.55594C16.0019 10.5338 15.2018 11.3339 14.2239 11.3339Z",fill:"#CACAD6"}),s.createElement("path",{id:"Vector_4",d:"M3.55273 6.0016C4.53062 6.0016 5.33071 5.20152 5.33071 4.22363C5.33071 5.20152 6.13079 6.0016 7.10868 6.0016C6.13079 6.0016 5.33071 6.80169 5.33071 7.77957C5.33071 6.80169 4.53062 6.0016 3.55273 6.0016Z",fill:"#CACAD6"}),s.createElement("path",{id:"Vector_5",d:"M8.8916 6.0016C9.86949 6.0016 10.6696 5.20152 10.6696 4.22363C10.6696 5.20152 11.4697 6.0016 12.4475 6.0016C11.4697 6.0016 10.6696 6.80169 10.6696 7.77957C10.6696 6.80169 9.86949 6.0016 8.8916 6.0016Z",fill:"#CACAD6"}))),W=e=>s.createElement("svg",{width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},s.createElement("g",{id:"Frame"},s.createElement("path",{id:"Vector",d:"M2.25 9C2.25 10.335 2.64588 11.6401 3.38758 12.7501C4.12928 13.8601 5.18349 14.7253 6.41689 15.2362C7.65029 15.7471 9.00749 15.8808 10.3169 15.6203C11.6262 15.3599 12.829 14.717 13.773 13.773C14.717 12.829 15.3599 11.6262 15.6203 10.3169C15.8808 9.00749 15.7471 7.65029 15.2362 6.41689C14.7253 5.18349 13.8601 4.12928 12.7501 3.38758C11.6401 2.64588 10.335 2.25 9 2.25C7.11296 2.2571 5.30173 2.99342 3.945 4.305L2.25 6",stroke:"#A3A3AD",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),s.createElement("path",{id:"Vector_2",d:"M2.25 2.25V6H6",stroke:"#A3A3AD",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})));function J(e,r,t){let[l,n]=s.useState(t),i=e!==void 0,a=s.useRef(i),c=s.useRef(!1),d=s.useRef(!1);return i&&!a.current&&!c.current?(c.current=!0,a.current=i,console.error("A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.")):!i&&a.current&&!d.current&&(d.current=!0,a.current=i,console.error("A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.")),[i?e:l,y(g=>(i||n(g),r==null?void 0:r(g)))]}function Q(e){var r,t;let l=(r=e==null?void 0:e.form)!=null?r:e.closest("form");if(l){for(let n of l.elements)if(n!==e&&(n.tagName==="INPUT"&&n.type==="submit"||n.tagName==="BUTTON"&&n.type==="submit"||n.nodeName==="INPUT"&&n.type==="image")){n.click();return}(t=l.requestSubmit)==null||t.call(l)}}let F=s.createContext(null);function O(){let e=s.useContext(F);if(e===null){let r=new Error("You used a