@egovernments/digit-ui-libraries 2.0.0-dev-01 → 2.0.0-dev-03

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"661.main.js","mappings":"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K,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClwCC,EAAW,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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","sources":["webpack://@egovernments/digit-ui-libraries/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@egovernments/digit-ui-libraries/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@egovernments/digit-ui-libraries/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@egovernments/digit-ui-libraries/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@egovernments/digit-ui-libraries/./node_modules/svg-pathdata/lib/SVGPathData.module.js","webpack://@egovernments/digit-ui-libraries/./node_modules/stackblur-canvas/dist/stackblur-es.js","webpack://@egovernments/digit-ui-libraries/./node_modules/canvg/lib/index.es.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.string.split.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.string.starts-with.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.array.reverse.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.array.reduce.js","webpack://@egovernments/digit-ui-libraries/./node_modules/rgbcolor/index.js","webpack://@egovernments/digit-ui-libraries/./node_modules/raf/index.js","webpack://@egovernments/digit-ui-libraries/./node_modules/performance-now/lib/performance-now.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.array.index-of.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.string.ends-with.js"],"sourcesContent":["function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r=\"\";Array.isArray(t)||(t=[t]);for(var e=0;e<t.length;e++){var i=t[e];if(i.type===_.CLOSE_PATH)r+=\"z\";else if(i.type===_.HORIZ_LINE_TO)r+=(i.relative?\"h\":\"H\")+i.x;else if(i.type===_.VERT_LINE_TO)r+=(i.relative?\"v\":\"V\")+i.y;else if(i.type===_.MOVE_TO)r+=(i.relative?\"m\":\"M\")+i.x+\" \"+i.y;else if(i.type===_.LINE_TO)r+=(i.relative?\"l\":\"L\")+i.x+\" \"+i.y;else if(i.type===_.CURVE_TO)r+=(i.relative?\"c\":\"C\")+i.x1+\" \"+i.y1+\" \"+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_CURVE_TO)r+=(i.relative?\"s\":\"S\")+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.QUAD_TO)r+=(i.relative?\"q\":\"Q\")+i.x1+\" \"+i.y1+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_QUAD_TO)r+=(i.relative?\"t\":\"T\")+i.x+\" \"+i.y;else{if(i.type!==_.ARC)throw new Error('Unexpected command type \"'+i.type+'\" at index '+e+\".\");r+=(i.relative?\"a\":\"A\")+i.rX+\" \"+i.rY+\" \"+i.xRot+\" \"+ +i.lArcFlag+\" \"+ +i.sweepFlag+\" \"+i.x+\" \"+i.y}}return r}function i(t,r){var e=t[0],i=t[1];return[e*Math.cos(r)-i*Math.sin(r),e*Math.sin(r)+i*Math.cos(r)]}function a(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];for(var e=0;e<t.length;e++)if(\"number\"!=typeof t[e])throw new Error(\"assertNumbers arguments[\"+e+\"] is not a number. \"+typeof t[e]+\" == typeof \"+t[e]);return!0}var n=Math.PI;function o(t,r,e){t.lArcFlag=0===t.lArcFlag?0:1,t.sweepFlag=0===t.sweepFlag?0:1;var a=t.rX,o=t.rY,s=t.x,u=t.y;a=Math.abs(t.rX),o=Math.abs(t.rY);var h=i([(r-s)/2,(e-u)/2],-t.xRot/180*n),c=h[0],y=h[1],p=Math.pow(c,2)/Math.pow(a,2)+Math.pow(y,2)/Math.pow(o,2);1<p&&(a*=Math.sqrt(p),o*=Math.sqrt(p)),t.rX=a,t.rY=o;var m=Math.pow(a,2)*Math.pow(y,2)+Math.pow(o,2)*Math.pow(c,2),O=(t.lArcFlag!==t.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(a,2)*Math.pow(o,2)-m)/m)),l=a*y/o*O,T=-o*c/a*O,v=i([l,T],t.xRot/180*n);t.cX=v[0]+(r+s)/2,t.cY=v[1]+(e+u)/2,t.phi1=Math.atan2((y-T)/o,(c-l)/a),t.phi2=Math.atan2((-y-T)/o,(-c-l)/a),0===t.sweepFlag&&t.phi2>t.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2<t.phi1&&(t.phi2+=2*n),t.phi1*=180/n,t.phi2*=180/n}function s(t,r,e){a(t,r,e);var i=t*t+r*r-e*e;if(0>i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)<a?[-h/u]:function(t,r,e){void 0===e&&(e=1e-6);var i=t*t/4-r;if(i<-e)return[];if(i<=e)return[-t/2];var a=Math.sqrt(i);return[-t/2-a,-t/2+a]}(u/s,h/s,a)}function m(t,r,e,i,a){var n=1-a;return t*(n*n*n)+r*(3*n*n*a)+e*(3*n*a*a)+i*(a*a*a)}!function(t){function r(){return u((function(t,r,e){return t.relative&&(void 0!==t.x1&&(t.x1+=r),void 0!==t.y1&&(t.y1+=e),void 0!==t.x2&&(t.x2+=r),void 0!==t.y2&&(t.y2+=e),void 0!==t.x&&(t.x+=r),void 0!==t.y&&(t.y+=e),t.relative=!1),t}))}function e(){var t=NaN,r=NaN,e=NaN,i=NaN;return u((function(a,n,o){return a.type&_.SMOOTH_CURVE_TO&&(a.type=_.CURVE_TO,t=isNaN(t)?n:t,r=isNaN(r)?o:r,a.x1=a.relative?n-t:2*n-t,a.y1=a.relative?o-r:2*o-r),a.type&_.CURVE_TO?(t=a.relative?n+a.x2:a.x2,r=a.relative?o+a.y2:a.y2):(t=NaN,r=NaN),a.type&_.SMOOTH_QUAD_TO&&(a.type=_.QUAD_TO,e=isNaN(e)?n:e,i=isNaN(i)?o:i,a.x1=a.relative?n-e:2*n-e,a.y1=a.relative?o-i:2*o-i),a.type&_.QUAD_TO?(e=a.relative?n+a.x1:a.x1,i=a.relative?o+a.y1:a.y1):(e=NaN,i=NaN),a}))}function n(){var t=NaN,r=NaN;return u((function(e,i,a){if(e.type&_.SMOOTH_QUAD_TO&&(e.type=_.QUAD_TO,t=isNaN(t)?i:t,r=isNaN(r)?a:r,e.x1=e.relative?i-t:2*i-t,e.y1=e.relative?a-r:2*a-r),e.type&_.QUAD_TO){t=e.relative?i+e.x1:e.x1,r=e.relative?a+e.y1:e.y1;var n=e.x1,o=e.y1;e.type=_.CURVE_TO,e.x1=((e.relative?0:i)+2*n)/3,e.y1=((e.relative?0:a)+2*o)/3,e.x2=(e.x+2*n)/3,e.y2=(e.y+2*o)/3}else t=NaN,r=NaN;return e}))}function u(t){var r=0,e=0,i=NaN,a=NaN;return function(n){if(isNaN(i)&&!(n.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");var o=t(n,r,e,i,a);return n.type&_.CLOSE_PATH&&(r=i,e=a),void 0!==n.x&&(r=n.relative?r+n.x:n.x),void 0!==n.y&&(e=n.relative?e+n.y:n.y),n.type&_.MOVE_TO&&(i=r,a=e),o}}function O(t,r,e,i,n,o){return a(t,r,e,i,n,o),u((function(a,s,u,h){var c=a.x1,y=a.x2,p=a.relative&&!isNaN(h),m=void 0!==a.x?a.x:p?0:s,O=void 0!==a.y?a.y:p?0:u;function l(t){return t*t}a.type&_.HORIZ_LINE_TO&&0!==r&&(a.type=_.LINE_TO,a.y=a.relative?0:u),a.type&_.VERT_LINE_TO&&0!==e&&(a.type=_.LINE_TO,a.x=a.relative?0:s),void 0!==a.x&&(a.x=a.x*t+O*e+(p?0:n)),void 0!==a.y&&(a.y=m*r+a.y*i+(p?0:o)),void 0!==a.x1&&(a.x1=a.x1*t+a.y1*e+(p?0:n)),void 0!==a.y1&&(a.y1=c*r+a.y1*i+(p?0:o)),void 0!==a.x2&&(a.x2=a.x2*t+a.y2*e+(p?0:n)),void 0!==a.y2&&(a.y2=y*r+a.y2*i+(p?0:o));var T=t*i-r*e;if(void 0!==a.xRot&&(1!==t||0!==r||0!==e||1!==i))if(0===T)delete a.rX,delete a.rY,delete a.xRot,delete a.lArcFlag,delete a.sweepFlag,a.type=_.LINE_TO;else{var v=a.xRot*Math.PI/180,f=Math.sin(v),N=Math.cos(v),x=1/l(a.rX),d=1/l(a.rY),E=l(N)*x+l(f)*d,A=2*f*N*(x-d),C=l(f)*x+l(N)*d,M=E*i*i-A*r*i+C*r*r,R=A*(t*i+r*e)-2*(E*e*i+C*t*r),g=E*e*e-A*t*e+C*t*t,I=(Math.atan2(R,M-g)+Math.PI)%Math.PI/2,S=Math.sin(I),L=Math.cos(I);a.rX=Math.abs(T)/Math.sqrt(M*l(L)+R*S*L+g*l(S)),a.rY=Math.abs(T)/Math.sqrt(M*l(S)-R*S*L+g*l(L)),a.xRot=180*I/Math.PI}return void 0!==a.sweepFlag&&0>T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;v<m;v++){var f=c(t.phi1,t.phi2,v/m),N=c(t.phi1,t.phi2,(v+1)/m),x=N-f,d=4/3*Math.tan(x*h/4),E=[Math.cos(f*h)-d*Math.sin(f*h),Math.sin(f*h)+d*Math.cos(f*h)],A=E[0],C=E[1],M=[Math.cos(N*h),Math.sin(N*h)],R=M[0],g=M[1],I=[R+d*Math.sin(N*h),g-d*Math.cos(N*h)],S=I[0],L=I[1];O[v]={relative:t.relative,type:_.CURVE_TO};var H=function(r,e){var a=i([r*t.rX,e*t.rY],t.xRot),n=a[0],o=a[1];return[t.cX+n,t.cY+o]};a=H(A,C),O[v].x1=a[0],O[v].y1=a[1],n=H(S,L),O[v].x2=n[0],O[v].y2=n[1],s=H(R,g),O[v].x=s[0],O[v].y=s[1],t.relative&&(O[v].x1-=l,O[v].y1-=T,O[v].x2-=l,O[v].y2-=T,O[v].x-=l,O[v].y-=T),l=(u=[O[v].x,O[v].y])[0],T=u[1]}return O}(t,t.relative?0:r,t.relative?0:e):t}))},t.ANNOTATE_ARCS=function(){return u((function(t,r,e){return t.relative&&(r=0,e=0),_.ARC===t.type&&o(t,r,e),t}))},t.CLONE=l,t.CALCULATE_BOUNDS=function(){var t=function(t){var r={};for(var e in t)r[e]=t[e];return r},i=r(),a=n(),h=e(),c=u((function(r,e,n){var u=h(a(i(t(r))));function O(t){t>c.maxX&&(c.maxX=t),t<c.minX&&(c.minX=t)}function l(t){t>c.maxY&&(c.maxY=t),t<c.minY&&(c.minY=t)}if(u.type&_.DRAWING_COMMANDS&&(O(e),l(n)),u.type&_.HORIZ_LINE_TO&&O(u.x),u.type&_.VERT_LINE_TO&&l(u.y),u.type&_.LINE_TO&&(O(u.x),l(u.y)),u.type&_.CURVE_TO){O(u.x),l(u.y);for(var T=0,v=p(e,u.x1,u.x2,u.x);T<v.length;T++){0<(w=v[T])&&1>w&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);f<N.length;f++){0<(w=N[f])&&1>w&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1<u.phi2?[u.phi1,u.phi2]:-180>u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return i<R?i+360:i},S=0,L=s(A,-d,0).map(I);S<L.length;S++){(w=L[S])>R&&w<g&&O(y(u.cX,d,A,w))}for(var H=0,U=s(C,-E,0).map(I);H<U.length;H++){var w;(w=U[H])>R&&w<g&&l(y(u.cY,E,C,w))}}return r}));return c.minX=1/0,c.maxX=-1/0,c.minY=1/0,c.maxY=-1/0,c}}(u||(u={}));var O,l=function(){function t(){}return t.prototype.round=function(t){return this.transform(u.ROUND(t))},t.prototype.toAbs=function(){return this.transform(u.TO_ABS())},t.prototype.toRel=function(){return this.transform(u.TO_REL())},t.prototype.normalizeHVZ=function(t,r,e){return this.transform(u.NORMALIZE_HVZ(t,r,e))},t.prototype.normalizeST=function(){return this.transform(u.NORMALIZE_ST())},t.prototype.qtToC=function(){return this.transform(u.QT_TO_C())},t.prototype.aToC=function(){return this.transform(u.A_TO_C())},t.prototype.sanitize=function(t){return this.transform(u.SANITIZE(t))},t.prototype.translate=function(t,r){return this.transform(u.TRANSLATE(t,r))},t.prototype.scale=function(t,r){return this.transform(u.SCALE(t,r))},t.prototype.rotate=function(t,r,e){return this.transform(u.ROTATE(t,r,e))},t.prototype.matrix=function(t,r,e,i,a,n){return this.transform(u.MATRIX(t,r,e,i,a,n))},t.prototype.skewX=function(t){return this.transform(u.SKEW_X(t))},t.prototype.skewY=function(t){return this.transform(u.SKEW_Y(t))},t.prototype.xSymmetry=function(t){return this.transform(u.X_AXIS_SYMMETRY(t))},t.prototype.ySymmetry=function(t){return this.transform(u.Y_AXIS_SYMMETRY(t))},t.prototype.annotateArcs=function(){return this.transform(u.ANNOTATE_ARCS())},t}(),T=function(t){return\" \"===t||\"\\t\"===t||\"\\r\"===t||\"\\n\"===t},v=function(t){return\"0\".charCodeAt(0)<=t.charCodeAt(0)&&t.charCodeAt(0)<=\"9\".charCodeAt(0)},f=function(t){function e(){var r=t.call(this)||this;return r.curNumber=\"\",r.curCommandType=-1,r.curCommandRelative=!1,r.canParseCommandOrComma=!0,r.curNumberHasExp=!1,r.curNumberHasExpDigits=!1,r.curNumberHasDecimal=!1,r.curArgs=[],r}return r(e,t),e.prototype.finish=function(t){if(void 0===t&&(t=[]),this.parse(\" \",t),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError(\"Unterminated command at the path end.\");return t},e.prototype.parse=function(t,r){var e=this;void 0===r&&(r=[]);for(var i=function(t){r.push(t),e.curArgs.length=0,e.canParseCommandOrComma=!0},a=0;a<t.length;a++){var n=t[a],o=!(this.curCommandType!==_.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||\"0\"!==this.curNumber&&\"1\"!==this.curNumber),s=v(n)&&(\"0\"===this.curNumber&&\"0\"===n||o);if(!v(n)||s)if(\"e\"!==n&&\"E\"!==n)if(\"-\"!==n&&\"+\"!==n||!this.curNumberHasExp||this.curNumberHasExpDigits)if(\".\"!==n||this.curNumberHasExp||this.curNumberHasDecimal||o){if(this.curNumber&&-1!==this.curCommandType){var u=Number(this.curNumber);if(isNaN(u))throw new SyntaxError(\"Invalid number ending at \"+a);if(this.curCommandType===_.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>u)throw new SyntaxError('Expected positive number, got \"'+u+'\" at index \"'+a+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+a+'\"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(\",\"===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==n&&\"-\"!==n&&\".\"!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+a+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==n&&\"Z\"!==n)if(\"h\"===n||\"H\"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===n;else if(\"v\"===n||\"V\"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative=\"v\"===n;else if(\"m\"===n||\"M\"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative=\"m\"===n;else if(\"l\"===n||\"L\"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative=\"l\"===n;else if(\"c\"===n||\"C\"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative=\"c\"===n;else if(\"s\"===n||\"S\"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===n;else if(\"q\"===n||\"Q\"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative=\"q\"===n;else if(\"t\"===n||\"T\"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===n;else{if(\"a\"!==n&&\"A\"!==n)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\".\");this.curCommandType=_.ARC,this.curCommandRelative=\"a\"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal=\".\"===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i<a.length;i++){var n=a[i],o=t(n);Array.isArray(o)?e.push.apply(e,o):e.push(o)}return e}}})},e}(l),_=function(t){function i(r){var e=t.call(this)||this;return e.commands=\"string\"==typeof r?i.parse(r):r,e}return r(i,t),i.prototype.encode=function(){return i.encode(this.commands)},i.prototype.getBounds=function(){var t=u.CALCULATE_BOUNDS();return this.transform(t),t},i.prototype.transform=function(t){for(var r=[],e=0,i=this.commands;e<i.length;e++){var a=t(i[e]);Array.isArray(a)?r.push.apply(r,a):r.push(a)}return this.commands=r,this},i.encode=function(t){return e(t)},i.parse=function(t){var r=new f,e=[];return r.parse(t,e),r.finish(e),e},i.CLOSE_PATH=1,i.MOVE_TO=2,i.HORIZ_LINE_TO=4,i.VERT_LINE_TO=8,i.LINE_TO=16,i.CURVE_TO=32,i.SMOOTH_CURVE_TO=64,i.QUAD_TO=128,i.SMOOTH_QUAD_TO=256,i.ARC=512,i.LINE_COMMANDS=i.LINE_TO|i.HORIZ_LINE_TO|i.VERT_LINE_TO,i.DRAWING_COMMANDS=i.HORIZ_LINE_TO|i.VERT_LINE_TO|i.LINE_TO|i.CURVE_TO|i.SMOOTH_CURVE_TO|i.QUAD_TO|i.SMOOTH_QUAD_TO|i.ARC,i}(l),N=((O={})[_.MOVE_TO]=2,O[_.LINE_TO]=2,O[_.HORIZ_LINE_TO]=1,O[_.VERT_LINE_TO]=1,O[_.CLOSE_PATH]=0,O[_.QUAD_TO]=4,O[_.SMOOTH_QUAD_TO]=2,O[_.CURVE_TO]=6,O[_.SMOOTH_CURVE_TO]=4,O[_.ARC]=7,O);export{N as COMMAND_ARG_COUNTS,_ as SVGPathData,f as SVGPathDataParser,u as SVGPathDataTransformer,e as encodeSVGPath};\n//# sourceMappingURL=SVGPathData.module.js.map\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n if (typeof img === 'string') {\n img = document.getElementById(img);\n }\n\n if (!img || Object.prototype.toString.call(img).slice(8, -1) === 'HTMLImageElement' && !('naturalWidth' in img)) {\n return;\n }\n\n var dimensionType = useOffset ? 'offset' : 'natural';\n var w = img[dimensionType + 'Width'];\n var h = img[dimensionType + 'Height']; // add ImageBitmap support,can blur texture source\n\n if (Object.prototype.toString.call(img).slice(8, -1) === 'ImageBitmap') {\n w = img.width;\n h = img.height;\n }\n\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || !('getContext' in canvas)) {\n return;\n }\n\n if (!skipStyles) {\n canvas.style.width = w + 'px';\n canvas.style.height = h + 'px';\n }\n\n canvas.width = w;\n canvas.height = h;\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, w, h);\n context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n if (blurAlphaChannel) {\n processCanvasRGBA(canvas, 0, 0, w, h, radius);\n } else {\n processCanvasRGB(canvas, 0, 0, w, h, radius);\n }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n }\n\n var context = canvas.getContext('2d');\n\n try {\n return context.getImageData(topX, topY, width, height);\n } catch (e) {\n throw new Error('unable to access image data: ' + e);\n }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null,\n stackOut = null,\n yw = 0,\n yi = 0;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n\n for (var y = 0; y < height; y++) {\n stack = stackStart;\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n pa = pixels[yi + 3];\n\n for (var _i = 0; _i < radiusPlus1; _i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0,\n aInSum = 0,\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n aOutSum = radiusPlus1 * pa,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb,\n aSum = sumFactor * pa;\n\n for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n var r = pixels[p],\n g = pixels[p + 1],\n b = pixels[p + 2],\n a = pixels[p + 3];\n var rbs = radiusPlus1 - _i2;\n rSum += (stack.r = r) * rbs;\n gSum += (stack.g = g) * rbs;\n bSum += (stack.b = b) * rbs;\n aSum += (stack.a = a) * rbs;\n rInSum += r;\n gInSum += g;\n bInSum += b;\n aInSum += a;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n var paInitial = aSum * mulSum >>> shgSum;\n pixels[yi + 3] = paInitial;\n\n if (paInitial !== 0) {\n var _a2 = 255 / paInitial;\n\n pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;\n pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;\n pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;\n } else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n aSum -= aOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n aOutSum -= stackIn.a;\n\n var _p = x + radius + 1;\n\n _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[_p];\n gInSum += stackIn.g = pixels[_p + 1];\n bInSum += stackIn.b = pixels[_p + 2];\n aInSum += stackIn.a = pixels[_p + 3];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n aSum += aInSum;\n stackIn = stackIn.next;\n var _stackOut = stackOut,\n _r = _stackOut.r,\n _g = _stackOut.g,\n _b = _stackOut.b,\n _a = _stackOut.a;\n rOutSum += _r;\n gOutSum += _g;\n bOutSum += _b;\n aOutSum += _a;\n rInSum -= _r;\n gInSum -= _g;\n bInSum -= _b;\n aInSum -= _a;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x = 0; _x < width; _x++) {\n yi = _x << 2;\n\n var _pr = pixels[yi],\n _pg = pixels[yi + 1],\n _pb = pixels[yi + 2],\n _pa = pixels[yi + 3],\n _rOutSum = radiusPlus1 * _pr,\n _gOutSum = radiusPlus1 * _pg,\n _bOutSum = radiusPlus1 * _pb,\n _aOutSum = radiusPlus1 * _pa,\n _rSum = sumFactor * _pr,\n _gSum = sumFactor * _pg,\n _bSum = sumFactor * _pb,\n _aSum = sumFactor * _pa;\n\n stack = stackStart;\n\n for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n stack.r = _pr;\n stack.g = _pg;\n stack.b = _pb;\n stack.a = _pa;\n stack = stack.next;\n }\n\n var yp = width;\n var _gInSum = 0,\n _bInSum = 0,\n _aInSum = 0,\n _rInSum = 0;\n\n for (var _i4 = 1; _i4 <= radius; _i4++) {\n yi = yp + _x << 2;\n\n var _rbs = radiusPlus1 - _i4;\n\n _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n _rInSum += _pr;\n _gInSum += _pg;\n _bInSum += _pb;\n _aInSum += _pa;\n stack = stack.next;\n\n if (_i4 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y = 0; _y < height; _y++) {\n var _p2 = yi << 2;\n\n pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;\n\n if (_pa > 0) {\n _pa = 255 / _pa;\n pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;\n pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;\n pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;\n } else {\n pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n }\n\n _rSum -= _rOutSum;\n _gSum -= _gOutSum;\n _bSum -= _bOutSum;\n _aSum -= _aOutSum;\n _rOutSum -= stackIn.r;\n _gOutSum -= stackIn.g;\n _bOutSum -= stackIn.b;\n _aOutSum -= stackIn.a;\n _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n _rSum += _rInSum += stackIn.r = pixels[_p2];\n _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n stackIn = stackIn.next;\n _rOutSum += _pr = stackOut.r;\n _gOutSum += _pg = stackOut.g;\n _bOutSum += _pb = stackOut.b;\n _aOutSum += _pa = stackOut.a;\n _rInSum -= _pr;\n _gInSum -= _pg;\n _bInSum -= _pb;\n _aInSum -= _pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null;\n var stackOut = null;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n var p, rbs;\n var yw = 0,\n yi = 0;\n\n for (var y = 0; y < height; y++) {\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb;\n stack = stackStart;\n\n for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0;\n\n for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n rInSum += pr;\n gInSum += pg;\n bInSum += pb;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n pixels[yi] = rSum * mulSum >>> shgSum;\n pixels[yi + 1] = gSum * mulSum >>> shgSum;\n pixels[yi + 2] = bSum * mulSum >>> shgSum;\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[p];\n gInSum += stackIn.g = pixels[p + 1];\n bInSum += stackIn.b = pixels[p + 2];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n stackIn = stackIn.next;\n rOutSum += pr = stackOut.r;\n gOutSum += pg = stackOut.g;\n bOutSum += pb = stackOut.b;\n rInSum -= pr;\n gInSum -= pg;\n bInSum -= pb;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x2 = 0; _x2 < width; _x2++) {\n yi = _x2 << 2;\n\n var _pr2 = pixels[yi],\n _pg2 = pixels[yi + 1],\n _pb2 = pixels[yi + 2],\n _rOutSum2 = radiusPlus1 * _pr2,\n _gOutSum2 = radiusPlus1 * _pg2,\n _bOutSum2 = radiusPlus1 * _pb2,\n _rSum2 = sumFactor * _pr2,\n _gSum2 = sumFactor * _pg2,\n _bSum2 = sumFactor * _pb2;\n\n stack = stackStart;\n\n for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n stack.r = _pr2;\n stack.g = _pg2;\n stack.b = _pb2;\n stack = stack.next;\n }\n\n var _rInSum2 = 0,\n _gInSum2 = 0,\n _bInSum2 = 0;\n\n for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n yi = yp + _x2 << 2;\n _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n _rInSum2 += _pr2;\n _gInSum2 += _pg2;\n _bInSum2 += _pb2;\n stack = stack.next;\n\n if (_i8 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x2;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y2 = 0; _y2 < height; _y2++) {\n p = yi << 2;\n pixels[p] = _rSum2 * mulSum >>> shgSum;\n pixels[p + 1] = _gSum2 * mulSum >>> shgSum;\n pixels[p + 2] = _bSum2 * mulSum >>> shgSum;\n _rSum2 -= _rOutSum2;\n _gSum2 -= _gOutSum2;\n _bSum2 -= _bOutSum2;\n _rOutSum2 -= stackIn.r;\n _gOutSum2 -= stackIn.g;\n _bOutSum2 -= stackIn.b;\n p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n stackIn = stackIn.next;\n _rOutSum2 += _pr2 = stackOut.r;\n _gOutSum2 += _pg2 = stackOut.g;\n _bOutSum2 += _pb2 = stackOut.b;\n _rInSum2 -= _pr2;\n _gInSum2 -= _pg2;\n _bInSum2 -= _pb2;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n _classCallCheck(this, BlurStack);\n\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n","import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n var {\n DOMParser: DOMParserFallback\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n\n createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n\n createImage(url) {\n return _asyncToGenerator(function* () {\n var response = yield fetch(url);\n var blob = yield response.blob();\n var img = yield createImageBitmap(blob);\n return img;\n })();\n }\n\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n var {\n DOMParser,\n canvas,\n fetch\n } = _ref;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = regex.exec(selector);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n constructor(document, name, value) {\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n\n split() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var {\n document,\n name\n } = this;\n return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n }\n\n hasValue(zeroIsValue) {\n var {\n value\n } = this;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n\n isString(regexp) {\n var {\n value\n } = this;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n\n setValue(value) {\n this.value = value;\n return this;\n }\n\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var {\n value\n } = this;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n /= 100.0;\n }\n\n return n;\n }\n\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n\n getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n\n getDpi() {\n return 96.0; // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize;\n }\n\n getEm() {\n return this.document.emSize;\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n\n getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n var {\n viewPort\n } = this.document.screen;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n\n getDefinition() {\n var asString = this.getString();\n var name = /#([^)'\"]+)/.exec(asString);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n\n getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n\n addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n\n}\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n constructor() {\n this.viewPorts = [];\n }\n\n clear() {\n this.viewPorts = [];\n }\n\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n\n removeCurrent() {\n this.viewPorts.pop();\n }\n\n getCurrent() {\n var {\n viewPorts\n } = this;\n return viewPorts[viewPorts.length - 1];\n }\n\n get width() {\n return this.getCurrent().width;\n }\n\n get height() {\n return this.getCurrent().height;\n }\n\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n\n}\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n\n static parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n\n static parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n\n static parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n\n applyTransform(transform) {\n var {\n x,\n y\n } = this;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n\n}\n\nclass Mouse {\n constructor(screen) {\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n isWorking() {\n return this.working;\n }\n\n start() {\n if (this.working) {\n return;\n }\n\n var {\n screen,\n onClick,\n onMouseMove\n } = this;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n\n stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n\n runEvents() {\n if (!this.working) {\n return;\n }\n\n var {\n screen: document,\n events,\n eventElements\n } = this;\n var {\n style\n } = document.ctx.canvas;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach((_ref, i) => {\n var {\n run\n } = _ref;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref2, i) => {\n var {\n x,\n y\n } = _ref2;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref3, i) => {\n var {\n x,\n y\n } = _ref3;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n mapXY(x, y) {\n var {\n window,\n ctx\n } = this.screen;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n\n onClick(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n\n });\n }\n\n onMouseMove(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n\n });\n }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n constructor(ctx) {\n var {\n fetch = defaultFetch$1,\n window = defaultWindow\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n wait(checker) {\n this.waits.push(checker);\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(_ => _());\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n\n setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n\n setViewBox(_ref) {\n var {\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n } = _ref;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n\n start(element) {\n var {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n FRAMERATE,\n mouse\n } = this;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(resolve => {\n this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = () => {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n\n this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var {\n frameDuration\n } = this;\n var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var {\n CLIENT_WIDTH,\n CLIENT_HEIGHT,\n viewPort,\n ctx,\n isFirstRender\n } = this;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n constructor() {\n var {\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n parse(resource) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n if (resource.startsWith('<')) {\n return _this.parseFromString(resource);\n }\n\n return _this.load(resource);\n })();\n }\n\n parseFromString(xml) {\n var parser = new this.DOMParser();\n\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n\n checkDocument(document) {\n var parserError = document.getElementsByTagName('parsererror')[0];\n\n if (parserError) {\n throw new Error(parserError.textContent);\n }\n\n return document;\n }\n\n load(url) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var response = yield _this2.fetch(url);\n var xml = yield response.text();\n return _this2.parseFromString(xml);\n })();\n }\n\n}\n\nclass Translate {\n constructor(_, point) {\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n apply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(x || 0.0, y || 0.0);\n }\n\n unapply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.point;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n\n}\n\nclass Rotate {\n constructor(document, rotate, transformOrigin) {\n this.type = 'rotate';\n this.angle = null;\n this.originX = null;\n this.originY = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n\n apply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n cx,\n cy,\n angle\n } = this;\n var rad = angle.getRadians();\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n\n}\n\nclass Scale {\n constructor(_, scale, transformOrigin) {\n this.type = 'scale';\n this.scale = null;\n this.originX = null;\n this.originY = null;\n var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1.0 / x, 1.0 / y || x);\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.scale;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n\n}\n\nclass Matrix {\n constructor(_, matrix, transformOrigin) {\n this.type = 'matrix';\n this.matrix = [];\n this.originX = null;\n this.originY = null;\n this.matrix = toNumbers(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = null;\n this.angle = new Property(document, 'angle', skew);\n }\n\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n }\n\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n }\n\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var [type, value] = transform.split('(');\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n constructor(document, transform, transformOrigin) {\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n data.forEach(transform => {\n if (transform === 'none') {\n return;\n }\n\n var [type, value] = parseTransform(transform);\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n\n static fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n\n apply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n\n unapply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n\n applyToPoint(point) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n constructor(document, node) {\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = Object.create(null);\n this.styles = Object.create(null);\n this.stylesSpecificity = Object.create(null);\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(attribute => {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n styles.forEach(style => {\n if (!style) {\n return;\n }\n\n var [name, value] = style.split(':').map(_ => _.trim());\n this.styles[name] = new Property(document, name, value);\n });\n }\n\n var {\n definitions\n } = document;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(childNode => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode); // ELEMENT_NODE\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n this.addChild(textNode); // TEXT_NODE\n }\n }\n });\n }\n\n getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n\n getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n\n getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr !== null && attr !== void 0 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var {\n parent\n } = this;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n\n setContext(_) {// NO RENDER\n }\n\n applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n\n clearContext(_) {// NO RENDER\n }\n\n renderChildren(ctx) {\n this.children.forEach(child => {\n child.render(ctx);\n });\n }\n\n addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n\n matchesSelector(selector) {\n var _node$getAttribute;\n\n var {\n node\n } = this;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n }\n\n addStylesFromStyleDefinition() {\n var {\n styles,\n stylesSpecificity\n } = this.document;\n\n for (var selector in styles) {\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n\n removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce((toRestore, name) => {\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return [...toRestore, [name, value]];\n }, []);\n return toRestore;\n }\n\n restoreStyles(element, styles) {\n styles.forEach(_ref => {\n var [name, value] = _ref;\n element.getStyle(name, true).setValue(value);\n });\n }\n\n isFirstChild() {\n var _this$parent;\n\n return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = fontStyle.trim().toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = fontWeight.trim().toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nclass Font {\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n static parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(part => {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n [fontSize] = part.split('/');\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n\n toString() {\n return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ').trim();\n }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n constructor() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n get x() {\n return this.x1;\n }\n\n get y() {\n return this.y1;\n }\n\n get width() {\n return this.x2 - this.x1;\n }\n\n get height() {\n return this.y2 - this.y1;\n }\n\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n\n addX(x) {\n this.addPoint(x, null);\n }\n\n addY(y) {\n this.addPoint(null, y);\n }\n\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var {\n x1,\n y1,\n x2,\n y2\n } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n\n bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n\n isPointInBox(x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n\n}\n\nclass PathParser extends SVGPathData {\n constructor(path) {\n super(path // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n\n isEnd() {\n var {\n i,\n commands\n } = this;\n return i >= commands.length - 1;\n }\n\n next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n\n getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n\n getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n\n getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n\n getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n\n makeAbsolute(point) {\n if (this.command.relative) {\n var {\n x,\n y\n } = this.current;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n\n addMarker(point, from, priorTo) {\n var {\n points,\n angles\n } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n\n getMarkerPoints() {\n return this.points;\n }\n\n getMarkerAngles() {\n var {\n angles\n } = this;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n\n}\n\nclass RenderedElement extends Element {\n constructor() {\n super(...arguments);\n this.modifiedEmSizeStack = false;\n }\n\n calculateOpacity() {\n var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n } // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // \t// ?\n // \tctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n\n}\n\nclass PathElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = null;\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n\n path(ctx) {\n var {\n pathParser\n } = this;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n\n getBoundingBox(_) {\n return this.path();\n }\n\n getMarkers() {\n var {\n pathParser\n } = this;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map((point, i) => [point, angles[i]]);\n return markers;\n }\n\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n var [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var [_point, _angle] = markers[i];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var [_point2, _angle2] = markers[markersLastIndex];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n\n static pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n\n pathM(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n point\n } = PathElement.pathM(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n\n static pathL(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n\n pathL(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathL(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathH(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathH(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathH(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathV(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathV(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathV(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathC(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathC(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathS(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathS(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathQ(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathQ(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathT(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathT(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathA(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command;\n var xAxisRotation = xRot * (Math.PI / 180.0);\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n\n pathA(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser); // for markers\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rX > rY ? rX : rY;\n var sx = rX > rY ? 1 : rX / rY;\n var sy = rX > rY ? rY / rX : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n\n static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n\n}\n\nclass TextElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.measureCache = -1;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n\n initializeCoordinates() {\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n }\n\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n var boundingBox = null; // then calculate bounding box\n\n this.children.forEach((_, i) => {\n var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n\n getFontSize() {\n var {\n document,\n parent\n } = this;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n\n getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n\n getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n // NEED TEST\n var maybeGlyph = font.glyphs[char];\n glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n\n getText() {\n return '';\n }\n\n getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces( // textNode.value\n // || textNode.text\n textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx); // then render\n\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i);\n });\n var {\n mouse\n } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n\n renderTElementChildren(ctx) {\n var {\n document,\n parent\n } = this;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var {\n unitsPerEm\n } = customFont.fontFace;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var {\n x,\n y\n } = this; // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // \tif (ctx.strokeStyle) {\n // \t\tctx.strokeText(renderText, x, y);\n // \t}\n // \tif (ctx.fillStyle) {\n // \t\tctx.fillText(renderText, x, y);\n // \t}\n // } else {\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n } // }\n\n }\n\n applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\n } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n\n\n var firstElement = this.leafTexts[this.textChunkStart];\n var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n var isRTL = false; // we treat RTL like LTR\n\n var shift = 0;\n\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX;\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX;\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2;\n }\n\n for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n this.leafTexts[i].x += shift;\n } // start new chunk\n\n\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.textChunkStart = this.leafTexts.length;\n }\n\n adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i) => {\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (child.children.length > 0) {\n child.children.forEach((_, i) => {\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n });\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i);\n }\n }\n\n adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var customFont = child.getStyle('font-family').getDefinition();\n var isRTL = Boolean(customFont) && customFont.isRTL;\n\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n\n var width = child.measureText(ctx);\n\n if (isRTL) {\n textParent.x -= width;\n }\n\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x;\n\n if (!isRTL) {\n textParent.x += width;\n }\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y; // update the current chunk and it's bounds\n\n textParent.leafTexts.push(child);\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n\n getChildBoundingBox(ctx, textParent, parent, i) {\n var child = parent.children[i]; // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach((_, i) => {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n\n renderChild(ctx, textParent, parent, i) {\n var child = parent.children[i];\n child.render(ctx);\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n\n measureText(ctx) {\n var {\n measureCache\n } = this;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var {\n parent\n } = this;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n var {\n width: measure\n } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n /**\r\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n * are only inherited from a parent to its first child.\r\n * @param name - The attribute name.\r\n * @returns The attribute value or null.\r\n */\n\n\n getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n var current = this;\n\n while (current instanceof TextElement && current.isFirstChild()) {\n var parentAttr = current.parent.getAttribute(name);\n\n if (parentAttr.hasValue(true)) {\n return parentAttr.getValue('0');\n }\n\n current = current.parent;\n }\n\n return null;\n }\n\n}\n\nclass TSpanElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan'; // if this node has children, then they own the text\n\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n\n getText() {\n return this.text;\n }\n\n}\n\nclass TextNode extends TSpanElement {\n constructor() {\n super(...arguments);\n this.type = 'textNode';\n }\n\n}\n\nclass SVGElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'svg';\n this.root = false;\n }\n\n setContext(ctx) {\n var _this$node$parentNode;\n\n var {\n document\n } = this;\n var {\n screen,\n window\n } = document;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n } // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n var {\n width,\n height\n } = screen.viewPort;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n\n}\n\nclass RectElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'rect';\n }\n\n path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass CircleElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'circle';\n }\n\n path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass EllipseElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'ellipse';\n }\n\n path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass LineElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'line';\n }\n\n getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n\n path(ctx) {\n var [{\n x: x0,\n y: y0\n }, {\n x: x1,\n y: y1\n }] = this.getPoints();\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n\n getMarkers() {\n var [p0, p1] = this.getPoints();\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n\n}\n\nclass PolylineElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n\n path(ctx) {\n var {\n points\n } = this;\n var [{\n x: x0,\n y: y0\n }] = points;\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(_ref => {\n var {\n x,\n y\n } = _ref;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n\n getMarkers() {\n var {\n points\n } = this;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach((point, i) => {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n\n}\n\nclass PolygonElement extends PolylineElement {\n constructor() {\n super(...arguments);\n this.type = 'polygon';\n }\n\n path(ctx) {\n var boundingBox = super.path(ctx);\n var [{\n x,\n y\n }] = this.points;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n\n}\n\nclass PatternElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'pattern';\n }\n\n createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n\n}\n\nclass MarkerElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'marker';\n }\n\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var {\n x,\n y\n } = point;\n var orient = this.getAttribute('orient').getString('auto');\n var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n\n}\n\nclass DefsElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'defs';\n }\n\n render() {// NOOP\n }\n\n}\n\nclass GElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'g';\n }\n\n getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n\n}\n\nclass GradientElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.attributesToInherit = ['gradientUnits'];\n this.stops = [];\n var {\n stops,\n children\n } = this;\n children.forEach(child => {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var {\n stops\n } = stopsContainer;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(stop => {\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var {\n document\n } = this;\n var {\n MAX_VIRTUAL_PIXELS,\n viewPort\n } = document.screen;\n var [rootView] = viewPort.viewPorts;\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach(attributeToInherit => {\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'stop';\n var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n var stopOpacity = this.getStyle('stop-opacity');\n var stopColor = this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n\n}\n\nclass AnimateElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialValue = null;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\n this.begin = this.getAttribute('begin').getMilliseconds();\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n this.from = this.getAttribute('from');\n this.to = this.getAttribute('to');\n this.values = new Property(document, 'values', null);\n var valuesAttr = this.getAttribute('values');\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n\n getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n\n calcValue() {\n var {\n initialUnits\n } = this;\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n\n update(delta) {\n var {\n parent\n } = this;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n\n getProgress() {\n var {\n document,\n values\n } = this;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateColor';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress();\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateTransform';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map((from, i) => {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n\n}\n\nclass FontElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.glyphs = Object.create(null);\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n var {\n definitions\n } = document;\n var {\n children\n } = this;\n\n for (var child of children) {\n switch (child.type) {\n case 'font-face':\n {\n this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this;\n }\n\n break;\n }\n\n case 'missing-glyph':\n this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n\n if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n this.glyphs[glyph.unicode] = Object.create(null);\n }\n\n this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n }\n }\n }\n\n render() {// NO RENDER\n }\n\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font-face';\n this.ascent = this.getAttribute('ascent').getNumber();\n this.descent = this.getAttribute('descent').getNumber();\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n\n}\n\nclass TRefElement extends TextElement {\n constructor() {\n super(...arguments);\n this.type = 'tref';\n }\n\n getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n\n}\n\nclass AElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'a';\n var {\n childNodes\n } = node;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n\n getText() {\n return this.text;\n }\n\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n var {\n document,\n x,\n y\n } = this;\n var {\n mouse\n } = document.screen;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n\n onClick() {\n var {\n window\n } = this.document;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n\n onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([['', 0]]);\n var pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n\n getText() {\n return this.text;\n }\n\n path(ctx) {\n var {\n dataArray\n } = this;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(_ref => {\n var {\n type,\n points\n } = _ref;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var {\n glyphInfo\n } = this;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach((glyph, i) => {\n var {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n\n getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0,\n p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n\n measureText(ctx, text) {\n var {\n measuresCache\n } = this;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, <textPath> will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n\n setTextData(ctx) {\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n var dy = this.parent.getAttribute('dy').getPixels('y');\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the <text> node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n\n parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var {\n pathParser\n } = path;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var {\n current\n } = pathParser;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n\n pathM(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n\n pathL(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathH(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathV(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathC(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathS(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n\n pathQ(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathT(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n\n pathA(pathParser) {\n var {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser);\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n\n calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n }\n\n return 0;\n }\n\n getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (p2x === p1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n\n getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var {\n dataArray\n } = this;\n\n for (var command of dataArray) {\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n {\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n\n return null;\n }\n\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n }\n\n return this.pathLength;\n }\n\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n\n getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n var href = this.getHrefAttribute().getString();\n\n if (!href) {\n return;\n }\n\n var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n\n this.isSvg = isSvg;\n }\n\n loadImage(href) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var image = yield _this.document.createImage(href);\n _this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n loadSvg(href) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var match = dataUriRegex.exec(href);\n\n if (match) {\n var data = match[5];\n\n if (match[4] === 'base64') {\n _this2.image = atob(data);\n } else {\n _this2.image = decodeURIComponent(data);\n }\n } else {\n try {\n var response = yield _this2.document.fetch(href);\n var svg = yield response.text();\n _this2.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n\n _this2.loaded = true;\n })();\n }\n\n renderChildren(ctx) {\n var {\n document,\n image,\n loaded\n } = this;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n ctx.translate(x, y);\n\n if (this.isSvg) {\n var subDocument = document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n subDocument.document.documentElement.parent = this;\n void subDocument.render();\n } else {\n var _image = this.image;\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: _image.width,\n height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n\n getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n}\n\nclass SymbolElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'symbol';\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass SVGFontLoader {\n constructor(document) {\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n load(fontFamily, url) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var {\n document\n } = _this;\n var svgDocument = yield document.canvg.parser.load(url);\n var fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(fontNode => {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(_ => {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(_ => {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(cssProp => {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(src => {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'use';\n }\n\n setContext(ctx) {\n super.setContext(ctx);\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n\n path(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n element.path(ctx);\n }\n }\n\n renderChildren(ctx) {\n var {\n document,\n element\n } = this;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n\n getBoundingBox(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n\n elementTransform() {\n var {\n document,\n element\n } = this;\n return Transform.fromElement(document, element);\n }\n\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n\n return this.cachedElement;\n }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n var matrix = toNumbers(this.getAttribute('values').getString());\n\n switch (this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n /* eslint-disable array-element-newline */\n\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n /* eslint-disable array-element-newline */\n\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n var {\n includeOpacity,\n matrix\n } = this;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n\n}\n\nclass MaskElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'mask';\n }\n\n apply(ctx, element) {\n var {\n document\n } = this; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'clipPath';\n }\n\n apply(ctx) {\n var {\n document\n } = this;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var {\n beginPath,\n closePath\n } = ctx;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(child => {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />\n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass FilterElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'filter';\n }\n\n apply(ctx, element) {\n // render as temp svg\n var {\n document,\n children\n } = this;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n children.forEach(child => {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n children.forEach(child => {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeMorphologyElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feMorphology';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeCompositeElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feComposite';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n\n apply(ctx, x, y, width, height) {\n var {\n document,\n blurRadius\n } = this;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n\n}\n\nclass TitleElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'title';\n }\n\n}\n\nclass DescElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'desc';\n }\n\n}\n\nvar elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator(function* (src) {\n var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error);\n };\n\n image.src = src;\n });\n });\n return _createImage.apply(this, arguments);\n}\n\nclass Document {\n constructor(canvg) {\n var {\n rootEmSize = 12,\n emSize = 12,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.canvg = canvg;\n this.definitions = Object.create(null);\n this.styles = Object.create(null);\n this.stylesSpecificity = Object.create(null);\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n }\n\n return createImage;\n }\n\n get window() {\n return this.screen.window;\n }\n\n get fetch() {\n return this.screen.fetch;\n }\n\n get ctx() {\n return this.screen.ctx;\n }\n\n get emSize() {\n var {\n emSizeStack\n } = this;\n return emSizeStack[emSizeStack.length - 1];\n }\n\n set emSize(value) {\n var {\n emSizeStack\n } = this;\n emSizeStack.push(value);\n }\n\n popEmSize() {\n var {\n emSizeStack\n } = this;\n emSizeStack.pop();\n }\n\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded);\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded);\n }\n\n createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n\n createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n\n createTextNode(node) {\n return new TextNode(this, node);\n }\n\n setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n constructor(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static from(ctx, svg) {\n var _arguments = arguments;\n return _asyncToGenerator(function* () {\n var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = yield parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n })();\n }\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n * @returns Ready promise.\r\n */\n\n\n ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n * @returns Is ready or not.\r\n */\n\n\n isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n\n render() {\n var _arguments2 = arguments,\n _this = this;\n\n return _asyncToGenerator(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n _this.start(_objectSpread({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n\n yield _this.ready();\n\n _this.stop();\n })();\n }\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n\n start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n documentElement,\n screen,\n options: baseOptions\n } = this;\n screen.start(documentElement, _objectSpread(_objectSpread({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n\n stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n","'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length !== 4 ||\n 'ab'.split(/(?:ab)*/).length !== 2 ||\n '.'.split(/(.?)(.?)/).length !== 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n } : nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isObject(separator) ? getMethod(separator, SPLIT) : undefined;\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (!BUGGY) {\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n }\n\n var C = speciesConstructor(rx, RegExp);\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return stringSlice(that, index, index + search.length) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","/*\n\tBased on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>\n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n this.ok = false;\n this.alpha = 1.0;\n\n // strip any leading #\n if (color_string.charAt(0) == '#') { // remove # if any\n color_string = color_string.substr(1,6);\n }\n\n color_string = color_string.replace(/ /g,'');\n color_string = color_string.toLowerCase();\n\n // before getting into regexps, try simple matches\n // and overwrite the input\n var simple_colors = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dodgerblue: '1e90ff',\n feldspar: 'd19275',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred : 'cd5c5c',\n indigo : '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslateblue: '8470ff',\n lightslategray: '778899',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370d8',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'd87093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '663399',\n red: 'ff0000',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n violetred: 'd02090',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n color_string = simple_colors[color_string] || color_string;\n // emd of simple type-in colors\n\n // array of color definition objects\n var color_defs = [\n {\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3]),\n parseFloat(bits[4])\n ];\n }\n },\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n // search through the definitions to find a match\n for (var i = 0; i < color_defs.length; i++) {\n var re = color_defs[i].re;\n var processor = color_defs[i].process;\n var bits = re.exec(color_string);\n if (bits) {\n var channels = processor(bits);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n if (channels.length > 3) {\n this.alpha = channels[3];\n }\n this.ok = true;\n }\n\n }\n\n // validate/cleanup values\n this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n // some getters\n this.toRGB = function () {\n return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n }\n this.toRGBA = function () {\n return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n }\n this.toHex = function () {\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n }\n\n // help\n this.getHelpXML = function () {\n\n var examples = new Array();\n // add regexps\n for (var i = 0; i < color_defs.length; i++) {\n var example = color_defs[i].example;\n for (var j = 0; j < example.length; j++) {\n examples[examples.length] = example[j];\n }\n }\n // add type-in colors\n for (var sc in simple_colors) {\n examples[examples.length] = sc;\n }\n\n var xml = document.createElement('ul');\n xml.setAttribute('id', 'rgbcolor-examples');\n for (var i = 0; i < examples.length; i++) {\n try {\n var list_item = document.createElement('li');\n var list_color = new RGBColor(examples[i]);\n var example_div = document.createElement('div');\n example_div.style.cssText =\n 'margin: 3px; '\n + 'border: 1px solid black; '\n + 'background:' + list_color.toHex() + '; '\n + 'color:' + list_color.toHex()\n ;\n example_div.appendChild(document.createTextNode('test'));\n var list_item_value = document.createTextNode(\n ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n );\n list_item.appendChild(example_div);\n list_item.appendChild(list_item_value);\n xml.appendChild(list_item);\n\n } catch(e){}\n }\n return xml;\n\n }\n\n}\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf(this, searchElement, fromIndex) || 0\n : $indexOf(this, searchElement, fromIndex);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return slice(that, end - search.length, end) === search;\n }\n});\n"],"names":["asyncGeneratorStep","n","t","e","r","o","a","c","i","u","value","done","Promise","resolve","then","_asyncToGenerator","this","arguments","apply","_next","_throw","_defineProperty","Symbol","toPrimitive","call","TypeError","String","toPropertyKey","Object","defineProperty","enumerable","configurable","writable","setPrototypeOf","__proto__","Array","prototype","hasOwnProperty","constructor","create","Math","cos","sin","length","Error","PI","lArcFlag","sweepFlag","rX","rY","s","x","y","abs","h","xRot","p","pow","sqrt","m","O","max","l","T","v","cX","cY","phi1","atan2","phi2","relative","x1","y1","x2","y2","NaN","type","_","SMOOTH_CURVE_TO","CURVE_TO","isNaN","SMOOTH_QUAD_TO","QUAD_TO","MOVE_TO","CLOSE_PATH","HORIZ_LINE_TO","LINE_TO","VERT_LINE_TO","f","N","d","E","A","C","M","R","g","I","S","L","ROUND","round","TO_ABS","TO_REL","NORMALIZE_HVZ","ARC","NORMALIZE_ST","QT_TO_C","INFO","SANITIZE","LINE_COMMANDS","MATRIX","ROTATE","TRANSLATE","SCALE","SKEW_X","atan","SKEW_Y","X_AXIS_SYMMETRY","Y_AXIS_SYMMETRY","A_TO_C","min","ceil","tan","H","ANNOTATE_ARCS","CLONE","CALCULATE_BOUNDS","maxX","minX","maxY","minY","DRAWING_COMMANDS","w","map","U","transform","toAbs","toRel","normalizeHVZ","normalizeST","qtToC","aToC","sanitize","translate","scale","rotate","matrix","skewX","skewY","xSymmetry","ySymmetry","annotateArcs","charCodeAt","curNumber","curCommandType","curCommandRelative","canParseCommandOrComma","curNumberHasExp","curNumberHasExpDigits","curNumberHasDecimal","curArgs","finish","parse","SyntaxError","push","Number","getPrototypeOf","isArray","commands","encode","getBounds","_typeof","obj","iterator","mulTable","shgTable","processCanvasRGBA","canvas","topX","topY","width","height","radius","imageData","document","getElementById","context","getContext","getImageData","getImageDataFromCanvas","stackEnd","pixels","data","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","next","stackIn","stackOut","yw","yi","mulSum","shgSum","pr","pg","pb","pa","_i","b","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","paInitial","_a2","_p","_stackOut","_r","_g","_b","_a","_x","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","yp","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_y","_p2","processImageDataRGBA","putImageData","instance","Constructor","_classCallCheck","index","freeze","offscreen","DOMParser","DOMParserFallback","undefined","preset","window","ignoreAnimation","ignoreMouse","createCanvas","OffscreenCanvas","createImage","url","response","fetch","blob","createImageBitmap","Reflect","deleteProperty","node","_ref","loadImage","compressSpaces","str","replace","trimLeft","trimRight","toNumbers","match","parseFloat","allUppercase","normalizeAttributeName","name","test","toLowerCase","parseExternalUrl","urlMatch","exec","normalizeColor","color","startsWith","rgbParts","num","isFloat","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","matches","getSelectorSpecificity","specificity","currentSelector","delta","join","PSEUDO_ZERO","vectorMagnitude","vectorsRatio","vectorsAngle","acos","CB1","CB2","CB3","CB4","QB1","QB2","QB3","Property","isNormalizedColor","empty","split","separator","getString","trim","hasValue","zeroIsValue","isString","regexp","result","isUrlDefinition","isPixels","asString","endsWith","setValue","getValue","def","getNumber","getColor","getDpi","getRem","rootEmSize","getEm","emSize","getUnits","getPixels","axisOrIsFontSize","processPercent","axis","isFontSize","viewPort","screen","computeSize","getMilliseconds","getRadians","getDefinition","definitions","getFillStyleDefinition","element","opacity","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","getTextBaseline","textBaselineMapping","addOpacity","len","commas","ok","alpha","toRGBA","ViewPort","viewPorts","clear","setCurrent","removeCurrent","pop","getCurrent","Point","point","defaultValue","parseScale","parsePath","path","points","pathPoints","angleTo","applyTransform","xp","Mouse","working","events","eventElements","onClick","bind","onMouseMove","isWorking","start","onclick","onmousemove","stop","hasEvents","runEvents","style","cursor","forEach","run","parent","checkPath","_ref2","isPointInPath","checkBoundingBox","boundingBox","_ref3","isPointInBox","mapXY","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","event","clientX","clientY","eventTarget","defaultWindow","defaultFetch$1","Screen","FRAMERATE","MAX_VIRTUAL_PIXELS","CLIENT_WIDTH","CLIENT_HEIGHT","mouse","animations","waits","frameDuration","isReadyLock","isFirstRender","intervalId","wait","checker","ready","readyPromise","isReady","every","resolveReady","setDefaults","strokeStyle","lineCap","lineJoin","miterLimit","setViewBox","aspectRatio","desiredWidth","desiredHeight","refX","refY","clip","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","scaledClipX","scaledClipY","beginPath","moveTo","lineTo","closePath","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","render","now","Date","tick","shouldUpdate","reduce","animation","update","widthStyle","getStyle","heightStyle","concat","cWidth","clientWidth","cHeight","clientHeight","viewBox","xRatio","yRatio","_widthStyle","_heightStyle","transformStyle","clearRect","defaultFetch","DefaultDOMParser","Parser","resource","_this","parseFromString","load","xml","parser","checkDocument","err","parserError","getElementsByTagName","textContent","_this2","text","Translate","unapply","applyToPoint","Rotate","transformOrigin","angle","originX","originY","cx","cy","numbers","tx","ty","rad","Scale","scaleSize","Matrix","det","Skew","skew","super","SkewX","SkewY","Transform","transforms","parseTransforms","parseTransform","TransformType","transformTypes","fromElement","transformOriginXProperty","transformOriginYProperty","Element","captureTextNodes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","nodeType","from","attribute","nodeName","addStylesFromStyleDefinition","id","childNodes","childNode","addChild","textNode","createTextNode","getText","createIfNotExists","attr","_attr","key","skipAncestors","parentStyle","_style","save","mask","applyEffects","filter","setContext","renderChildren","clearContext","restore","clipPathStyleProp","child","createElement","ignoreChildTypes","includes","matchesSelector","_node$getAttribute","styleClasses","some","styleClass","existingSpecificity","removeStyles","ignoreStyles","toRestore","styleProp","restoreStyles","isFirstChild","_this$parent","indexOf","UnknownElement","wrapFontFamily","fontFamily","trimmed","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","parts","set","part","variants","weights","toString","process","BoundingBox","addPoint","addX","addY","addBoundingBox","sumCubic","p0","p1","p2","p3","bezierCurveAdd","forX","b2ac","t1","t2","addBezierCurve","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","addQuadraticCurve","cp1x","cp1y","cp2x","cp2y","PathParser","control","current","command","previousCommand","angles","reset","isEnd","getPoint","xProp","yProp","makeAbsolute","getAsControlPoint","getAsCurrentPoint","getReflectedControlPoint","ox","oy","addMarker","priorTo","addMarkerAngle","getMarkerPoints","getMarkerAngles","j","RenderedElement","modifiedEmSizeStack","calculateOpacity","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","fillStyle","_fillStyle","_fillStyle2","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","font","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","globalAlpha","popEmSize","PathElement","pathParser","pathM","pathL","pathH","pathV","pathC","pathS","pathQ","pathT","pathA","pathZ","getBoundingBox","getMarkers","markers","fillRuleStyleProp","fill","setTransform","stroke","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_marker","_point","_angle","_marker2","_point2","_angle2","controlPoint","currentPoint","bezierCurveTo","quadraticCurveTo","xAxisRotation","currp","cpp","centp","a1","ad","dir","ah","halfWay","sx","sy","arc","Boolean","GlyphElement","horizAdvX","unicode","arabicForm","TextElement","measureCache","textBaseline","initializeCoordinates","leafTexts","textChunkStart","POSITIVE_INFINITY","NEGATIVE_INFINITY","getTElementBoundingBox","adjustChildCoordinatesRecursive","childBoundingBox","getChildBoundingBox","getFontSize","inheritFontSize","measureText","getGlyph","char","glyph","isArabic","prevChar","nextChar","glyphs","maybeGlyph","missingGlyph","getTextFromNode","parentNode","lastIndex","renderChild","renderTElementChildren","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","reverse","dx","lw","fillText","strokeText","applyAnchoring","shift","firstElement","textAnchor","adjustChildCoordinatesRecursiveCore","textParent","adjustChildCoordinates","xAttr","yAttr","dxAttr","dyAttr","getInheritedAttribute","measure","measureTargetText","targetText","_measure","parentAttr","TSpanElement","TextNode","SVGElement","root","_this$node$parentNode","getComputedStyle","getPropertyValue","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","resize","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","getPoints","x0","y0","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","MarkerElement","orient","markerUnits","markerSvg","overflow","DefsElement","GElement","GradientElement","attributesToInherit","stops","getGradientUnits","stopsContainer","inheritStopContainer","gradient","getGradient","addParentOpacity","addColorStop","rootView","rect","group","attributeToInherit","LinearGradientElement","isBoundingBoxUnits","createLinearGradient","RadialGradientElement","fx","fy","fr","createRadialGradient","StopElement","stopOpacity","stopColor","AnimateElement","duration","initialValue","initialUnits","removed","frozen","begin","maxDuration","to","values","valuesAttr","getProperty","attributeType","attributeName","calcValue","progress","getProgress","newValue","prop","updated","typeAttr","lb","floor","ub","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","ascent","descent","MissingGlyphElement","TRefElement","firstChild","AElement","hasText","open","ownKeys$2","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread$2","target","source","getOwnPropertyDescriptors","defineProperties","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","letterSpacingCache","measuresCache","Map","pathElement","dataArray","parsePathData","theta","dTheta","psi","fs","setTextData","textDecoration","rotation","partialText","getLetterSpacingAt","idx","findSegmentToFitChar","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","splineStep","getEquidistantPointOnPath","segment","dyX","dyY","has","get","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","nextOffset","pathCommands","startX","startY","nextCommandType","calcLength","commandType","getLineLength","getPointOnCubicBezier","getPointOnQuadraticBezier","end","inc","getPointOnEllipticalArc","getPointOnLine","dist","fromX","fromY","rise","pt","ix","iy","pRise","pRun","getPointOnPath","distance","fullLen","cumulativePathLength","currentT","pct","p4x","p4y","cosPsi","sinPsi","buildEquidistantCache","inputStep","inputPrecision","precision","step","equidistantCache","targetDistance","dataUriRegex","ImageElement","loaded","href","isSvg","images","loadSvg","image","console","error","atob","decodeURIComponent","svg","subDocument","canvg","forkString","documentElement","_image","complete","drawImage","SymbolElement","SVGFontLoader","fonts","fontNode","StyleElement","css","cssParts","cssClasses","cssProps","cssClass","props","cssProp","substr","src","UseElement","tempSvg","oldParent","elementTransform","cachedElement","imGet","img","_height","rgba","imSet","val","m1","m2","m3","FeColorMatrixElement","includeOpacity","srcData","nr","ng","nb","na","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","fillRect","noop","ClipPathElement","contextProto","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","appendChild","removeChild","TitleElement","DescElement","ownKeys$1","_createImage","anonymousCrossOrigin","crossOrigin","reject","onload","onerror","_event","_source","_lineno","_colno","Document","emSizeStack","uniqueId","bindCreateImage","isImagesLoaded","isFontsLoaded","forceAnonymousCrossOrigin","createDocumentElement","elementType","ElementType","elementTypes","config","_objectSpread$1","ownKeys","_objectSpread","Canvg","options","_arguments","svgDocument","fromString","fork","_arguments2","baseOptions","uncurryThis","fixRegExpWellKnownSymbolLogic","anObject","isObject","requireObjectCoercible","speciesConstructor","advanceStringIndex","toLength","getMethod","regExpExec","stickyHelpers","fails","UNSUPPORTED_Y","stringSlice","slice","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","re","originalExec","BUGGY","SPLIT","nativeSplit","maybeCallNative","internalSplit","limit","splitter","string","res","RegExp","unicodeMatching","flags","ignoreCase","multiline","lim","q","z","descriptor","$","notARegExp","correctIsRegExpLogic","IS_PURE","CORRECT_IS_REGEXP_LOGIC","proto","forced","searchString","that","search","nativeReverse","$reduce","arrayMethodIsStrict","CHROME_VERSION","callbackfn","module","exports","color_string","charAt","simple_colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","example","bits","parseInt","processor","channels","toRGB","toHex","getHelpXML","examples","sc","setAttribute","list_item","list_color","RGBColor","example_div","cssText","list_item_value","vendors","suffix","raf","caf","last","queue","callback","_now","setTimeout","cp","cancelled","handle","fn","cancel","polyfill","requestAnimationFrame","cancelAnimationFrame","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","hr","uptime","getTime","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","fromIndex","endPosition"],"sourceRoot":""}
1
+ {"version":3,"file":"661.main.js","mappings":"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K,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClwCC,EAAW,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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","sources":["webpack://@egovernments/digit-ui-libraries/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@egovernments/digit-ui-libraries/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@egovernments/digit-ui-libraries/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@egovernments/digit-ui-libraries/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@egovernments/digit-ui-libraries/./node_modules/svg-pathdata/lib/SVGPathData.module.js","webpack://@egovernments/digit-ui-libraries/./node_modules/stackblur-canvas/dist/stackblur-es.js","webpack://@egovernments/digit-ui-libraries/./node_modules/canvg/lib/index.es.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.string.split.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.string.starts-with.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.array.reverse.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.array.reduce.js","webpack://@egovernments/digit-ui-libraries/./node_modules/rgbcolor/index.js","webpack://@egovernments/digit-ui-libraries/./node_modules/raf/index.js","webpack://@egovernments/digit-ui-libraries/./node_modules/performance-now/lib/performance-now.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.array.index-of.js","webpack://@egovernments/digit-ui-libraries/./node_modules/core-js/modules/es.string.ends-with.js"],"sourcesContent":["function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r=\"\";Array.isArray(t)||(t=[t]);for(var e=0;e<t.length;e++){var i=t[e];if(i.type===_.CLOSE_PATH)r+=\"z\";else if(i.type===_.HORIZ_LINE_TO)r+=(i.relative?\"h\":\"H\")+i.x;else if(i.type===_.VERT_LINE_TO)r+=(i.relative?\"v\":\"V\")+i.y;else if(i.type===_.MOVE_TO)r+=(i.relative?\"m\":\"M\")+i.x+\" \"+i.y;else if(i.type===_.LINE_TO)r+=(i.relative?\"l\":\"L\")+i.x+\" \"+i.y;else if(i.type===_.CURVE_TO)r+=(i.relative?\"c\":\"C\")+i.x1+\" \"+i.y1+\" \"+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_CURVE_TO)r+=(i.relative?\"s\":\"S\")+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.QUAD_TO)r+=(i.relative?\"q\":\"Q\")+i.x1+\" \"+i.y1+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_QUAD_TO)r+=(i.relative?\"t\":\"T\")+i.x+\" \"+i.y;else{if(i.type!==_.ARC)throw new Error('Unexpected command type \"'+i.type+'\" at index '+e+\".\");r+=(i.relative?\"a\":\"A\")+i.rX+\" \"+i.rY+\" \"+i.xRot+\" \"+ +i.lArcFlag+\" \"+ +i.sweepFlag+\" \"+i.x+\" \"+i.y}}return r}function i(t,r){var e=t[0],i=t[1];return[e*Math.cos(r)-i*Math.sin(r),e*Math.sin(r)+i*Math.cos(r)]}function a(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];for(var e=0;e<t.length;e++)if(\"number\"!=typeof t[e])throw new Error(\"assertNumbers arguments[\"+e+\"] is not a number. \"+typeof t[e]+\" == typeof \"+t[e]);return!0}var n=Math.PI;function o(t,r,e){t.lArcFlag=0===t.lArcFlag?0:1,t.sweepFlag=0===t.sweepFlag?0:1;var a=t.rX,o=t.rY,s=t.x,u=t.y;a=Math.abs(t.rX),o=Math.abs(t.rY);var h=i([(r-s)/2,(e-u)/2],-t.xRot/180*n),c=h[0],y=h[1],p=Math.pow(c,2)/Math.pow(a,2)+Math.pow(y,2)/Math.pow(o,2);1<p&&(a*=Math.sqrt(p),o*=Math.sqrt(p)),t.rX=a,t.rY=o;var m=Math.pow(a,2)*Math.pow(y,2)+Math.pow(o,2)*Math.pow(c,2),O=(t.lArcFlag!==t.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(a,2)*Math.pow(o,2)-m)/m)),l=a*y/o*O,T=-o*c/a*O,v=i([l,T],t.xRot/180*n);t.cX=v[0]+(r+s)/2,t.cY=v[1]+(e+u)/2,t.phi1=Math.atan2((y-T)/o,(c-l)/a),t.phi2=Math.atan2((-y-T)/o,(-c-l)/a),0===t.sweepFlag&&t.phi2>t.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2<t.phi1&&(t.phi2+=2*n),t.phi1*=180/n,t.phi2*=180/n}function s(t,r,e){a(t,r,e);var i=t*t+r*r-e*e;if(0>i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)<a?[-h/u]:function(t,r,e){void 0===e&&(e=1e-6);var i=t*t/4-r;if(i<-e)return[];if(i<=e)return[-t/2];var a=Math.sqrt(i);return[-t/2-a,-t/2+a]}(u/s,h/s,a)}function m(t,r,e,i,a){var n=1-a;return t*(n*n*n)+r*(3*n*n*a)+e*(3*n*a*a)+i*(a*a*a)}!function(t){function r(){return u((function(t,r,e){return t.relative&&(void 0!==t.x1&&(t.x1+=r),void 0!==t.y1&&(t.y1+=e),void 0!==t.x2&&(t.x2+=r),void 0!==t.y2&&(t.y2+=e),void 0!==t.x&&(t.x+=r),void 0!==t.y&&(t.y+=e),t.relative=!1),t}))}function e(){var t=NaN,r=NaN,e=NaN,i=NaN;return u((function(a,n,o){return a.type&_.SMOOTH_CURVE_TO&&(a.type=_.CURVE_TO,t=isNaN(t)?n:t,r=isNaN(r)?o:r,a.x1=a.relative?n-t:2*n-t,a.y1=a.relative?o-r:2*o-r),a.type&_.CURVE_TO?(t=a.relative?n+a.x2:a.x2,r=a.relative?o+a.y2:a.y2):(t=NaN,r=NaN),a.type&_.SMOOTH_QUAD_TO&&(a.type=_.QUAD_TO,e=isNaN(e)?n:e,i=isNaN(i)?o:i,a.x1=a.relative?n-e:2*n-e,a.y1=a.relative?o-i:2*o-i),a.type&_.QUAD_TO?(e=a.relative?n+a.x1:a.x1,i=a.relative?o+a.y1:a.y1):(e=NaN,i=NaN),a}))}function n(){var t=NaN,r=NaN;return u((function(e,i,a){if(e.type&_.SMOOTH_QUAD_TO&&(e.type=_.QUAD_TO,t=isNaN(t)?i:t,r=isNaN(r)?a:r,e.x1=e.relative?i-t:2*i-t,e.y1=e.relative?a-r:2*a-r),e.type&_.QUAD_TO){t=e.relative?i+e.x1:e.x1,r=e.relative?a+e.y1:e.y1;var n=e.x1,o=e.y1;e.type=_.CURVE_TO,e.x1=((e.relative?0:i)+2*n)/3,e.y1=((e.relative?0:a)+2*o)/3,e.x2=(e.x+2*n)/3,e.y2=(e.y+2*o)/3}else t=NaN,r=NaN;return e}))}function u(t){var r=0,e=0,i=NaN,a=NaN;return function(n){if(isNaN(i)&&!(n.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");var o=t(n,r,e,i,a);return n.type&_.CLOSE_PATH&&(r=i,e=a),void 0!==n.x&&(r=n.relative?r+n.x:n.x),void 0!==n.y&&(e=n.relative?e+n.y:n.y),n.type&_.MOVE_TO&&(i=r,a=e),o}}function O(t,r,e,i,n,o){return a(t,r,e,i,n,o),u((function(a,s,u,h){var c=a.x1,y=a.x2,p=a.relative&&!isNaN(h),m=void 0!==a.x?a.x:p?0:s,O=void 0!==a.y?a.y:p?0:u;function l(t){return t*t}a.type&_.HORIZ_LINE_TO&&0!==r&&(a.type=_.LINE_TO,a.y=a.relative?0:u),a.type&_.VERT_LINE_TO&&0!==e&&(a.type=_.LINE_TO,a.x=a.relative?0:s),void 0!==a.x&&(a.x=a.x*t+O*e+(p?0:n)),void 0!==a.y&&(a.y=m*r+a.y*i+(p?0:o)),void 0!==a.x1&&(a.x1=a.x1*t+a.y1*e+(p?0:n)),void 0!==a.y1&&(a.y1=c*r+a.y1*i+(p?0:o)),void 0!==a.x2&&(a.x2=a.x2*t+a.y2*e+(p?0:n)),void 0!==a.y2&&(a.y2=y*r+a.y2*i+(p?0:o));var T=t*i-r*e;if(void 0!==a.xRot&&(1!==t||0!==r||0!==e||1!==i))if(0===T)delete a.rX,delete a.rY,delete a.xRot,delete a.lArcFlag,delete a.sweepFlag,a.type=_.LINE_TO;else{var v=a.xRot*Math.PI/180,f=Math.sin(v),N=Math.cos(v),x=1/l(a.rX),d=1/l(a.rY),E=l(N)*x+l(f)*d,A=2*f*N*(x-d),C=l(f)*x+l(N)*d,M=E*i*i-A*r*i+C*r*r,R=A*(t*i+r*e)-2*(E*e*i+C*t*r),g=E*e*e-A*t*e+C*t*t,I=(Math.atan2(R,M-g)+Math.PI)%Math.PI/2,S=Math.sin(I),L=Math.cos(I);a.rX=Math.abs(T)/Math.sqrt(M*l(L)+R*S*L+g*l(S)),a.rY=Math.abs(T)/Math.sqrt(M*l(S)-R*S*L+g*l(L)),a.xRot=180*I/Math.PI}return void 0!==a.sweepFlag&&0>T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;v<m;v++){var f=c(t.phi1,t.phi2,v/m),N=c(t.phi1,t.phi2,(v+1)/m),x=N-f,d=4/3*Math.tan(x*h/4),E=[Math.cos(f*h)-d*Math.sin(f*h),Math.sin(f*h)+d*Math.cos(f*h)],A=E[0],C=E[1],M=[Math.cos(N*h),Math.sin(N*h)],R=M[0],g=M[1],I=[R+d*Math.sin(N*h),g-d*Math.cos(N*h)],S=I[0],L=I[1];O[v]={relative:t.relative,type:_.CURVE_TO};var H=function(r,e){var a=i([r*t.rX,e*t.rY],t.xRot),n=a[0],o=a[1];return[t.cX+n,t.cY+o]};a=H(A,C),O[v].x1=a[0],O[v].y1=a[1],n=H(S,L),O[v].x2=n[0],O[v].y2=n[1],s=H(R,g),O[v].x=s[0],O[v].y=s[1],t.relative&&(O[v].x1-=l,O[v].y1-=T,O[v].x2-=l,O[v].y2-=T,O[v].x-=l,O[v].y-=T),l=(u=[O[v].x,O[v].y])[0],T=u[1]}return O}(t,t.relative?0:r,t.relative?0:e):t}))},t.ANNOTATE_ARCS=function(){return u((function(t,r,e){return t.relative&&(r=0,e=0),_.ARC===t.type&&o(t,r,e),t}))},t.CLONE=l,t.CALCULATE_BOUNDS=function(){var t=function(t){var r={};for(var e in t)r[e]=t[e];return r},i=r(),a=n(),h=e(),c=u((function(r,e,n){var u=h(a(i(t(r))));function O(t){t>c.maxX&&(c.maxX=t),t<c.minX&&(c.minX=t)}function l(t){t>c.maxY&&(c.maxY=t),t<c.minY&&(c.minY=t)}if(u.type&_.DRAWING_COMMANDS&&(O(e),l(n)),u.type&_.HORIZ_LINE_TO&&O(u.x),u.type&_.VERT_LINE_TO&&l(u.y),u.type&_.LINE_TO&&(O(u.x),l(u.y)),u.type&_.CURVE_TO){O(u.x),l(u.y);for(var T=0,v=p(e,u.x1,u.x2,u.x);T<v.length;T++){0<(w=v[T])&&1>w&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);f<N.length;f++){0<(w=N[f])&&1>w&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1<u.phi2?[u.phi1,u.phi2]:-180>u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return i<R?i+360:i},S=0,L=s(A,-d,0).map(I);S<L.length;S++){(w=L[S])>R&&w<g&&O(y(u.cX,d,A,w))}for(var H=0,U=s(C,-E,0).map(I);H<U.length;H++){var w;(w=U[H])>R&&w<g&&l(y(u.cY,E,C,w))}}return r}));return c.minX=1/0,c.maxX=-1/0,c.minY=1/0,c.maxY=-1/0,c}}(u||(u={}));var O,l=function(){function t(){}return t.prototype.round=function(t){return this.transform(u.ROUND(t))},t.prototype.toAbs=function(){return this.transform(u.TO_ABS())},t.prototype.toRel=function(){return this.transform(u.TO_REL())},t.prototype.normalizeHVZ=function(t,r,e){return this.transform(u.NORMALIZE_HVZ(t,r,e))},t.prototype.normalizeST=function(){return this.transform(u.NORMALIZE_ST())},t.prototype.qtToC=function(){return this.transform(u.QT_TO_C())},t.prototype.aToC=function(){return this.transform(u.A_TO_C())},t.prototype.sanitize=function(t){return this.transform(u.SANITIZE(t))},t.prototype.translate=function(t,r){return this.transform(u.TRANSLATE(t,r))},t.prototype.scale=function(t,r){return this.transform(u.SCALE(t,r))},t.prototype.rotate=function(t,r,e){return this.transform(u.ROTATE(t,r,e))},t.prototype.matrix=function(t,r,e,i,a,n){return this.transform(u.MATRIX(t,r,e,i,a,n))},t.prototype.skewX=function(t){return this.transform(u.SKEW_X(t))},t.prototype.skewY=function(t){return this.transform(u.SKEW_Y(t))},t.prototype.xSymmetry=function(t){return this.transform(u.X_AXIS_SYMMETRY(t))},t.prototype.ySymmetry=function(t){return this.transform(u.Y_AXIS_SYMMETRY(t))},t.prototype.annotateArcs=function(){return this.transform(u.ANNOTATE_ARCS())},t}(),T=function(t){return\" \"===t||\"\\t\"===t||\"\\r\"===t||\"\\n\"===t},v=function(t){return\"0\".charCodeAt(0)<=t.charCodeAt(0)&&t.charCodeAt(0)<=\"9\".charCodeAt(0)},f=function(t){function e(){var r=t.call(this)||this;return r.curNumber=\"\",r.curCommandType=-1,r.curCommandRelative=!1,r.canParseCommandOrComma=!0,r.curNumberHasExp=!1,r.curNumberHasExpDigits=!1,r.curNumberHasDecimal=!1,r.curArgs=[],r}return r(e,t),e.prototype.finish=function(t){if(void 0===t&&(t=[]),this.parse(\" \",t),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError(\"Unterminated command at the path end.\");return t},e.prototype.parse=function(t,r){var e=this;void 0===r&&(r=[]);for(var i=function(t){r.push(t),e.curArgs.length=0,e.canParseCommandOrComma=!0},a=0;a<t.length;a++){var n=t[a],o=!(this.curCommandType!==_.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||\"0\"!==this.curNumber&&\"1\"!==this.curNumber),s=v(n)&&(\"0\"===this.curNumber&&\"0\"===n||o);if(!v(n)||s)if(\"e\"!==n&&\"E\"!==n)if(\"-\"!==n&&\"+\"!==n||!this.curNumberHasExp||this.curNumberHasExpDigits)if(\".\"!==n||this.curNumberHasExp||this.curNumberHasDecimal||o){if(this.curNumber&&-1!==this.curCommandType){var u=Number(this.curNumber);if(isNaN(u))throw new SyntaxError(\"Invalid number ending at \"+a);if(this.curCommandType===_.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>u)throw new SyntaxError('Expected positive number, got \"'+u+'\" at index \"'+a+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+a+'\"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(\",\"===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==n&&\"-\"!==n&&\".\"!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+a+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==n&&\"Z\"!==n)if(\"h\"===n||\"H\"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===n;else if(\"v\"===n||\"V\"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative=\"v\"===n;else if(\"m\"===n||\"M\"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative=\"m\"===n;else if(\"l\"===n||\"L\"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative=\"l\"===n;else if(\"c\"===n||\"C\"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative=\"c\"===n;else if(\"s\"===n||\"S\"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===n;else if(\"q\"===n||\"Q\"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative=\"q\"===n;else if(\"t\"===n||\"T\"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===n;else{if(\"a\"!==n&&\"A\"!==n)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\".\");this.curCommandType=_.ARC,this.curCommandRelative=\"a\"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal=\".\"===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i<a.length;i++){var n=a[i],o=t(n);Array.isArray(o)?e.push.apply(e,o):e.push(o)}return e}}})},e}(l),_=function(t){function i(r){var e=t.call(this)||this;return e.commands=\"string\"==typeof r?i.parse(r):r,e}return r(i,t),i.prototype.encode=function(){return i.encode(this.commands)},i.prototype.getBounds=function(){var t=u.CALCULATE_BOUNDS();return this.transform(t),t},i.prototype.transform=function(t){for(var r=[],e=0,i=this.commands;e<i.length;e++){var a=t(i[e]);Array.isArray(a)?r.push.apply(r,a):r.push(a)}return this.commands=r,this},i.encode=function(t){return e(t)},i.parse=function(t){var r=new f,e=[];return r.parse(t,e),r.finish(e),e},i.CLOSE_PATH=1,i.MOVE_TO=2,i.HORIZ_LINE_TO=4,i.VERT_LINE_TO=8,i.LINE_TO=16,i.CURVE_TO=32,i.SMOOTH_CURVE_TO=64,i.QUAD_TO=128,i.SMOOTH_QUAD_TO=256,i.ARC=512,i.LINE_COMMANDS=i.LINE_TO|i.HORIZ_LINE_TO|i.VERT_LINE_TO,i.DRAWING_COMMANDS=i.HORIZ_LINE_TO|i.VERT_LINE_TO|i.LINE_TO|i.CURVE_TO|i.SMOOTH_CURVE_TO|i.QUAD_TO|i.SMOOTH_QUAD_TO|i.ARC,i}(l),N=((O={})[_.MOVE_TO]=2,O[_.LINE_TO]=2,O[_.HORIZ_LINE_TO]=1,O[_.VERT_LINE_TO]=1,O[_.CLOSE_PATH]=0,O[_.QUAD_TO]=4,O[_.SMOOTH_QUAD_TO]=2,O[_.CURVE_TO]=6,O[_.SMOOTH_CURVE_TO]=4,O[_.ARC]=7,O);export{N as COMMAND_ARG_COUNTS,_ as SVGPathData,f as SVGPathDataParser,u as SVGPathDataTransformer,e as encodeSVGPath};\n//# sourceMappingURL=SVGPathData.module.js.map\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n if (typeof img === 'string') {\n img = document.getElementById(img);\n }\n\n if (!img || Object.prototype.toString.call(img).slice(8, -1) === 'HTMLImageElement' && !('naturalWidth' in img)) {\n return;\n }\n\n var dimensionType = useOffset ? 'offset' : 'natural';\n var w = img[dimensionType + 'Width'];\n var h = img[dimensionType + 'Height']; // add ImageBitmap support,can blur texture source\n\n if (Object.prototype.toString.call(img).slice(8, -1) === 'ImageBitmap') {\n w = img.width;\n h = img.height;\n }\n\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || !('getContext' in canvas)) {\n return;\n }\n\n if (!skipStyles) {\n canvas.style.width = w + 'px';\n canvas.style.height = h + 'px';\n }\n\n canvas.width = w;\n canvas.height = h;\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, w, h);\n context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n if (blurAlphaChannel) {\n processCanvasRGBA(canvas, 0, 0, w, h, radius);\n } else {\n processCanvasRGB(canvas, 0, 0, w, h, radius);\n }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n }\n\n var context = canvas.getContext('2d');\n\n try {\n return context.getImageData(topX, topY, width, height);\n } catch (e) {\n throw new Error('unable to access image data: ' + e);\n }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null,\n stackOut = null,\n yw = 0,\n yi = 0;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n\n for (var y = 0; y < height; y++) {\n stack = stackStart;\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n pa = pixels[yi + 3];\n\n for (var _i = 0; _i < radiusPlus1; _i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0,\n aInSum = 0,\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n aOutSum = radiusPlus1 * pa,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb,\n aSum = sumFactor * pa;\n\n for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n var r = pixels[p],\n g = pixels[p + 1],\n b = pixels[p + 2],\n a = pixels[p + 3];\n var rbs = radiusPlus1 - _i2;\n rSum += (stack.r = r) * rbs;\n gSum += (stack.g = g) * rbs;\n bSum += (stack.b = b) * rbs;\n aSum += (stack.a = a) * rbs;\n rInSum += r;\n gInSum += g;\n bInSum += b;\n aInSum += a;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n var paInitial = aSum * mulSum >>> shgSum;\n pixels[yi + 3] = paInitial;\n\n if (paInitial !== 0) {\n var _a2 = 255 / paInitial;\n\n pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;\n pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;\n pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;\n } else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n aSum -= aOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n aOutSum -= stackIn.a;\n\n var _p = x + radius + 1;\n\n _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[_p];\n gInSum += stackIn.g = pixels[_p + 1];\n bInSum += stackIn.b = pixels[_p + 2];\n aInSum += stackIn.a = pixels[_p + 3];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n aSum += aInSum;\n stackIn = stackIn.next;\n var _stackOut = stackOut,\n _r = _stackOut.r,\n _g = _stackOut.g,\n _b = _stackOut.b,\n _a = _stackOut.a;\n rOutSum += _r;\n gOutSum += _g;\n bOutSum += _b;\n aOutSum += _a;\n rInSum -= _r;\n gInSum -= _g;\n bInSum -= _b;\n aInSum -= _a;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x = 0; _x < width; _x++) {\n yi = _x << 2;\n\n var _pr = pixels[yi],\n _pg = pixels[yi + 1],\n _pb = pixels[yi + 2],\n _pa = pixels[yi + 3],\n _rOutSum = radiusPlus1 * _pr,\n _gOutSum = radiusPlus1 * _pg,\n _bOutSum = radiusPlus1 * _pb,\n _aOutSum = radiusPlus1 * _pa,\n _rSum = sumFactor * _pr,\n _gSum = sumFactor * _pg,\n _bSum = sumFactor * _pb,\n _aSum = sumFactor * _pa;\n\n stack = stackStart;\n\n for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n stack.r = _pr;\n stack.g = _pg;\n stack.b = _pb;\n stack.a = _pa;\n stack = stack.next;\n }\n\n var yp = width;\n var _gInSum = 0,\n _bInSum = 0,\n _aInSum = 0,\n _rInSum = 0;\n\n for (var _i4 = 1; _i4 <= radius; _i4++) {\n yi = yp + _x << 2;\n\n var _rbs = radiusPlus1 - _i4;\n\n _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n _rInSum += _pr;\n _gInSum += _pg;\n _bInSum += _pb;\n _aInSum += _pa;\n stack = stack.next;\n\n if (_i4 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y = 0; _y < height; _y++) {\n var _p2 = yi << 2;\n\n pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;\n\n if (_pa > 0) {\n _pa = 255 / _pa;\n pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;\n pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;\n pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;\n } else {\n pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n }\n\n _rSum -= _rOutSum;\n _gSum -= _gOutSum;\n _bSum -= _bOutSum;\n _aSum -= _aOutSum;\n _rOutSum -= stackIn.r;\n _gOutSum -= stackIn.g;\n _bOutSum -= stackIn.b;\n _aOutSum -= stackIn.a;\n _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n _rSum += _rInSum += stackIn.r = pixels[_p2];\n _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n stackIn = stackIn.next;\n _rOutSum += _pr = stackOut.r;\n _gOutSum += _pg = stackOut.g;\n _bOutSum += _pb = stackOut.b;\n _aOutSum += _pa = stackOut.a;\n _rInSum -= _pr;\n _gInSum -= _pg;\n _bInSum -= _pb;\n _aInSum -= _pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null;\n var stackOut = null;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n var p, rbs;\n var yw = 0,\n yi = 0;\n\n for (var y = 0; y < height; y++) {\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb;\n stack = stackStart;\n\n for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0;\n\n for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n rInSum += pr;\n gInSum += pg;\n bInSum += pb;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n pixels[yi] = rSum * mulSum >>> shgSum;\n pixels[yi + 1] = gSum * mulSum >>> shgSum;\n pixels[yi + 2] = bSum * mulSum >>> shgSum;\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[p];\n gInSum += stackIn.g = pixels[p + 1];\n bInSum += stackIn.b = pixels[p + 2];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n stackIn = stackIn.next;\n rOutSum += pr = stackOut.r;\n gOutSum += pg = stackOut.g;\n bOutSum += pb = stackOut.b;\n rInSum -= pr;\n gInSum -= pg;\n bInSum -= pb;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x2 = 0; _x2 < width; _x2++) {\n yi = _x2 << 2;\n\n var _pr2 = pixels[yi],\n _pg2 = pixels[yi + 1],\n _pb2 = pixels[yi + 2],\n _rOutSum2 = radiusPlus1 * _pr2,\n _gOutSum2 = radiusPlus1 * _pg2,\n _bOutSum2 = radiusPlus1 * _pb2,\n _rSum2 = sumFactor * _pr2,\n _gSum2 = sumFactor * _pg2,\n _bSum2 = sumFactor * _pb2;\n\n stack = stackStart;\n\n for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n stack.r = _pr2;\n stack.g = _pg2;\n stack.b = _pb2;\n stack = stack.next;\n }\n\n var _rInSum2 = 0,\n _gInSum2 = 0,\n _bInSum2 = 0;\n\n for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n yi = yp + _x2 << 2;\n _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n _rInSum2 += _pr2;\n _gInSum2 += _pg2;\n _bInSum2 += _pb2;\n stack = stack.next;\n\n if (_i8 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x2;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y2 = 0; _y2 < height; _y2++) {\n p = yi << 2;\n pixels[p] = _rSum2 * mulSum >>> shgSum;\n pixels[p + 1] = _gSum2 * mulSum >>> shgSum;\n pixels[p + 2] = _bSum2 * mulSum >>> shgSum;\n _rSum2 -= _rOutSum2;\n _gSum2 -= _gOutSum2;\n _bSum2 -= _bOutSum2;\n _rOutSum2 -= stackIn.r;\n _gOutSum2 -= stackIn.g;\n _bOutSum2 -= stackIn.b;\n p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n stackIn = stackIn.next;\n _rOutSum2 += _pr2 = stackOut.r;\n _gOutSum2 += _pg2 = stackOut.g;\n _bOutSum2 += _pb2 = stackOut.b;\n _rInSum2 -= _pr2;\n _gInSum2 -= _pg2;\n _bInSum2 -= _pb2;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n _classCallCheck(this, BlurStack);\n\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n","import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n var {\n DOMParser: DOMParserFallback\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n\n createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n\n createImage(url) {\n return _asyncToGenerator(function* () {\n var response = yield fetch(url);\n var blob = yield response.blob();\n var img = yield createImageBitmap(blob);\n return img;\n })();\n }\n\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n var {\n DOMParser,\n canvas,\n fetch\n } = _ref;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = regex.exec(selector);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n constructor(document, name, value) {\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n\n split() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var {\n document,\n name\n } = this;\n return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n }\n\n hasValue(zeroIsValue) {\n var {\n value\n } = this;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n\n isString(regexp) {\n var {\n value\n } = this;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n\n setValue(value) {\n this.value = value;\n return this;\n }\n\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var {\n value\n } = this;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n /= 100.0;\n }\n\n return n;\n }\n\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n\n getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n\n getDpi() {\n return 96.0; // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize;\n }\n\n getEm() {\n return this.document.emSize;\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n\n getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n var {\n viewPort\n } = this.document.screen;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n\n getDefinition() {\n var asString = this.getString();\n var name = /#([^)'\"]+)/.exec(asString);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n\n getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n\n addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n\n}\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n constructor() {\n this.viewPorts = [];\n }\n\n clear() {\n this.viewPorts = [];\n }\n\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n\n removeCurrent() {\n this.viewPorts.pop();\n }\n\n getCurrent() {\n var {\n viewPorts\n } = this;\n return viewPorts[viewPorts.length - 1];\n }\n\n get width() {\n return this.getCurrent().width;\n }\n\n get height() {\n return this.getCurrent().height;\n }\n\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n\n}\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n\n static parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n\n static parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n\n static parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n\n applyTransform(transform) {\n var {\n x,\n y\n } = this;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n\n}\n\nclass Mouse {\n constructor(screen) {\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n isWorking() {\n return this.working;\n }\n\n start() {\n if (this.working) {\n return;\n }\n\n var {\n screen,\n onClick,\n onMouseMove\n } = this;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n\n stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n\n runEvents() {\n if (!this.working) {\n return;\n }\n\n var {\n screen: document,\n events,\n eventElements\n } = this;\n var {\n style\n } = document.ctx.canvas;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach((_ref, i) => {\n var {\n run\n } = _ref;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref2, i) => {\n var {\n x,\n y\n } = _ref2;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref3, i) => {\n var {\n x,\n y\n } = _ref3;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n mapXY(x, y) {\n var {\n window,\n ctx\n } = this.screen;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n\n onClick(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n\n });\n }\n\n onMouseMove(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n\n });\n }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n constructor(ctx) {\n var {\n fetch = defaultFetch$1,\n window = defaultWindow\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n wait(checker) {\n this.waits.push(checker);\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(_ => _());\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n\n setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n\n setViewBox(_ref) {\n var {\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n } = _ref;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n\n start(element) {\n var {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n FRAMERATE,\n mouse\n } = this;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(resolve => {\n this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = () => {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n\n this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var {\n frameDuration\n } = this;\n var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var {\n CLIENT_WIDTH,\n CLIENT_HEIGHT,\n viewPort,\n ctx,\n isFirstRender\n } = this;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n constructor() {\n var {\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n parse(resource) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n if (resource.startsWith('<')) {\n return _this.parseFromString(resource);\n }\n\n return _this.load(resource);\n })();\n }\n\n parseFromString(xml) {\n var parser = new this.DOMParser();\n\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n\n checkDocument(document) {\n var parserError = document.getElementsByTagName('parsererror')[0];\n\n if (parserError) {\n throw new Error(parserError.textContent);\n }\n\n return document;\n }\n\n load(url) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var response = yield _this2.fetch(url);\n var xml = yield response.text();\n return _this2.parseFromString(xml);\n })();\n }\n\n}\n\nclass Translate {\n constructor(_, point) {\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n apply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(x || 0.0, y || 0.0);\n }\n\n unapply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.point;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n\n}\n\nclass Rotate {\n constructor(document, rotate, transformOrigin) {\n this.type = 'rotate';\n this.angle = null;\n this.originX = null;\n this.originY = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n\n apply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n cx,\n cy,\n angle\n } = this;\n var rad = angle.getRadians();\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n\n}\n\nclass Scale {\n constructor(_, scale, transformOrigin) {\n this.type = 'scale';\n this.scale = null;\n this.originX = null;\n this.originY = null;\n var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1.0 / x, 1.0 / y || x);\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.scale;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n\n}\n\nclass Matrix {\n constructor(_, matrix, transformOrigin) {\n this.type = 'matrix';\n this.matrix = [];\n this.originX = null;\n this.originY = null;\n this.matrix = toNumbers(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = null;\n this.angle = new Property(document, 'angle', skew);\n }\n\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n }\n\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n }\n\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var [type, value] = transform.split('(');\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n constructor(document, transform, transformOrigin) {\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n data.forEach(transform => {\n if (transform === 'none') {\n return;\n }\n\n var [type, value] = parseTransform(transform);\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n\n static fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n\n apply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n\n unapply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n\n applyToPoint(point) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n constructor(document, node) {\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = Object.create(null);\n this.styles = Object.create(null);\n this.stylesSpecificity = Object.create(null);\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(attribute => {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n styles.forEach(style => {\n if (!style) {\n return;\n }\n\n var [name, value] = style.split(':').map(_ => _.trim());\n this.styles[name] = new Property(document, name, value);\n });\n }\n\n var {\n definitions\n } = document;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(childNode => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode); // ELEMENT_NODE\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n this.addChild(textNode); // TEXT_NODE\n }\n }\n });\n }\n\n getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n\n getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n\n getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr !== null && attr !== void 0 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var {\n parent\n } = this;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n\n setContext(_) {// NO RENDER\n }\n\n applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n\n clearContext(_) {// NO RENDER\n }\n\n renderChildren(ctx) {\n this.children.forEach(child => {\n child.render(ctx);\n });\n }\n\n addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n\n matchesSelector(selector) {\n var _node$getAttribute;\n\n var {\n node\n } = this;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n }\n\n addStylesFromStyleDefinition() {\n var {\n styles,\n stylesSpecificity\n } = this.document;\n\n for (var selector in styles) {\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n\n removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce((toRestore, name) => {\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return [...toRestore, [name, value]];\n }, []);\n return toRestore;\n }\n\n restoreStyles(element, styles) {\n styles.forEach(_ref => {\n var [name, value] = _ref;\n element.getStyle(name, true).setValue(value);\n });\n }\n\n isFirstChild() {\n var _this$parent;\n\n return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = fontStyle.trim().toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = fontWeight.trim().toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nclass Font {\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n static parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(part => {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n [fontSize] = part.split('/');\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n\n toString() {\n return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ').trim();\n }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n constructor() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n get x() {\n return this.x1;\n }\n\n get y() {\n return this.y1;\n }\n\n get width() {\n return this.x2 - this.x1;\n }\n\n get height() {\n return this.y2 - this.y1;\n }\n\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n\n addX(x) {\n this.addPoint(x, null);\n }\n\n addY(y) {\n this.addPoint(null, y);\n }\n\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var {\n x1,\n y1,\n x2,\n y2\n } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n\n bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n\n isPointInBox(x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n\n}\n\nclass PathParser extends SVGPathData {\n constructor(path) {\n super(path // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n\n isEnd() {\n var {\n i,\n commands\n } = this;\n return i >= commands.length - 1;\n }\n\n next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n\n getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n\n getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n\n getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n\n getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n\n makeAbsolute(point) {\n if (this.command.relative) {\n var {\n x,\n y\n } = this.current;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n\n addMarker(point, from, priorTo) {\n var {\n points,\n angles\n } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n\n getMarkerPoints() {\n return this.points;\n }\n\n getMarkerAngles() {\n var {\n angles\n } = this;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n\n}\n\nclass RenderedElement extends Element {\n constructor() {\n super(...arguments);\n this.modifiedEmSizeStack = false;\n }\n\n calculateOpacity() {\n var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n } // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // \t// ?\n // \tctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n\n}\n\nclass PathElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = null;\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n\n path(ctx) {\n var {\n pathParser\n } = this;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n\n getBoundingBox(_) {\n return this.path();\n }\n\n getMarkers() {\n var {\n pathParser\n } = this;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map((point, i) => [point, angles[i]]);\n return markers;\n }\n\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n var [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var [_point, _angle] = markers[i];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var [_point2, _angle2] = markers[markersLastIndex];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n\n static pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n\n pathM(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n point\n } = PathElement.pathM(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n\n static pathL(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n\n pathL(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathL(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathH(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathH(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathH(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathV(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathV(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathV(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathC(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathC(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathS(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathS(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathQ(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathQ(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathT(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathT(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathA(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command;\n var xAxisRotation = xRot * (Math.PI / 180.0);\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n\n pathA(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser); // for markers\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rX > rY ? rX : rY;\n var sx = rX > rY ? 1 : rX / rY;\n var sy = rX > rY ? rY / rX : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n\n static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n\n}\n\nclass TextElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.measureCache = -1;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n\n initializeCoordinates() {\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n }\n\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n var boundingBox = null; // then calculate bounding box\n\n this.children.forEach((_, i) => {\n var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n\n getFontSize() {\n var {\n document,\n parent\n } = this;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n\n getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n\n getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n // NEED TEST\n var maybeGlyph = font.glyphs[char];\n glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n\n getText() {\n return '';\n }\n\n getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces( // textNode.value\n // || textNode.text\n textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx); // then render\n\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i);\n });\n var {\n mouse\n } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n\n renderTElementChildren(ctx) {\n var {\n document,\n parent\n } = this;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var {\n unitsPerEm\n } = customFont.fontFace;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var {\n x,\n y\n } = this; // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // \tif (ctx.strokeStyle) {\n // \t\tctx.strokeText(renderText, x, y);\n // \t}\n // \tif (ctx.fillStyle) {\n // \t\tctx.fillText(renderText, x, y);\n // \t}\n // } else {\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n } // }\n\n }\n\n applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\n } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n\n\n var firstElement = this.leafTexts[this.textChunkStart];\n var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n var isRTL = false; // we treat RTL like LTR\n\n var shift = 0;\n\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX;\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX;\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2;\n }\n\n for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n this.leafTexts[i].x += shift;\n } // start new chunk\n\n\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.textChunkStart = this.leafTexts.length;\n }\n\n adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i) => {\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (child.children.length > 0) {\n child.children.forEach((_, i) => {\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n });\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i);\n }\n }\n\n adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var customFont = child.getStyle('font-family').getDefinition();\n var isRTL = Boolean(customFont) && customFont.isRTL;\n\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n\n var width = child.measureText(ctx);\n\n if (isRTL) {\n textParent.x -= width;\n }\n\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x;\n\n if (!isRTL) {\n textParent.x += width;\n }\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y; // update the current chunk and it's bounds\n\n textParent.leafTexts.push(child);\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n\n getChildBoundingBox(ctx, textParent, parent, i) {\n var child = parent.children[i]; // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach((_, i) => {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n\n renderChild(ctx, textParent, parent, i) {\n var child = parent.children[i];\n child.render(ctx);\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n\n measureText(ctx) {\n var {\n measureCache\n } = this;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var {\n parent\n } = this;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n var {\n width: measure\n } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n /**\r\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n * are only inherited from a parent to its first child.\r\n * @param name - The attribute name.\r\n * @returns The attribute value or null.\r\n */\n\n\n getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n var current = this;\n\n while (current instanceof TextElement && current.isFirstChild()) {\n var parentAttr = current.parent.getAttribute(name);\n\n if (parentAttr.hasValue(true)) {\n return parentAttr.getValue('0');\n }\n\n current = current.parent;\n }\n\n return null;\n }\n\n}\n\nclass TSpanElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan'; // if this node has children, then they own the text\n\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n\n getText() {\n return this.text;\n }\n\n}\n\nclass TextNode extends TSpanElement {\n constructor() {\n super(...arguments);\n this.type = 'textNode';\n }\n\n}\n\nclass SVGElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'svg';\n this.root = false;\n }\n\n setContext(ctx) {\n var _this$node$parentNode;\n\n var {\n document\n } = this;\n var {\n screen,\n window\n } = document;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n } // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n var {\n width,\n height\n } = screen.viewPort;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n\n}\n\nclass RectElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'rect';\n }\n\n path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass CircleElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'circle';\n }\n\n path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass EllipseElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'ellipse';\n }\n\n path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass LineElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'line';\n }\n\n getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n\n path(ctx) {\n var [{\n x: x0,\n y: y0\n }, {\n x: x1,\n y: y1\n }] = this.getPoints();\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n\n getMarkers() {\n var [p0, p1] = this.getPoints();\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n\n}\n\nclass PolylineElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n\n path(ctx) {\n var {\n points\n } = this;\n var [{\n x: x0,\n y: y0\n }] = points;\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(_ref => {\n var {\n x,\n y\n } = _ref;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n\n getMarkers() {\n var {\n points\n } = this;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach((point, i) => {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n\n}\n\nclass PolygonElement extends PolylineElement {\n constructor() {\n super(...arguments);\n this.type = 'polygon';\n }\n\n path(ctx) {\n var boundingBox = super.path(ctx);\n var [{\n x,\n y\n }] = this.points;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n\n}\n\nclass PatternElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'pattern';\n }\n\n createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n\n}\n\nclass MarkerElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'marker';\n }\n\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var {\n x,\n y\n } = point;\n var orient = this.getAttribute('orient').getString('auto');\n var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n\n}\n\nclass DefsElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'defs';\n }\n\n render() {// NOOP\n }\n\n}\n\nclass GElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'g';\n }\n\n getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n\n}\n\nclass GradientElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.attributesToInherit = ['gradientUnits'];\n this.stops = [];\n var {\n stops,\n children\n } = this;\n children.forEach(child => {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var {\n stops\n } = stopsContainer;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(stop => {\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var {\n document\n } = this;\n var {\n MAX_VIRTUAL_PIXELS,\n viewPort\n } = document.screen;\n var [rootView] = viewPort.viewPorts;\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach(attributeToInherit => {\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'stop';\n var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n var stopOpacity = this.getStyle('stop-opacity');\n var stopColor = this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n\n}\n\nclass AnimateElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialValue = null;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\n this.begin = this.getAttribute('begin').getMilliseconds();\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n this.from = this.getAttribute('from');\n this.to = this.getAttribute('to');\n this.values = new Property(document, 'values', null);\n var valuesAttr = this.getAttribute('values');\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n\n getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n\n calcValue() {\n var {\n initialUnits\n } = this;\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n\n update(delta) {\n var {\n parent\n } = this;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n\n getProgress() {\n var {\n document,\n values\n } = this;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateColor';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress();\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateTransform';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map((from, i) => {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n\n}\n\nclass FontElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.glyphs = Object.create(null);\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n var {\n definitions\n } = document;\n var {\n children\n } = this;\n\n for (var child of children) {\n switch (child.type) {\n case 'font-face':\n {\n this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this;\n }\n\n break;\n }\n\n case 'missing-glyph':\n this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n\n if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n this.glyphs[glyph.unicode] = Object.create(null);\n }\n\n this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n }\n }\n }\n\n render() {// NO RENDER\n }\n\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font-face';\n this.ascent = this.getAttribute('ascent').getNumber();\n this.descent = this.getAttribute('descent').getNumber();\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n\n}\n\nclass TRefElement extends TextElement {\n constructor() {\n super(...arguments);\n this.type = 'tref';\n }\n\n getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n\n}\n\nclass AElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'a';\n var {\n childNodes\n } = node;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n\n getText() {\n return this.text;\n }\n\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n var {\n document,\n x,\n y\n } = this;\n var {\n mouse\n } = document.screen;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n\n onClick() {\n var {\n window\n } = this.document;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n\n onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([['', 0]]);\n var pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n\n getText() {\n return this.text;\n }\n\n path(ctx) {\n var {\n dataArray\n } = this;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(_ref => {\n var {\n type,\n points\n } = _ref;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var {\n glyphInfo\n } = this;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach((glyph, i) => {\n var {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n\n getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0,\n p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n\n measureText(ctx, text) {\n var {\n measuresCache\n } = this;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, <textPath> will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n\n setTextData(ctx) {\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n var dy = this.parent.getAttribute('dy').getPixels('y');\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the <text> node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n\n parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var {\n pathParser\n } = path;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var {\n current\n } = pathParser;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n\n pathM(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n\n pathL(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathH(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathV(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathC(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathS(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n\n pathQ(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathT(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n\n pathA(pathParser) {\n var {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser);\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n\n calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n }\n\n return 0;\n }\n\n getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (p2x === p1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n\n getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var {\n dataArray\n } = this;\n\n for (var command of dataArray) {\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n {\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n\n return null;\n }\n\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n }\n\n return this.pathLength;\n }\n\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n\n getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n var href = this.getHrefAttribute().getString();\n\n if (!href) {\n return;\n }\n\n var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n\n this.isSvg = isSvg;\n }\n\n loadImage(href) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var image = yield _this.document.createImage(href);\n _this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n loadSvg(href) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var match = dataUriRegex.exec(href);\n\n if (match) {\n var data = match[5];\n\n if (match[4] === 'base64') {\n _this2.image = atob(data);\n } else {\n _this2.image = decodeURIComponent(data);\n }\n } else {\n try {\n var response = yield _this2.document.fetch(href);\n var svg = yield response.text();\n _this2.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n\n _this2.loaded = true;\n })();\n }\n\n renderChildren(ctx) {\n var {\n document,\n image,\n loaded\n } = this;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n ctx.translate(x, y);\n\n if (this.isSvg) {\n var subDocument = document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n subDocument.document.documentElement.parent = this;\n void subDocument.render();\n } else {\n var _image = this.image;\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: _image.width,\n height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n\n getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n}\n\nclass SymbolElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'symbol';\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass SVGFontLoader {\n constructor(document) {\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n load(fontFamily, url) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var {\n document\n } = _this;\n var svgDocument = yield document.canvg.parser.load(url);\n var fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(fontNode => {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(_ => {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(_ => {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(cssProp => {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(src => {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'use';\n }\n\n setContext(ctx) {\n super.setContext(ctx);\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n\n path(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n element.path(ctx);\n }\n }\n\n renderChildren(ctx) {\n var {\n document,\n element\n } = this;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n\n getBoundingBox(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n\n elementTransform() {\n var {\n document,\n element\n } = this;\n return Transform.fromElement(document, element);\n }\n\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n\n return this.cachedElement;\n }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n var matrix = toNumbers(this.getAttribute('values').getString());\n\n switch (this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n /* eslint-disable array-element-newline */\n\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n /* eslint-disable array-element-newline */\n\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n var {\n includeOpacity,\n matrix\n } = this;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n\n}\n\nclass MaskElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'mask';\n }\n\n apply(ctx, element) {\n var {\n document\n } = this; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'clipPath';\n }\n\n apply(ctx) {\n var {\n document\n } = this;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var {\n beginPath,\n closePath\n } = ctx;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(child => {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />\n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass FilterElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'filter';\n }\n\n apply(ctx, element) {\n // render as temp svg\n var {\n document,\n children\n } = this;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n children.forEach(child => {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n children.forEach(child => {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeMorphologyElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feMorphology';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeCompositeElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feComposite';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n\n apply(ctx, x, y, width, height) {\n var {\n document,\n blurRadius\n } = this;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n\n}\n\nclass TitleElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'title';\n }\n\n}\n\nclass DescElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'desc';\n }\n\n}\n\nvar elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator(function* (src) {\n var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error);\n };\n\n image.src = src;\n });\n });\n return _createImage.apply(this, arguments);\n}\n\nclass Document {\n constructor(canvg) {\n var {\n rootEmSize = 12,\n emSize = 12,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.canvg = canvg;\n this.definitions = Object.create(null);\n this.styles = Object.create(null);\n this.stylesSpecificity = Object.create(null);\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n }\n\n return createImage;\n }\n\n get window() {\n return this.screen.window;\n }\n\n get fetch() {\n return this.screen.fetch;\n }\n\n get ctx() {\n return this.screen.ctx;\n }\n\n get emSize() {\n var {\n emSizeStack\n } = this;\n return emSizeStack[emSizeStack.length - 1];\n }\n\n set emSize(value) {\n var {\n emSizeStack\n } = this;\n emSizeStack.push(value);\n }\n\n popEmSize() {\n var {\n emSizeStack\n } = this;\n emSizeStack.pop();\n }\n\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded);\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded);\n }\n\n createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n\n createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n\n createTextNode(node) {\n return new TextNode(this, node);\n }\n\n setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n constructor(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static from(ctx, svg) {\n var _arguments = arguments;\n return _asyncToGenerator(function* () {\n var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = yield parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n })();\n }\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n * @returns Ready promise.\r\n */\n\n\n ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n * @returns Is ready or not.\r\n */\n\n\n isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n\n render() {\n var _arguments2 = arguments,\n _this = this;\n\n return _asyncToGenerator(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n _this.start(_objectSpread({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n\n yield _this.ready();\n\n _this.stop();\n })();\n }\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n\n start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n documentElement,\n screen,\n options: baseOptions\n } = this;\n screen.start(documentElement, _objectSpread(_objectSpread({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n\n stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n","'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length !== 4 ||\n 'ab'.split(/(?:ab)*/).length !== 2 ||\n '.'.split(/(.?)(.?)/).length !== 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n } : nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isObject(separator) ? getMethod(separator, SPLIT) : undefined;\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (!BUGGY) {\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n }\n\n var C = speciesConstructor(rx, RegExp);\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return stringSlice(that, index, index + search.length) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","/*\n\tBased on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>\n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n this.ok = false;\n this.alpha = 1.0;\n\n // strip any leading #\n if (color_string.charAt(0) == '#') { // remove # if any\n color_string = color_string.substr(1,6);\n }\n\n color_string = color_string.replace(/ /g,'');\n color_string = color_string.toLowerCase();\n\n // before getting into regexps, try simple matches\n // and overwrite the input\n var simple_colors = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dodgerblue: '1e90ff',\n feldspar: 'd19275',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred : 'cd5c5c',\n indigo : '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslateblue: '8470ff',\n lightslategray: '778899',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370d8',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'd87093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '663399',\n red: 'ff0000',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n violetred: 'd02090',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n color_string = simple_colors[color_string] || color_string;\n // emd of simple type-in colors\n\n // array of color definition objects\n var color_defs = [\n {\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3]),\n parseFloat(bits[4])\n ];\n }\n },\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n // search through the definitions to find a match\n for (var i = 0; i < color_defs.length; i++) {\n var re = color_defs[i].re;\n var processor = color_defs[i].process;\n var bits = re.exec(color_string);\n if (bits) {\n var channels = processor(bits);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n if (channels.length > 3) {\n this.alpha = channels[3];\n }\n this.ok = true;\n }\n\n }\n\n // validate/cleanup values\n this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n // some getters\n this.toRGB = function () {\n return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n }\n this.toRGBA = function () {\n return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n }\n this.toHex = function () {\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n }\n\n // help\n this.getHelpXML = function () {\n\n var examples = new Array();\n // add regexps\n for (var i = 0; i < color_defs.length; i++) {\n var example = color_defs[i].example;\n for (var j = 0; j < example.length; j++) {\n examples[examples.length] = example[j];\n }\n }\n // add type-in colors\n for (var sc in simple_colors) {\n examples[examples.length] = sc;\n }\n\n var xml = document.createElement('ul');\n xml.setAttribute('id', 'rgbcolor-examples');\n for (var i = 0; i < examples.length; i++) {\n try {\n var list_item = document.createElement('li');\n var list_color = new RGBColor(examples[i]);\n var example_div = document.createElement('div');\n example_div.style.cssText =\n 'margin: 3px; '\n + 'border: 1px solid black; '\n + 'background:' + list_color.toHex() + '; '\n + 'color:' + list_color.toHex()\n ;\n example_div.appendChild(document.createTextNode('test'));\n var list_item_value = document.createTextNode(\n ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n );\n list_item.appendChild(example_div);\n list_item.appendChild(list_item_value);\n xml.appendChild(list_item);\n\n } catch(e){}\n }\n return xml;\n\n }\n\n}\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf(this, searchElement, fromIndex) || 0\n : $indexOf(this, searchElement, fromIndex);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return slice(that, end - search.length, end) === search;\n }\n});\n"],"names":["asyncGeneratorStep","n","t","e","r","o","a","c","i","u","value","done","Promise","resolve","then","_asyncToGenerator","this","arguments","apply","_next","_throw","_defineProperty","Symbol","toPrimitive","call","TypeError","String","toPropertyKey","Object","defineProperty","enumerable","configurable","writable","setPrototypeOf","__proto__","Array","prototype","hasOwnProperty","constructor","create","Math","cos","sin","length","Error","PI","lArcFlag","sweepFlag","rX","rY","s","x","y","abs","h","xRot","p","pow","sqrt","m","O","max","l","T","v","cX","cY","phi1","atan2","phi2","relative","x1","y1","x2","y2","NaN","type","_","SMOOTH_CURVE_TO","CURVE_TO","isNaN","SMOOTH_QUAD_TO","QUAD_TO","MOVE_TO","CLOSE_PATH","HORIZ_LINE_TO","LINE_TO","VERT_LINE_TO","f","N","d","E","A","C","M","R","g","I","S","L","ROUND","round","TO_ABS","TO_REL","NORMALIZE_HVZ","ARC","NORMALIZE_ST","QT_TO_C","INFO","SANITIZE","LINE_COMMANDS","MATRIX","ROTATE","TRANSLATE","SCALE","SKEW_X","atan","SKEW_Y","X_AXIS_SYMMETRY","Y_AXIS_SYMMETRY","A_TO_C","min","ceil","tan","H","ANNOTATE_ARCS","CLONE","CALCULATE_BOUNDS","maxX","minX","maxY","minY","DRAWING_COMMANDS","w","map","U","transform","toAbs","toRel","normalizeHVZ","normalizeST","qtToC","aToC","sanitize","translate","scale","rotate","matrix","skewX","skewY","xSymmetry","ySymmetry","annotateArcs","charCodeAt","curNumber","curCommandType","curCommandRelative","canParseCommandOrComma","curNumberHasExp","curNumberHasExpDigits","curNumberHasDecimal","curArgs","finish","parse","SyntaxError","push","Number","getPrototypeOf","isArray","commands","encode","getBounds","_typeof","obj","iterator","mulTable","shgTable","processCanvasRGBA","canvas","topX","topY","width","height","radius","imageData","document","getElementById","context","getContext","getImageData","getImageDataFromCanvas","stackEnd","pixels","data","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","next","stackIn","stackOut","yw","yi","mulSum","shgSum","pr","pg","pb","pa","_i","b","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","paInitial","_a2","_p","_stackOut","_r","_g","_b","_a","_x","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","yp","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_y","_p2","processImageDataRGBA","putImageData","instance","Constructor","_classCallCheck","index","freeze","offscreen","DOMParser","DOMParserFallback","undefined","preset","window","ignoreAnimation","ignoreMouse","createCanvas","OffscreenCanvas","createImage","url","response","fetch","blob","createImageBitmap","Reflect","deleteProperty","node","_ref","loadImage","compressSpaces","str","replace","trimLeft","trimRight","toNumbers","match","parseFloat","allUppercase","normalizeAttributeName","name","test","toLowerCase","parseExternalUrl","urlMatch","exec","normalizeColor","color","startsWith","rgbParts","num","isFloat","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","matches","getSelectorSpecificity","specificity","currentSelector","delta","join","PSEUDO_ZERO","vectorMagnitude","vectorsRatio","vectorsAngle","acos","CB1","CB2","CB3","CB4","QB1","QB2","QB3","Property","isNormalizedColor","empty","split","separator","getString","trim","hasValue","zeroIsValue","isString","regexp","result","isUrlDefinition","isPixels","asString","endsWith","setValue","getValue","def","getNumber","getColor","getDpi","getRem","rootEmSize","getEm","emSize","getUnits","getPixels","axisOrIsFontSize","processPercent","axis","isFontSize","viewPort","screen","computeSize","getMilliseconds","getRadians","getDefinition","definitions","getFillStyleDefinition","element","opacity","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","getTextBaseline","textBaselineMapping","addOpacity","len","commas","ok","alpha","toRGBA","ViewPort","viewPorts","clear","setCurrent","removeCurrent","pop","getCurrent","Point","point","defaultValue","parseScale","parsePath","path","points","pathPoints","angleTo","applyTransform","xp","Mouse","working","events","eventElements","onClick","bind","onMouseMove","isWorking","start","onclick","onmousemove","stop","hasEvents","runEvents","style","cursor","forEach","run","parent","checkPath","_ref2","isPointInPath","checkBoundingBox","boundingBox","_ref3","isPointInBox","mapXY","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","event","clientX","clientY","eventTarget","defaultWindow","defaultFetch$1","Screen","FRAMERATE","MAX_VIRTUAL_PIXELS","CLIENT_WIDTH","CLIENT_HEIGHT","mouse","animations","waits","frameDuration","isReadyLock","isFirstRender","intervalId","wait","checker","ready","readyPromise","isReady","every","resolveReady","setDefaults","strokeStyle","lineCap","lineJoin","miterLimit","setViewBox","aspectRatio","desiredWidth","desiredHeight","refX","refY","clip","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","scaledClipX","scaledClipY","beginPath","moveTo","lineTo","closePath","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","render","now","Date","tick","shouldUpdate","reduce","animation","update","widthStyle","getStyle","heightStyle","concat","cWidth","clientWidth","cHeight","clientHeight","viewBox","xRatio","yRatio","_widthStyle","_heightStyle","transformStyle","clearRect","defaultFetch","DefaultDOMParser","Parser","resource","_this","parseFromString","load","xml","parser","checkDocument","err","parserError","getElementsByTagName","textContent","_this2","text","Translate","unapply","applyToPoint","Rotate","transformOrigin","angle","originX","originY","cx","cy","numbers","tx","ty","rad","Scale","scaleSize","Matrix","det","Skew","skew","super","SkewX","SkewY","Transform","transforms","parseTransforms","parseTransform","TransformType","transformTypes","fromElement","transformOriginXProperty","transformOriginYProperty","Element","captureTextNodes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","nodeType","from","attribute","nodeName","addStylesFromStyleDefinition","id","childNodes","childNode","addChild","textNode","createTextNode","getText","createIfNotExists","attr","_attr","key","skipAncestors","parentStyle","_style","save","mask","applyEffects","filter","setContext","renderChildren","clearContext","restore","clipPathStyleProp","child","createElement","ignoreChildTypes","includes","matchesSelector","_node$getAttribute","styleClasses","some","styleClass","existingSpecificity","removeStyles","ignoreStyles","toRestore","styleProp","restoreStyles","isFirstChild","_this$parent","indexOf","UnknownElement","wrapFontFamily","fontFamily","trimmed","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","parts","set","part","variants","weights","toString","process","BoundingBox","addPoint","addX","addY","addBoundingBox","sumCubic","p0","p1","p2","p3","bezierCurveAdd","forX","b2ac","t1","t2","addBezierCurve","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","addQuadraticCurve","cp1x","cp1y","cp2x","cp2y","PathParser","control","current","command","previousCommand","angles","reset","isEnd","getPoint","xProp","yProp","makeAbsolute","getAsControlPoint","getAsCurrentPoint","getReflectedControlPoint","ox","oy","addMarker","priorTo","addMarkerAngle","getMarkerPoints","getMarkerAngles","j","RenderedElement","modifiedEmSizeStack","calculateOpacity","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","fillStyle","_fillStyle","_fillStyle2","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","font","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","globalAlpha","popEmSize","PathElement","pathParser","pathM","pathL","pathH","pathV","pathC","pathS","pathQ","pathT","pathA","pathZ","getBoundingBox","getMarkers","markers","fillRuleStyleProp","fill","setTransform","stroke","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_marker","_point","_angle","_marker2","_point2","_angle2","controlPoint","currentPoint","bezierCurveTo","quadraticCurveTo","xAxisRotation","currp","cpp","centp","a1","ad","dir","ah","halfWay","sx","sy","arc","Boolean","GlyphElement","horizAdvX","unicode","arabicForm","TextElement","measureCache","textBaseline","initializeCoordinates","leafTexts","textChunkStart","POSITIVE_INFINITY","NEGATIVE_INFINITY","getTElementBoundingBox","adjustChildCoordinatesRecursive","childBoundingBox","getChildBoundingBox","getFontSize","inheritFontSize","measureText","getGlyph","char","glyph","isArabic","prevChar","nextChar","glyphs","maybeGlyph","missingGlyph","getTextFromNode","parentNode","lastIndex","renderChild","renderTElementChildren","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","reverse","dx","lw","fillText","strokeText","applyAnchoring","shift","firstElement","textAnchor","adjustChildCoordinatesRecursiveCore","textParent","adjustChildCoordinates","xAttr","yAttr","dxAttr","dyAttr","getInheritedAttribute","measure","measureTargetText","targetText","_measure","parentAttr","TSpanElement","TextNode","SVGElement","root","_this$node$parentNode","getComputedStyle","getPropertyValue","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","resize","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","getPoints","x0","y0","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","MarkerElement","orient","markerUnits","markerSvg","overflow","DefsElement","GElement","GradientElement","attributesToInherit","stops","getGradientUnits","stopsContainer","inheritStopContainer","gradient","getGradient","addParentOpacity","addColorStop","rootView","rect","group","attributeToInherit","LinearGradientElement","isBoundingBoxUnits","createLinearGradient","RadialGradientElement","fx","fy","fr","createRadialGradient","StopElement","stopOpacity","stopColor","AnimateElement","duration","initialValue","initialUnits","removed","frozen","begin","maxDuration","to","values","valuesAttr","getProperty","attributeType","attributeName","calcValue","progress","getProgress","newValue","prop","updated","typeAttr","lb","floor","ub","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","ascent","descent","MissingGlyphElement","TRefElement","firstChild","AElement","hasText","open","ownKeys$2","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread$2","target","source","getOwnPropertyDescriptors","defineProperties","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","letterSpacingCache","measuresCache","Map","pathElement","dataArray","parsePathData","theta","dTheta","psi","fs","setTextData","textDecoration","rotation","partialText","getLetterSpacingAt","idx","findSegmentToFitChar","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","splineStep","getEquidistantPointOnPath","segment","dyX","dyY","has","get","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","nextOffset","pathCommands","startX","startY","nextCommandType","calcLength","commandType","getLineLength","getPointOnCubicBezier","getPointOnQuadraticBezier","end","inc","getPointOnEllipticalArc","getPointOnLine","dist","fromX","fromY","rise","pt","ix","iy","pRise","pRun","getPointOnPath","distance","fullLen","cumulativePathLength","currentT","pct","p4x","p4y","cosPsi","sinPsi","buildEquidistantCache","inputStep","inputPrecision","precision","step","equidistantCache","targetDistance","dataUriRegex","ImageElement","loaded","href","isSvg","images","loadSvg","image","console","error","atob","decodeURIComponent","svg","subDocument","canvg","forkString","documentElement","_image","complete","drawImage","SymbolElement","SVGFontLoader","fonts","fontNode","StyleElement","css","cssParts","cssClasses","cssProps","cssClass","props","cssProp","substr","src","UseElement","tempSvg","oldParent","elementTransform","cachedElement","imGet","img","_height","rgba","imSet","val","m1","m2","m3","FeColorMatrixElement","includeOpacity","srcData","nr","ng","nb","na","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","fillRect","noop","ClipPathElement","contextProto","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","appendChild","removeChild","TitleElement","DescElement","ownKeys$1","_createImage","anonymousCrossOrigin","crossOrigin","reject","onload","onerror","_event","_source","_lineno","_colno","Document","emSizeStack","uniqueId","bindCreateImage","isImagesLoaded","isFontsLoaded","forceAnonymousCrossOrigin","createDocumentElement","elementType","ElementType","elementTypes","config","_objectSpread$1","ownKeys","_objectSpread","Canvg","options","_arguments","svgDocument","fromString","fork","_arguments2","baseOptions","uncurryThis","fixRegExpWellKnownSymbolLogic","anObject","isObject","requireObjectCoercible","speciesConstructor","advanceStringIndex","toLength","getMethod","regExpExec","stickyHelpers","fails","UNSUPPORTED_Y","stringSlice","slice","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","re","originalExec","BUGGY","SPLIT","nativeSplit","maybeCallNative","internalSplit","limit","splitter","string","res","RegExp","unicodeMatching","flags","ignoreCase","multiline","lim","q","z","descriptor","$","notARegExp","correctIsRegExpLogic","IS_PURE","CORRECT_IS_REGEXP_LOGIC","proto","forced","searchString","that","search","nativeReverse","$reduce","arrayMethodIsStrict","CHROME_VERSION","callbackfn","module","exports","color_string","charAt","simple_colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","example","bits","parseInt","processor","channels","toRGB","toHex","getHelpXML","examples","sc","setAttribute","list_item","list_color","RGBColor","example_div","cssText","list_item_value","vendors","suffix","raf","caf","last","queue","callback","_now","setTimeout","cp","cancelled","handle","fn","cancel","polyfill","requestAnimationFrame","cancelAnimationFrame","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","hr","uptime","getTime","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","fromIndex","endPosition"],"ignoreList":[],"sourceRoot":""}